es que estoy medio automático con cosas que peha han pedido para hoy y lo querían hecho la semana pasada, anexo parte del código dentro de la clase
parameter Lcobtipo_alma,Lfecha, txtcod_alma_desde, txtcod_alma_hasta,tabla_existencia,Lperiodo,Lcod_labor_ini,Lcod_labor_fin,LCMercado
*Set DataSession To this.dataSession
*SET STEP ON
Local ldocumento,lturno, ltipo_mov, lalmacen, lmercado, Llabor, lretorno,LImprimir_costo
LImprimir_costo = .F.
junto = .F.
lretorno = .F.
rtipo_listado = ""
Fecha_inicial_proceso = Datetime()
If Empty(Lfecha)
_Messagebox("Fecha no validad",16,"A v i s o")
Return .F.
Endif
If Year(Lfecha) <> Lperiodo
_Messagebox("El año que tiene el periodo no es igual a la de la fecha",16,"A v i s o")
Return .F.
Endif
Ldfecha= "Spmovalma.fec_mov <=Lfecha "
otxtcod_alma_desde = txtcod_alma_desde
otxtcod_alma_hasta = txtcod_alma_hasta
If otxtcod_alma_hasta < otxtcod_alma_desde
_Messagebox("El almacen Hasta no puede ser menor que el almancen Desde",16,"A v i s o")
Return .F.
Endif
Do Case
Case Empty(LCMercado)
lmercado ='(NOT (Spdetalle_mov.cod_merc == ( ".." )))'
lhit_mercado ='(NOT (Sphistorico.cod_merc == ( ".." )))'
Otherwise
lmercado = " Spdetalle_mov.cod_merc = '"+Allt(LCMercado)+"' "
lhit_mercado = " Sphistorico.cod_merc = '"+Allt(LCMercado)+"' "
Endcase
If Empty(Lcod_labor_ini) And Empty(Lcod_labor_fin)
Llabor = '(NOT (Spdetalle_mov.cod_labor == ( "" )))'
Else
If Lcod_labor_fin < Lcod_labor_ini
_Messagebox("La Labor Hasta no puede ser menor que el Labor Desde",16,"A v i s o")
*Thisform.txtcod_labor_fin.SetFocus
Return .F.
Endif
Llabor = "Spdetalle_mov.cod_labor >= lcod_labor_ini and Spdetalle_mov.cod_labor<=lcod_labor_fin"
Endif
WaitWindow("Procesando Movimiento("+tabla_existencia+"), Espere un momento...", "NOWAIT", 0)
*Set Step On
****con este SQL traigo los movimientos por fecha
Select Spdetalle_mov.periodo, Spdetalle_mov.tipo_alma,;
Spdetalle_mov.documento, Spdetalle_mov.cod_labor, Splabor.nom_labor,Splabor.costo,Splabor.STOCK,;
Spdetalle_mov.cod_merc, Spmercado.nom_merc, Sum(Spdetalle_mov.cantidad) As cantidad,;
Spmovalma.cod_turno, Spmovalma.fec_mov, Spmovalma.semana,;
Spmovalma.tipo_mov, Spmovalma.cod_alma_desde, Spmovalma.cod_alma_hasta;
FROM ;
bdproducc!Spdetalle_mov ;
INNER Join bdproducc!Spmercado ;
ON Spdetalle_mov.cod_merc == Spmercado.cod_merc ;
INNER Join bdproducc!Spmovalma ;
ON Spdetalle_mov.documento == Spmovalma.documento And Spdetalle_mov.tipo_alma == Spmovalma.tipo_alma ;
INNER Join bdproducc!Splabor ;
ON Spdetalle_mov.cod_labor == Splabor.cod_labor And Spdetalle_mov.tipo_alma == Splabor.tipo_alma;
WHERE Spdetalle_mov.periodo == Lperiodo;
AND Spmovalma.periodo == Lperiodo;
AND Spdetalle_mov.tipo_alma == Lcobtipo_alma;
AND &Ldfecha;
AND &lmercado;
AND &Llabor;
group By Spdetalle_mov.tipo_alma, Spdetalle_mov.cod_labor,Spmercado.cod_merc,Spmovalma.tipo_mov,Spmovalma.cod_alma_desde, Spmovalma.cod_alma_hasta,Spmovalma.fec_mov;
order By Spmovalma.fec_mov Into Cursor Tmp_repmovialma Readwrite
Select Tmp_repmovialma
*brows
If Reccount() = 0
lretorno = .T.
_Messagebox("No se encontraron datos en esta busqueda","A v i s o")
Return .F.
Endif
****************************
**existencias iniciales
*!* If Empty(Thisform.cobcod_merc.Value)
*!* lhit_mercado='(NOT (Sphistorico.cod_merc == ( ".." )))'
*!* Endif
If Empty(Lcod_labor_ini) And Empty(Lcod_labor_fin)
lhit_labor = '(NOT (Sphistorico.cod_labor == ( "" )))'
Else
If Lcod_labor_fin < Lcod_labor_ini
_Messagebox("La Labor Hasta no puede ser menor que el Labor Desde",16,"A v i s o")
Return .F.
Endif
lhit_labor = "Sphistorico.cod_labor >= Lcod_labor_ini and Sphistorico.cod_labor<=Lcod_labor_fin"
Endif
If Empty(otxtcod_alma_desde) And Empty(otxtcod_alma_hasta)
lhit_almacen = "Sphistorico.cod_alma>0"
Else
lhit_almacen = "Sphistorico.cod_alma>=otxtcod_alma_desde and Sphistorico.cod_alma<=otxtcod_alma_hasta"
Endif
Lhit_grupo = "Group By Sphistorico.tipo_alma, Sphistorico.cod_merc, Sphistorico.cod_labor;
ORDER By Sphistorico.tipo_alma, Sphistorico.cod_merc, Sphistorico.cod_labor"
Select Tmp_repmovialma
If !Used("Sphistorico")
Use Sphistorico In 0
Select Sphistorico
Endif
WaitWindow("Agregando incentario Inicial("+tabla_existencia+"), Espere un momento...", "NOWAIT", 0)
Select Tmp_repmovialma
Insert Into Tmp_repmovialma;
Select Sphistorico.periodo, Sphistorico.tipo_alma, 1 As documento, Sphistorico.cod_labor, Splabor.nom_labor,Splabor.costo,Splabor.STOCK,Sphistorico.cod_merc,;
Spmercado.nom_merc, Sum(inv_inicial) As cantidad, 1 As cod_turno, Date(2011,01,01) As fec_mov,1 As semana, "I" As tipo_mov,;
Sphistorico.cod_alma As cod_alma_desde, 0 As cod_alma_hasta;
FROM ;
bdproducc!Sphistorico ;
INNER Join bdproducc!Splabor On Sphistorico.tipo_alma == Splabor.tipo_alma And Sphistorico.cod_labor == Splabor.cod_labor ;
INNER Join bdproducc!Spmercado On Sphistorico.cod_merc == Spmercado.cod_merc ;
INNER Join bdproducc!Almacen On Sphistorico.tipo_alma == Almacen.tipo_alma And Sphistorico.cod_alma == Almacen.cod_alma;
WHERE Sphistorico.periodo == Lperiodo;
AND Sphistorico.tipo_alma==Lcobtipo_alma;
AND &lhit_almacen;
AND &lhit_mercado;
AND &lhit_labor;
&Lhit_grupo
*Select Tmp_exi_inicial
Select Tmp_repmovialma
*brows
If Reccount() = 0
_Messagebox("No se encontraron datos en esta busqueda","A v i s o")
Return .F.
Endif
*Brows
*!* ***************************
Select Tmp_repmovialma
cDate=" / / "
LFEC_INI = Ctod(cDate)
LFEC_FIN = Ctod(cDate)
LPeriodo_mes = 0
If Used("temphistorico")
Select temphistorico && nota esta tabla se crea en la funcion =existencia_aldia()
Zap
Endif
Select Tmp_repmovialma
Go Top
*Set Step On
*brow
WaitWindow("Procesando existencias("+tabla_existencia+"), Espere un momento...", "NOWAIT", 0)
Store 0 To lcantida2, lcantida1
Scan &&en esta funcion guarda acumulado las informaciones segun el tipo de movimiento
ltipo_mov = Tmp_repmovialma.tipo_mov
lcantidad = Tmp_repmovialma.cantidad
llfecha = Tmp_repmovialma.fec_mov
ll= 1
If ll = 1 Or ll = 2 && entradas y salidas
=existencia_aldia(Lperiodo, Lcobtipo_alma, cod_alma_desde, cod_labor ,cod_merc ,ltipo_mov, lcantidad, cod_alma_hasta,"")
Else
If ll = 3 &&Traspaso de un almacen a otro
=existencia_aldia(Lperiodo, Lcobtipo_alma, cod_alma_desde, cod_labor ,cod_merc ,ltipo_mov, lcantidad2, cod_alma_hasta,"")
Select Tmp_repmovialma && esta talbla temporal se crea en el programa funciones.prg
=existencia_aldia(Lperiodo, Lcobtipo_alma, cod_alma_hasta, cod_labor ,cod_merc ,ltipo_mov, lcantidad , cod_alma_hasta,"")
Endif
Endif
Endscan
If !Used("temphistorico")
_Messagebox("No se encontraron datos en (temphistorico) para relizar esta operación","A v i s o")
Return .F.
Endif
Select temphistorico
*Brows
*************************************************************
Lgrupo = "Group By temphistorico.tipo_alma,temphistorico.cod_merc, temphistorico.cod_labor ;
ORDER By temphistorico.tipo_alma, temphistorico.cod_merc, temphistorico.cod_labor"
lcod_alma= 1
*ralmacen1 ="TODOS"
Lbackorder = 0
*****Mercado***************
Do Case
Case Empty(LCMercado)
lmercado='(NOT (temphistorico.cod_merc == ( ".." )))'
Otherwise
* lmercado="temphistorico.cod_merc==ALLTRIM(Lccod_merc)"
lmercado="temphistorico.cod_merc== '"+Allt(LCMercado)+"' "
Endcase
If Empty(Lcod_labor_ini) And Empty(Lcod_labor_fin)
Llabor = '(NOT (temphistorico.cod_labor == ( "" )))'
Else
If Lcod_labor_fin < Lcod_labor_ini
_Messagebox("La Labor Hasta no puede ser menor que el Labor Desde",16,"A v i s o")
Return .F.
Endif
Llabor = "temphistorico.cod_labor >= Lcod_labor_ini and temphistorico.cod_labor<=Lcod_labor_fin"
Endif
If Empty(otxtcod_alma_desde) And Empty(otxtcod_alma_hasta)
lalmacen = "temphistorico.cod_alma>0"
Else
lalmacen = "temphistorico.cod_alma>=otxtcod_alma_desde and temphistorico.cod_alma<=otxtcod_alma_hasta"
Endif
*SET STEP ON
WaitWindow("Acumulando los movimiento("+tabla_existencia+"), Espere un momento...", "NOWAIT", 0)
Select temphistorico.periodo, temphistorico.tipo_alma,;
1 As cod_alma, Almacen.nom_alma, temphistorico.cod_labor, Splabor.nom_labor, Splabor.costo, Splabor.STOCK, Splabor.cant_paquete, Splabor.gru_labor,;
temphistorico.cod_merc, Spmercado.nom_merc,;
SUM(temphistorico.inv_inicial) As inicial,;
SUM(entrada_mes) As produccion,;
SUM(salida_mes) As salida,;
SUM(otra_entrada) As otra_entrada,;
SUM(trasp_ent_mes) As traspaso_entrada,;
SUM(trasp_sal_mes) As traspaso_salida,;
SUM(descatalog_mes) As descatalogado,;
SUM(vental_mes) As vental,;
SUM(ventag_mes) As ventag,;
CAST(0 As Integer) As backorder,;
CAST(0 As Integer) As cant_mixta,;
((Sum(temphistorico.inv_inicial)+Sum(temphistorico.entrada_mes)+Sum(temphistorico.otra_entrada)+Sum(temphistorico.trasp_ent_mes))-(Sum(temphistorico.salida_mes)+Sum(temphistorico.trasp_sal_mes)+Sum(temphistorico.descatalog_mes)+Sum(temphistorico.vental_mes)+Sum(temphistorico.ventag_mes))) As existencia,;
CAST(0 As Integer) As Cant_backorder, Cast(0 As Integer) As Cant_terminada, Cast(0 As Integer) As Bal_backorder_labor,;
SPLABOR.Stock_minimo_producc;
FROM temphistorico ;
INNER Join bdproducc!Splabor On temphistorico.tipo_alma == Splabor.tipo_alma And temphistorico.cod_labor == Splabor.cod_labor;
INNER Join bdproducc!Spmercado On temphistorico.cod_merc == Spmercado.cod_merc;
INNER Join bdproducc!Almacen On temphistorico.tipo_alma == Almacen.tipo_alma And temphistorico.cod_alma == Almacen.cod_alma;
WHERE temphistorico.periodo == Lperiodo;
AND temphistorico.tipo_alma == Lcobtipo_alma;
AND &lalmacen;
AND &Llabor;
AND &lmercado;
&Lgrupo;
HAVING ((Sum(temphistorico.inv_inicial)+Sum(temphistorico.entrada_mes)+Sum(temphistorico.otra_entrada)+Sum(temphistorico.trasp_ent_mes))-(Sum(temphistorico.salida_mes)+Sum(temphistorico.trasp_sal_mes)+Sum(temphistorico.descatalog_mes)+Sum(temphistorico.vental_mes)+Sum(temphistorico.ventag_mes))) <> 0;
INTO Cursor &tabla_existencia Readwrite
*INTO Cursor Tmp_repexialma Readwrite
Select &tabla_existencia &&Tmp_repexialma
Index On Alltrim(tipo_alma)+ Alltrim(cod_merc) + Alltrim(cod_labor) Tag buscar
Index On tipo_alma+ cod_labor + cod_merc Tag buscar1
Index On Alltrim(gru_labor) + Alltrim(cod_labor) Tag buscar2
Index On Alltrim(cod_labor) Tag cod_labor
*brows
* Messagebox( datetime()-Fecha_inicial_proceso)
*Endproc
********************************
*Fin buscar existencias
********************************