Registrar y corregir ipprmt020 (Requisiciones Productos Almacenes)
- Registrar funciones compartidas faltantes (buscarequisicion, imprequisiciones, funciones_ip) y formularios ipfmmt003/ipfmmt020 en el proyecto - Agregar usuarioSistema a seg000.4gl - Ampliar combos Codigo Mov/Bodega/Bodega Destino en ipfmmt020.4fd (texto ilegible) - Refrescar lista de requisiciones al anular (buscarData + clear del arreglo)
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<report:Report xmlns:rtl="http://www.4js.com/2004/RTL" xmlns:report="http://www.4js.com/2007/REPORT" xmlns="http://www.4js.com/2004/PXML" gstVersion="3140a" version="6.00">
|
||||
<report:Settings RWPageWidth="letterwidth" RWPageLength="letterlength" RWLeftMargin="0.5inch" RWTopMargin="0.5inch" RWRightMargin="0.5inch" RWBottomMargin="0.5inch">
|
||||
<report:FormatList>
|
||||
<report:Format-SVG/>
|
||||
<report:Format-PDF/>
|
||||
<report:Format-image/>
|
||||
</report:FormatList>
|
||||
</report:Settings>
|
||||
<report:Data RWDataLocation="../ipdir/imprequisiciones.rdd" RWFglReportName="requiere"/>
|
||||
<report:Conflicts>
|
||||
<report:Conflict nodeName="despiece" message="Node was in trigger "AfterGroup codigo", but trigger was removed during schema update"/>
|
||||
<report:Conflict nodeName="detalledespiece" message="Node was in trigger "AfterGroup codigo", but trigger was removed during schema update"/>
|
||||
<report:Conflict nodeName="totaldespiece" message="Node was in trigger "AfterGroup codigo", but trigger was removed during schema update"/>
|
||||
</report:Conflicts>
|
||||
<rtl:stylesheet>
|
||||
<PXML>
|
||||
<rtl:match name="Report" nameConstraint="Report" minOccurs="1" maxOccurs="1">
|
||||
<MINIPAGE name="Page Root" width="max" length="max">
|
||||
<LAYOUTNODE name="encabezado" width="min" length="max" alignment="center" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed">
|
||||
<rtl:input-variable name="p_companias.nombre" type="FGLString" expectedLocation="expectedAhead"/>
|
||||
<WORDBOX name="WordBox1" width="max-2cm" floatingBehavior="enclosed" textAlignment="center" text="{{p_companias.nombre}}"/>
|
||||
<WORDBOX name="WordBox" floatingBehavior="enclosed" text="Pagina:"/>
|
||||
<PAGENOBOX name="PageNoBox" floatingBehavior="enclosed"/>
|
||||
</LAYOUTNODE>
|
||||
<LAYOUTNODE name="encabezado2" width="min" length="max" layoutDirection="leftToRight" floatingBehavior="enclosed">
|
||||
<WORDBOX name="WordBox2" width="max-2cm" fontBold="true" floatingBehavior="enclosed" textAlignment="center" text="REQUISICION DOCUMENTOS"/>
|
||||
<rtl:input-variable name="hora" type="FGLString" expectedLocation="expectedAhead"/>
|
||||
<WORDBOX name="WordBox3" floatingBehavior="enclosed" text="{{hora}}"/>
|
||||
</LAYOUTNODE>
|
||||
<LAYOUTNODE name="encabezadomaster" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
|
||||
<LAYOUTNODE name="LayoutNode1" width="3inch" length="min" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
|
||||
<rtl:input-variable name="nombreUsuario" type="FGLString" expectedLocation="expectedWayAhead"/>
|
||||
<WORDBOX name="WordBox4" length="1cm" floatingBehavior="enclosed" text="{{"USUARIO: "+nombreUsuario.trim()}}"/>
|
||||
<rtl:input-variable name="p_iptb57.numero_doc" type="FGLNumeric" expectedLocation="expectedWayAhead"/>
|
||||
<WORDBOX name="WordBox5" fontSize="12" fontBold="true" floatingBehavior="enclosed" text="{{"DOCUMENTO: "+p_iptb57.numero_doc.format("&&&&&&&")}}"/>
|
||||
<rtl:input-variable name="p_iptb57.cod_mov" type="FGLNumeric" expectedLocation="expectedWayAhead"/>
|
||||
<rtl:input-variable name="nombreMov" type="FGLString" expectedLocation="expectedWayAhead"/>
|
||||
<WORDWRAPBOX name="WordWrapBox" width="width("M")*27" alignment="baseline" floatingBehavior="enclosed" text="{{"TIPO DOCUMENTO: "+"("+p_iptb57.cod_mov.format("<<<")+")"+nombreMov.trim()}}"/>
|
||||
<rtl:input-variable name="p_iptb57.fecha" type="FGLString" expectedLocation="expectedWayAhead"/>
|
||||
<WORDBOX name="WordBox6" floatingBehavior="enclosed" text="{{"FECHA: "+p_iptb57.fecha}}"/>
|
||||
<rtl:input-variable name="nombreBodega" type="FGLString" expectedLocation="expectedWayAhead"/>
|
||||
<WORDBOX name="WordBox8" floatingBehavior="enclosed" text="{{"BODEGA: "+nombreBodega}}"/>
|
||||
</LAYOUTNODE>
|
||||
<LAYOUTNODE name="LayoutNode2" width="3inch" length="min" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
|
||||
<WORDBOX name="WordBox12" length="1cm" alignment="baseline" floatingBehavior="enclosed"/>
|
||||
<rtl:input-variable name="p_iptb57.bodega_destino" type="FGLNumeric" expectedLocation="expectedWayAhead"/>
|
||||
<rtl:input-variable name="nombreBodegaDestino" type="FGLString" expectedLocation="expectedWayAhead"/>
|
||||
<WORDBOX name="WordBox9" floatingBehavior="enclosed" text="{{"BODEGA DESTINO: "+"("+p_iptb57.bodega_destino+")"+nombreBodegaDestino}}"/>
|
||||
<rtl:input-variable name="p_iptb57.num_oc" type="FGLNumeric" expectedLocation="expectedWayAhead"/>
|
||||
<WORDBOX name="WordBox10" floatingBehavior="enclosed" text="{{"NUMERO ORDEN:"+p_iptb57.num_oc.format("&&&&&&&&")}}"/>
|
||||
<rtl:input-variable name="p_iptb57.cliente" type="FGLString" expectedLocation="expectedWayAhead"/>
|
||||
<WORDWRAPBOX name="WordWrapBox1" width="width("M")*27" floatingBehavior="enclosed" text="{{"CLIENTE: "+p_iptb57.cliente}}"/>
|
||||
<rtl:input-variable name="p_iptb57.observacion" type="FGLString" expectedLocation="expectedWayAhead"/>
|
||||
<WORDWRAPBOX name="WordWrapBox2" width="width("M")*20" floatingBehavior="enclosed" text="{{"OBSERVACION: "+p_iptb57.observacion.trim()}}"/>
|
||||
</LAYOUTNODE>
|
||||
</LAYOUTNODE>
|
||||
<LAYOUTNODE name="encabezadodetalle" width="min" length="min" fontSize="8" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
|
||||
<WORDBOX name="WordBox13" width="3.5inch" floatingBehavior="enclosed" text="ITEM(S)" roundedCorners="false" borderWidth="1"/>
|
||||
<WORDBOX name="WordBox14" width="2.2inch" floatingBehavior="enclosed" textAlignment="right" text="UNIDAD"/>
|
||||
<WORDBOX name="WordBox15" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="CANTIDAD"/>
|
||||
</LAYOUTNODE>
|
||||
<rtl:match name="FirstPageHeader" nameConstraint="FirstPageHeader" minOccurs="0" maxOccurs="1"/>
|
||||
<rtl:match name="Group codigo" nameConstraint="Group" minOccurs="0" maxOccurs="unbounded">
|
||||
<MINIPAGE name="table" width="min" length="min" fontSize="8" layoutDirection="leftToRight">
|
||||
<rtl:input-variable name="detalle.cod_n" type="FGLNumeric" expectedLocation="expectedHere"/>
|
||||
<rtl:input-variable name="detalle.cod_grupo" type="FGLNumeric" expectedLocation="expectedHere"/>
|
||||
<rtl:input-variable name="detalle.cod_tipo" type="FGLNumeric" expectedLocation="expectedHere"/>
|
||||
<rtl:input-variable name="detalle.cod_sec" type="FGLNumeric" expectedLocation="expectedHere"/>
|
||||
<rtl:input-variable name="detalle.descripcion" type="FGLString" expectedLocation="expectedHere"/>
|
||||
<rtl:input-variable name="detalle.unidad_med" type="FGLString" expectedLocation="expectedHere"/>
|
||||
<WORDWRAPBOX name="WordWrapBox3" width="width("M")*30" length="min" alignment="baseline" floatingBehavior="enclosed" text="{{detalle.cod_n.format("&&&&")+"-"+detalle.cod_grupo.format("&&&&")+"-"+detalle.cod_tipo.format("&&&&&&")+"-"+detalle.cod_sec.format("&&&&&&&&")+" "+detalle.descripcion.trim()+" "+detalle.unidad_med}}"/>
|
||||
<rtl:input-variable name="detalle.cantidad_1" type="FGLNumeric" expectedLocation="expectedHere"/>
|
||||
<WORDBOX name="WordBox17" width="2.4inch" floatingBehavior="enclosed" textAlignment="right" text="{{detalle.cantidad_1.format("###,###.#####")}}"/>
|
||||
<rtl:input-variable name="detalle.cantidad" type="FGLNumeric" expectedLocation="expectedHere"/>
|
||||
<WORDBOX name="WordBox18" width="1.5inch" floatingBehavior="enclosed" textAlignment="right" text="{{detalle.cantidad.format("###,###.#####")}}"/>
|
||||
</MINIPAGE>
|
||||
<rtl:input-variable name="tienedespiece" type="FGLNumeric" expectedLocation="expectedAhead"/>
|
||||
<LAYOUTNODE name="despiece" rtl:condition="tienedespiece==1" width="min" length="min" fontSize="8" layoutDirection="topToBottom" floatingBehavior="enclosed">
|
||||
<WORDBOX name="WordBox20" width="max" floatingBehavior="enclosed" textAlignment="center" text="DESPIECE" roundedCorners="true" borderWidth="1" borderStyle="solid"/>
|
||||
<LAYOUTNODE name="encabezadodespiece" width="min" length="max" layoutDirection="leftToRight" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
|
||||
<WORDBOX name="WordBox24" width="1.5inch" floatingBehavior="enclosed" text="Etiquetas"/>
|
||||
<WORDBOX name="WordBox26" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="Lado 1"/>
|
||||
<WORDBOX name="WordBox27" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="Lado 2"/>
|
||||
<WORDBOX name="WordBox28" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="Lado 3"/>
|
||||
<WORDBOX name="WordBox29" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="Unidades"/>
|
||||
<WORDBOX name="WordBox30" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="Medida"/>
|
||||
</LAYOUTNODE>
|
||||
</LAYOUTNODE>
|
||||
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
|
||||
<rtl:input-variable name="tienedespiece" type="FGLNumeric" expectedLocation="expectedHere"/>
|
||||
<LAYOUTNODE name="detalledespiece" rtl:condition="tienedespiece==1" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
|
||||
<rtl:input-variable name="etiqueta" type="FGLString" expectedLocation="expectedHere"/>
|
||||
<WORDWRAPBOX name="etiqueta Value" class="grwStringValue" width="width("M")*15" alignment="baseline" floatingBehavior="enclosed" text="{{etiqueta}}"/>
|
||||
<rtl:input-variable name="xdespiece.lado_1" type="FGLNumeric" expectedLocation="expectedHere"/>
|
||||
<DECIMALFORMATBOX name="despiece.lado_1 Value" class="grwNumericValue" width="1inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---,--&.&&" value="{{xdespiece.lado_1}}"/>
|
||||
<rtl:input-variable name="xdespiece.lado_2" type="FGLNumeric" expectedLocation="expectedHere"/>
|
||||
<DECIMALFORMATBOX name="despiece.lado_2 Value" class="grwNumericValue" width="1inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---,--&.&&" value="{{xdespiece.lado_2}}"/>
|
||||
<rtl:input-variable name="xdespiece.lado_3" type="FGLNumeric" expectedLocation="expectedHere"/>
|
||||
<DECIMALFORMATBOX name="despiece.lado_3 Value" class="grwNumericValue" width="1inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---,--&.&&" value="{{xdespiece.lado_3}}"/>
|
||||
<rtl:input-variable name="xdespiece.cantidad" type="FGLNumeric" expectedLocation="expectedHere"/>
|
||||
<DECIMALFORMATBOX name="despiece.cantidad Value" class="grwNumericValue" width="1inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---,--&.&&" value="{{xdespiece.cantidad}}"/>
|
||||
<rtl:input-variable name="xdespiece.medida" type="FGLNumeric" expectedLocation="expectedHere"/>
|
||||
<DECIMALFORMATBOX name="despiece.medida Value" class="grwNumericValue" width="1inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---,--&.&&" value="{{xdespiece.medida}}"/>
|
||||
</LAYOUTNODE>
|
||||
</rtl:match>
|
||||
<rtl:input-variable name="tienedespiece" type="FGLNumeric" expectedLocation="expectedBefore"/>
|
||||
<LAYOUTNODE name="totaldespiece" rtl:condition="tienedespiece==1" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
|
||||
<WORDBOX name="WordBox21" width="4.8inch" floatingBehavior="enclosed" text="TOTALES"/>
|
||||
<rtl:input-variable name="total_cantidad" type="FGLNumeric" expectedLocation="expectedBefore"/>
|
||||
<WORDBOX name="WordBox22" width="1inch" floatingBehavior="enclosed" text="{{total_cantidad.format("##,###.#####")}}"/>
|
||||
<rtl:input-variable name="total_medida" type="FGLNumeric" expectedLocation="expectedBefore"/>
|
||||
<WORDBOX name="WordBox23" width="1inch" floatingBehavior="enclosed" text="{{total_medida.format("##,###.######")}}"/>
|
||||
</LAYOUTNODE>
|
||||
</rtl:match>
|
||||
</MINIPAGE>
|
||||
</rtl:match>
|
||||
</PXML>
|
||||
</rtl:stylesheet>
|
||||
</report:Report>
|
||||
@@ -76,9 +76,9 @@
|
||||
<Edit fieldId="4" gridHeight="1" gridWidth="21" name="email" noEntry="true" posX="38" posY="1" tabIndex="-1" title="edit2" widget="Edit"/>
|
||||
<Edit fieldId="24" gridHeight="1" gridWidth="23" justify="center" name="estado" noEntry="true" posX="61" posY="1" reverse="true" scroll="true" tabIndex="-1" title="edit2" widget="Edit"/>
|
||||
<Label gridHeight="1" gridWidth="10" name="label7" posX="1" posY="2" text="Codigo Mov"/>
|
||||
<ComboBox fieldId="15" gridHeight="1" gridWidth="24" items="" name="cod_mov" posX="12" posY="2" tabIndex="-1" title="combobox1" widget="ComboBox"/>
|
||||
<Label gridHeight="1" gridWidth="10" name="label4" posX="38" posY="2" text="Orden Pedidos"/>
|
||||
<Edit fieldId="5" gridHeight="1" gridWidth="10" name="num_oc" posX="49" posY="2" tabIndex="-1" title="edit2" widget="Edit"/>
|
||||
<ComboBox fieldId="15" gridHeight="1" gridWidth="40" items="" name="cod_mov" posX="12" posY="2" tabIndex="-1" title="combobox1" widget="ComboBox"/>
|
||||
<Label gridHeight="1" gridWidth="10" name="label4" posX="54" posY="2" text="Orden Pedidos"/>
|
||||
<Edit fieldId="5" gridHeight="1" gridWidth="10" name="num_oc" posX="65" posY="2" tabIndex="-1" title="edit2" widget="Edit"/>
|
||||
<Label gridHeight="1" gridWidth="10" name="label1" posX="1" posY="3" text="Numero Doc."/>
|
||||
<Edit fieldId="1" gridHeight="1" gridWidth="10" name="numero_doc" noEntry="true" posX="12" posY="3" tabIndex="-1" title="edit1" widget="Edit"/>
|
||||
<Label gridHeight="1" gridWidth="10" name="label5" posX="38" posY="3" text="Cliente"/>
|
||||
@@ -91,11 +91,11 @@
|
||||
<Edit fieldId="32" gridHeight="1" gridWidth="46" name="observacion" posX="49" posY="4" scroll="true" tabIndex="-1" title="edit1" widget="Edit"/>
|
||||
<Button gridHeight="1" gridWidth="10" image="fa-paperclip" name="atardocumento" posX="101" posY="4" tabIndex="-1"/>
|
||||
<Label gridHeight="1" gridWidth="10" name="label6" posX="1" posY="5" text="Bodega"/>
|
||||
<ComboBox fieldId="7" gridHeight="1" gridWidth="24" items="" name="bodega" posX="12" posY="5" tabIndex="-1" title="edit2" widget="ComboBox"/>
|
||||
<Label gridHeight="1" gridWidth="10" name="label8" posX="38" posY="5" text="Bodega Destino"/>
|
||||
<ComboBox fieldId="16" gridHeight="1" gridWidth="18" items="" name="bodega_destino" posX="49" posY="5" tabIndex="-1" title="combobox1" widget="ComboBox"/>
|
||||
<Edit fieldId="35" gridHeight="1" gridWidth="31" name="url_file" noEntry="true" posX="68" posY="5" scroll="true" tabIndex="-1" title="edit1" widget="Edit"/>
|
||||
<Button gridHeight="1" gridWidth="10" image="open2" name="abrirdocumento" posX="101" posY="5" tabIndex="-1"/>
|
||||
<ComboBox fieldId="7" gridHeight="1" gridWidth="28" items="" name="bodega" posX="12" posY="5" tabIndex="-1" title="edit2" widget="ComboBox"/>
|
||||
<Label gridHeight="1" gridWidth="14" name="label8" posX="42" posY="5" text="Bodega Destino"/>
|
||||
<ComboBox fieldId="16" gridHeight="1" gridWidth="28" items="" name="bodega_destino" posX="57" posY="5" tabIndex="-1" title="combobox1" widget="ComboBox"/>
|
||||
<Edit fieldId="35" gridHeight="1" gridWidth="31" name="url_file" noEntry="true" posX="86" posY="5" scroll="true" tabIndex="-1" title="edit1" widget="Edit"/>
|
||||
<Button gridHeight="1" gridWidth="10" image="open2" name="abrirdocumento" posX="119" posY="5" tabIndex="-1"/>
|
||||
<Label gridHeight="1" gridWidth="10" name="label10" posX="1" posY="6" text="Estado Proceso"/>
|
||||
<Edit fieldId="36" gridHeight="1" gridWidth="24" name="estado_proceso" noEntry="true" posX="12" posY="6" scroll="true" tabIndex="-1" title="edit1" widget="Edit"/>
|
||||
</Group>
|
||||
|
||||
@@ -108,6 +108,7 @@ FUNCTION ipprmt020()
|
||||
LET p_iptb57.numero_doc = arr_busqueda[arr_curr()].numeroid
|
||||
LET p_iptb57.cod_mov = arr_busqueda[arr_curr()].cod_mov
|
||||
CALL anular()
|
||||
CALL buscarData()
|
||||
ON ACTION imprimir ATTRIBUTE(TEXT = "Imprimir", IMAGE = "printer")
|
||||
|
||||
CALL buscadoc(
|
||||
@@ -153,6 +154,7 @@ FUNCTION buscardata()
|
||||
AND b.us_crea = usuarios
|
||||
AND b.status_t IS NULL
|
||||
|
||||
CALL arr_busqueda.clear()
|
||||
LET i = 1
|
||||
FOREACH buscardata INTO arr_busqueda[i].*
|
||||
LET p_iptb57.cod_mov = arr_busqueda[i].cod_mov
|
||||
|
||||
@@ -499,9 +499,13 @@
|
||||
<Group id="1667448785" label="PRODUCTOS TERMINADOS">
|
||||
<Library binaryName="FORMULARIOS_IP" dependencies="-1026233879" id="-1826025351" label="FORMULARIOS_IP">
|
||||
<File filePath="ipdir/ipfmmt003.4fd"/>
|
||||
<File filePath="ipdir/ipfmmt020.4fd"/>
|
||||
</Library>
|
||||
<Library binaryName="FUNCIONES_IP" dependencies="-1026233879" id="1763548104" label="FUNCIONES_IP">
|
||||
<File filePath="ipdir/ipprgb000.4gl"/>
|
||||
<File filePath="ipdir/buscarequisicion.4gl"/>
|
||||
<File compilerOptions="--build-rdd" filePath="ipdir/imprequisiciones.4gl"/>
|
||||
<File filePath="otrodir/funciones_ip.4gl"/>
|
||||
</Library>
|
||||
<Application binaryName="ipprmt002" dependencies="1763548104,-1026233879,-764824792" externalDependencies="libgre.42x" id="-960000000" label="ipprmt002">
|
||||
<Configuration commandLineArguments="jpeguero Peguero2023" id="-961000000" label="Configuration"/>
|
||||
@@ -514,6 +518,7 @@
|
||||
<Application binaryName="ipprmt020" dependencies="1763548104,-1026233879,-764824792" externalDependencies="libgre.42x" id="-960000002" label="ipprmt020">
|
||||
<Configuration commandLineArguments="jpeguero Peguero2023" id="-961000002" label="Configuration"/>
|
||||
<File compilerOptions="--build-rdd" filePath="ipdir/ipprmt020.4gl"/>
|
||||
<File filePath="bin/ipprmt020.4rp"/>
|
||||
</Application>
|
||||
<Application binaryName="ipprmt021" dependencies="1763548104,-1026233879,-764824792" externalDependencies="libgre.42x" id="-960000003" label="ipprmt021">
|
||||
<Configuration commandLineArguments="jpeguero Peguero2023" id="-961000003" label="Configuration"/>
|
||||
|
||||
@@ -0,0 +1,483 @@
|
||||
FUNCTION busca_prod(pinventario)
|
||||
|
||||
DEFINE
|
||||
arr_prod DYNAMIC ARRAY OF RECORD
|
||||
cod_n INTEGER,
|
||||
cod_grupo INTEGER,
|
||||
cod_tipo INTEGER,
|
||||
cod_sec INTEGER,
|
||||
descrip_esp CHAR(50),
|
||||
unidad_med CHAR(4),
|
||||
existencia1 DEC(18, 4),
|
||||
cantidad_o DEC(18, 4),
|
||||
cantidad_c DEC(18, 4),
|
||||
existencia DEC(18, 4)
|
||||
END RECORD,
|
||||
selec_pt, criterio STRING,
|
||||
f, pinventario, idx SMALLINT,
|
||||
pcodn, pcodgrupo, pcodtipo, pcodsec INT,
|
||||
pdescripcion CHAR(100)
|
||||
|
||||
OPEN WINDOW busca_2
|
||||
AT 8, 4
|
||||
WITH FORM "vefmwd100"
|
||||
ATTRIBUTE(BORDER, FORM LINE FIRST + 1, PROMPT LINE LAST)
|
||||
|
||||
CONSTRUCT criterio
|
||||
ON a.cod_n, a.cod_grupo, a.cod_tipo, a.descrip_esp
|
||||
FROM cod_n, cod_grupo, cod_tipo, descrip_esp
|
||||
|
||||
IF pinventario = '02' THEN
|
||||
LET selec_pt =
|
||||
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med,SUM(b.cantidad_2),'0','0',SUM(b.cantidad_2) ",
|
||||
" FROM iptb00002 AS a INNER JOIN iptb00001 AS c ON a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND ",
|
||||
" a.cod_tipo = c.cod_tipo and a.cod_Sec = c.cod_Sec LEFT OUTER JOIN ",
|
||||
" iptb00006 AS b ON a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
|
||||
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND b.status_t IS NULL ",
|
||||
" WHERE a.status_t IS NULL AND ",
|
||||
CRITERIO CLIPPED,
|
||||
" GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med ",
|
||||
" ORDER BY a.descrip_esp "
|
||||
END IF
|
||||
|
||||
IF pinventario = '01' THEN
|
||||
LET selec_pt =
|
||||
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med,'0','0','0',SUM(b.cantidad_2) ",
|
||||
" FROM intb00001 AS a ",
|
||||
" LEFT OUTER JOIN ",
|
||||
" intb00006 AS b ON a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
|
||||
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND b.status_t IS NULL ",
|
||||
" WHERE a.status_t IS NULL AND ",
|
||||
CRITERIO CLIPPED,
|
||||
" GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med ",
|
||||
" ORDER BY a.descrip_esp "
|
||||
END IF
|
||||
|
||||
IF pinventario = '03' THEN
|
||||
LET selec_pt =
|
||||
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med,'0','0','0',SUM(b.cantidad_2) ",
|
||||
" FROM irtb00002 AS a ",
|
||||
" LEFT OUTER JOIN ",
|
||||
" irtb00006 AS b ON a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
|
||||
" a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND b.status_t IS NULL ",
|
||||
" WHERE a.status_t IS NULL AND ",
|
||||
CRITERIO CLIPPED,
|
||||
" GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med ",
|
||||
" ORDER BY a.descrip_esp "
|
||||
END IF
|
||||
|
||||
IF int_flag THEN
|
||||
LET Int_flag = FALSE
|
||||
CLOSE WINDOW busca_2
|
||||
RETURN pcodn, pcodgrupo, pcodtipo, pcodsec, pdescripcion
|
||||
END IF
|
||||
PREPARE comando_p FROM selec_pt
|
||||
DECLARE busca_2 CURSOR FOR comando_p
|
||||
|
||||
LET idx = 1
|
||||
FOREACH busca_2 INTO arr_prod[idx].*
|
||||
LET idx = idx + 1
|
||||
END FOREACH
|
||||
CALL SET_COUNT(idx - 1)
|
||||
|
||||
DISPLAY ARRAY arr_prod TO s_prod.*
|
||||
AFTER ROW
|
||||
LET idx = arr_curr()
|
||||
LET pcodn = arr_prod[idx].cod_n
|
||||
LET pcodgrupo = arr_prod[idx].cod_grupo
|
||||
LET pcodtipo = arr_prod[idx].cod_tipo
|
||||
LET pcodsec = arr_prod[idx].cod_sec
|
||||
LET pdescripcion = arr_prod[idx].descrip_esp
|
||||
AFTER DISPLAY
|
||||
EXIT DISPLAY
|
||||
END DISPLAY
|
||||
CLOSE WINDOW busca_2
|
||||
RETURN pcodn, pcodgrupo, pcodtipo, pcodsec, pdescripcion
|
||||
|
||||
END FUNCTION
|
||||
FUNCTION bodegas(cb2)
|
||||
|
||||
DEFINE
|
||||
ketiquetas SMALLINT,
|
||||
detiquetas CHAR(30),
|
||||
cbodegas ui.ComboBox,
|
||||
cb2 CHAR(2)
|
||||
|
||||
LET cbodegas = ui.combobox.forname("formonly.bodega")
|
||||
DECLARE bbodegas CURSOR FOR
|
||||
SELECT a.cod_bodega, a.descripcion
|
||||
FROM intb00009 a
|
||||
WHERE a.status_t IS NULL
|
||||
ORDER BY a.descripcion
|
||||
CALL cbodegas.clear()
|
||||
|
||||
FOREACH bbodegas INTO ketiquetas, detiquetas
|
||||
CALL cbodegas.additem(ketiquetas, detiquetas)
|
||||
END FOREACH
|
||||
|
||||
IF cb2 = '2' THEN
|
||||
LET cbodegas = ui.combobox.forname("formonly.bodega_destino")
|
||||
DECLARE bbodegas2 CURSOR FOR
|
||||
SELECT a.cod_bodega, a.descripcion
|
||||
FROM intb00009 a
|
||||
WHERE a.status_t IS NULL
|
||||
ORDER BY a.descripcion
|
||||
CALL cbodegas.clear()
|
||||
|
||||
FOREACH bbodegas2 INTO ketiquetas, detiquetas
|
||||
CALL cbodegas.additem(ketiquetas, detiquetas)
|
||||
END FOREACH
|
||||
|
||||
END IF
|
||||
|
||||
END FUNCTION
|
||||
{
|
||||
-------------------------------------------------------------------------------
|
||||
FUNCTION disponibles() -- VERSION OPTIMIZADA v2 (drop-in, misma firma)
|
||||
-------------------------------------------------------------------------------
|
||||
CAMBIOS respecto al original:
|
||||
1. SUSTITUTOS (intb00003) incorporados CORRECTAMENTE en existencia, orden y
|
||||
conduce: ahora suman el propio producto MAS sus equivalentes (que no
|
||||
reciben ventas por si mismos). El original hacia un LEFT JOIN a intb00003
|
||||
que no usaba ninguna columna de e, por lo que NO traia el sustituto y solo
|
||||
podia duplicar filas.
|
||||
2. FECHA DE CORTE: se aplica fecha <= pfecha en los movimientos/documentos.
|
||||
En la reserva se usa pfecha como referencia (linea marcada).
|
||||
3. Manejo de NULL consistente. Firma y 6 valores de retorno IDENTICOS.
|
||||
|
||||
RECOMENDACION: pcodn..pcodsec estan declarados SMALLINT, pero en las tablas
|
||||
los codigos son INT. Si algun codigo supera 32767 habra overflow; considerar
|
||||
cambiarlos a INTEGER.
|
||||
|
||||
NOTA: esta version por fila sigue siendo mas lenta que precalcular con
|
||||
sp_llenar_disponibles. Usar esta solo si no se puede cambiar el flujo del
|
||||
reporte; de lo contrario, usar el SP.
|
||||
-------------------------------------------------------------------------------
|
||||
}
|
||||
FUNCTION disponibles(pcodn, pcodgrupo, pcodtipo, pcodsec, pfecha)
|
||||
DEFINE pcodn, pcodgrupo, pcodtipo, pcodsec, dias SMALLINT,
|
||||
pfecha DATE,
|
||||
reservado, existencia, transito, cantidad_orden, pcantidadconduce,
|
||||
cantidad_ordenada, cantidad_recibida DEC(12, 5),
|
||||
selec STRING,
|
||||
valorOrdenes, valorConduces DEC(16, 2)
|
||||
|
||||
SELECT a.dias_vence_reservas INTO dias FROM companias a
|
||||
|
||||
# RESERVADO -- usa pfecha como referencia de corte
|
||||
LET reservado = 0
|
||||
LET selec = "
|
||||
SELECT ISNULL(SUM(a.cantidad_reservada),0)
|
||||
FROM vetb00051 a, vetb00050 b
|
||||
WHERE a.status_t IS NULL AND
|
||||
a.cotizacion_no = b.cotizacion_no AND
|
||||
a.cod_n = ? AND a.cod_grupo = ? AND a.cod_tipo = ? AND a.cod_sec = ? AND
|
||||
a.cantidad_reservada IS NOT NULL AND
|
||||
a.fecha_inicio_reserva <= ? AND
|
||||
a.fecha_vence_reserva >= ? AND
|
||||
DATEDIFF(day, a.fecha_vence_reserva, a.fecha_inicio_reserva) <= ?
|
||||
"
|
||||
PREPARE comando1 FROM selec
|
||||
EXECUTE comando1
|
||||
INTO reservado
|
||||
USING pcodn, pcodgrupo, pcodtipo, pcodsec, pfecha, pfecha, dias
|
||||
IF reservado IS NULL THEN LET reservado = 0 END IF
|
||||
|
||||
# EXISTENCIA -- propio + sustitutos, al corte pfecha
|
||||
LET existencia = 0
|
||||
LET selec = "
|
||||
SELECT ISNULL(SUM(a.cantidad_2),0)
|
||||
FROM iptb00006 a
|
||||
WHERE a.status_t IS NULL AND a.fecha <= ? AND
|
||||
( (a.cod_n=? AND a.cod_grupo=? AND a.cod_tipo=? AND a.cod_sec=?)
|
||||
OR EXISTS ( SELECT 1 FROM intb00003 e
|
||||
WHERE e.status_t IS NULL AND
|
||||
e.cod_n=? AND e.cod_grupo=? AND e.cod_tipo=? AND e.cod_sec=? AND
|
||||
a.cod_n=e.cod_n_s AND a.cod_grupo=e.cod_grupo_s AND
|
||||
a.cod_tipo=e.cod_tipo_s AND a.cod_sec=e.cod_sec_s ) )
|
||||
"
|
||||
PREPARE comando2 FROM selec
|
||||
EXECUTE comando2 INTO existencia
|
||||
USING pfecha, pcodn,pcodgrupo,pcodtipo,pcodsec, pcodn,pcodgrupo,pcodtipo,pcodsec
|
||||
|
||||
# ORDEN DE PRODUCCION -- propio + sustitutos, al corte
|
||||
LET cantidad_orden = 0
|
||||
LET selec = "
|
||||
SELECT ISNULL(SUM(a.cantidad),0), ISNULL(SUM(a.cantidad*a.precio),0)
|
||||
FROM prtb00013 a, prtb00012 b
|
||||
WHERE a.num_oc=b.num_oc AND b.cerrada='N' AND b.status_t IS NULL AND
|
||||
b.fecha_oc <= ? AND
|
||||
( (a.cod_n=? AND a.cod_grupo=? AND a.cod_tipo=? AND a.cod_sec=?)
|
||||
OR EXISTS ( SELECT 1 FROM intb00003 e
|
||||
WHERE e.status_t IS NULL AND
|
||||
e.cod_n=? AND e.cod_grupo=? AND e.cod_tipo=? AND e.cod_sec=? AND
|
||||
a.cod_n=e.cod_n_s AND a.cod_grupo=e.cod_grupo_s AND
|
||||
a.cod_tipo=e.cod_tipo_s AND a.cod_sec=e.cod_sec_s ) )
|
||||
"
|
||||
PREPARE comando3 FROM selec
|
||||
EXECUTE comando3 INTO cantidad_orden, valorOrdenes
|
||||
USING pfecha, pcodn,pcodgrupo,pcodtipo,pcodsec, pcodn,pcodgrupo,pcodtipo,pcodsec
|
||||
|
||||
# CONDUCE / CONSUMO -- propio + sustitutos, al corte
|
||||
LET pcantidadConduce = 0
|
||||
LET selec = "
|
||||
SELECT ISNULL(SUM(c.cantidad_2*-1),0),
|
||||
ISNULL(SUM(c.cantidad_2*(a.precio*b.prima_us)),0)
|
||||
FROM prtb00013 a, prtb00012 b, iptb00006 c, iptb00005 d
|
||||
WHERE a.num_oc=b.num_oc AND b.cerrada='N' AND b.status_t IS NULL AND
|
||||
a.num_oc=c.num_oc AND
|
||||
a.cod_n=c.cod_n AND a.cod_grupo=c.cod_grupo AND
|
||||
a.cod_tipo=c.cod_tipo AND a.cod_sec=c.cod_sec AND
|
||||
c.cod_mov=d.cod_mov AND
|
||||
(d.control_despacho='SI' OR d.control_devolucion='SI') AND
|
||||
c.status_t IS NULL AND c.fecha <= ? AND
|
||||
( (a.cod_n=? AND a.cod_grupo=? AND a.cod_tipo=? AND a.cod_sec=?)
|
||||
OR EXISTS ( SELECT 1 FROM intb00003 e
|
||||
WHERE e.status_t IS NULL AND
|
||||
e.cod_n=? AND e.cod_grupo=? AND e.cod_tipo=? AND e.cod_sec=? AND
|
||||
a.cod_n=e.cod_n_s AND a.cod_grupo=e.cod_grupo_s AND
|
||||
a.cod_tipo=e.cod_tipo_s AND a.cod_sec=e.cod_sec_s ) )
|
||||
"
|
||||
PREPARE comando4 FROM selec
|
||||
EXECUTE comando4 INTO pcantidadConduce, valorConduces
|
||||
USING pfecha, pcodn,pcodgrupo,pcodtipo,pcodsec, pcodn,pcodgrupo,pcodtipo,pcodsec
|
||||
|
||||
LET valorOrdenes = valorOrdenes + valorConduces
|
||||
|
||||
# TRANSITO = ordenado - recibido (sin sustitutos, como el original; al corte)
|
||||
LET cantidad_ordenada = 0
|
||||
SELECT ISNULL(SUM(a.cantidad),0) INTO cantidad_ordenada
|
||||
FROM cotb00015 a, cotb00014 b
|
||||
WHERE a.cod_n=pcodn AND a.cod_grupo=pcodgrupo AND
|
||||
a.cod_tipo=pcodtipo AND a.cod_sec=pcodsec AND
|
||||
a.num_oc=b.num_oc AND b.cierre='N' AND a.status_t IS NULL AND
|
||||
b.fech_oc <= pfecha
|
||||
|
||||
LET cantidad_recibida = 0
|
||||
SELECT ISNULL(SUM(a.cantidad_2),0) INTO cantidad_recibida
|
||||
FROM iptb00006 a, cotb00015 b, cotb00014 c
|
||||
WHERE a.cod_n=pcodn AND a.cod_grupo=pcodgrupo AND
|
||||
a.cod_tipo=pcodtipo AND a.cod_sec=pcodsec AND
|
||||
a.cod_n=b.cod_n AND a.cod_grupo=b.cod_grupo AND a.cod_tipo=b.cod_tipo AND
|
||||
a.orden_compra=b.num_oc AND b.num_oc=c.num_oc AND
|
||||
c.cierre='N' AND a.status_t IS NULL AND a.fecha <= pfecha
|
||||
|
||||
LET transito = cantidad_ordenada - cantidad_recibida
|
||||
|
||||
IF cantidad_orden IS NULL THEN LET cantidad_orden = 0 END IF
|
||||
IF transito IS NULL THEN LET transito = 0 END IF
|
||||
IF pcantidadconduce IS NULL THEN LET pcantidadconduce = 0 END IF
|
||||
|
||||
RETURN cantidad_orden, pcantidadConduce, transito, existencia, reservado,
|
||||
valorOrdenes
|
||||
|
||||
END FUNCTION
|
||||
FUNCTION busca_reservas(pcodn, pcodgrupo, pcodtipo, pcodsec)
|
||||
DEFINE
|
||||
idx, pcodn, pcodgrupo, pcodtipo, pcodsec, dias SMALLINT,
|
||||
arr_reserva DYNAMIC ARRAY OF RECORD
|
||||
cotizacion_no INT,
|
||||
vendedor VARCHAR(100),
|
||||
nombre VARCHAR(100),
|
||||
cantidad DEC(12, 5),
|
||||
fecha CHAR(10)
|
||||
END RECORD,
|
||||
selec STRING,
|
||||
fecha DATE
|
||||
|
||||
SELECT a.dias_vence_reservas INTO dias FROM companias a
|
||||
LET fecha = TODAY
|
||||
LET selec =
|
||||
" SELECT a.cotizacion_no,RTRIM(c.nom1_emp)||' '||RTRIM(c.apell1_emp),b.nombre_cliente,a.cantidad_reservada,CONVERT(CHAR(10),a.fecha_vence_reserva,103)
|
||||
FROM vetb00051 a,vetb00050 b,adtb00003 c
|
||||
WHERE a.status_t IS NULL AND
|
||||
b.sec_vend = c.num_emp AND
|
||||
a.cotizacion_no = b.cotizacion_no AND
|
||||
a.cod_n = ? AND
|
||||
a.cod_grupo=? AND
|
||||
a.cod_tipo=? AND
|
||||
a.cod_sec=? AND a.cantidad_reservada IS NOT NULL AND
|
||||
a.fecha_vence_reserva >= ? AND
|
||||
DATEDIFF(DAY,a.fecha_vence_reserva ,a.fecha_inicio_reserva) <=? "
|
||||
PREPARE comando FROM selec
|
||||
DECLARE busca_reserva CURSOR FOR comando
|
||||
OPEN busca_reserva USING pcodn, pcodgrupo, pcodtipo, pcodsec, fecha, dias
|
||||
|
||||
DISPLAY selec
|
||||
LET idx = 1
|
||||
FOREACH busca_reserva INTO arr_reserva[idx].*
|
||||
LET idx = idx + 1
|
||||
END FOREACH
|
||||
OPEN WINDOW ipfmwd012 WITH FORM "ipfmwd012"
|
||||
DISPLAY ARRAY arr_reserva TO s_reserva.*
|
||||
CLOSE WINDOW ipfmwd012
|
||||
|
||||
END FUNCTION
|
||||
FUNCTION almacenes(pcodn, pcodgrupo, pcodtipo, pcodsec)
|
||||
DEFINE
|
||||
pcodn, pcodgrupo, pcodtipo, pcodsec SMALLINT,
|
||||
arr_existencia DYNAMIC ARRAY OF RECORD
|
||||
almacen VARCHAR(30),
|
||||
existencia DEC(12, 2)
|
||||
END RECORD,
|
||||
idx SMALLINT
|
||||
OPEN WINDOW w1 AT 1, 1 WITH FORM "almacenes"
|
||||
DECLARE busca_a CURSOR FOR
|
||||
SELECT b.descripcion, SUM(c.cantidad_2)
|
||||
FROM intb00009 b, iptb00006 c
|
||||
WHERE b.cod_bodega = c.bodega
|
||||
AND c.cod_n = pcodn
|
||||
AND c.cod_grupo = pcodgrupo
|
||||
AND c.cod_tipo = pcodtipo
|
||||
AND c.cod_sec = pcodsec
|
||||
AND c.status_t IS NULL
|
||||
GROUP BY b.descripcion
|
||||
|
||||
LET idx = 1
|
||||
FOREACH busca_a INTO arr_existencia[idx].*
|
||||
LET idx = idx + 1
|
||||
END FOREACH
|
||||
|
||||
DISPLAY ARRAY arr_existencia TO sexistencia.*
|
||||
CLOSE WINDOW w1
|
||||
|
||||
END FUNCTION
|
||||
{ ESTA FUNCION PARA BUSCAR LAS ORDENES QUE TIENE DISPONIBLES TODAVIA ESTA EN PROCESO DE DESARRLLO
|
||||
FECHA : 27/5/2016}
|
||||
FUNCTION busca_ordenes_reservadas(pcodn, pcodgrupo, pcodtipo, pcodsec)
|
||||
DEFINE
|
||||
pcodn, pcodgrupo, pcodtipo, pcodsec INT,
|
||||
ordenes DYNAMIC ARRAY OF RECORD
|
||||
num_oc INT,
|
||||
fecha DATE,
|
||||
vendedor VARCHAR(100),
|
||||
cantidad DEC(12, 5),
|
||||
cantidad_Desp DEC(12, 5),
|
||||
disponible, pendiente, balance DEC(12, 5),
|
||||
|
||||
codigo VARCHAR(25)
|
||||
END RECORD,
|
||||
i SMALLINT,
|
||||
cantidad_desp1, total_cantidad, total_desp, existencia DEC(12, 5)
|
||||
OPEN WINDOW w2 WITH FORM "ipfmwd017"
|
||||
# BUSCA EXISTENCIA
|
||||
|
||||
SELECT ISNULL(SUM(a.cantidad_2), 0)
|
||||
INTO existencia
|
||||
FROM iptb00006 a
|
||||
WHERE (a.cod_n = pcodn
|
||||
AND a.cod_grupo = pcodgrupo
|
||||
AND a.cod_tipo = pcodtipo
|
||||
AND a.cod_sec = pcodsec)
|
||||
AND a.status_t IS NULL
|
||||
|
||||
DECLARE busca_orden CURSOR FOR
|
||||
SELECT a.num_oc,
|
||||
CONVERT(char(10), b.fecha_oc, 103),
|
||||
c.nom1_emp || ' ' || c.apell1_emp,
|
||||
sum(a.cantidad),
|
||||
'0'
|
||||
FROM prtb00013 a, prtb00012 b, adtb00003 c
|
||||
WHERE a.num_oc = b.num_oc
|
||||
AND b.cerrada = 'N'
|
||||
AND b.sec_vend = c.num_emp
|
||||
AND b.status_t IS NULL
|
||||
AND (a.cod_n = pcodn
|
||||
AND a.cod_grupo = pcodgrupo
|
||||
AND a.cod_tipo = pcodtipo
|
||||
AND a.cod_sec = pcodsec)
|
||||
group by a.num_oc,b.fecha_oc,c.nom1_emp,c.apell1_emp
|
||||
|
||||
UNION SELECT a.num_oc,
|
||||
CONVERT(char(10), b.fecha_oc, 103),
|
||||
c.nom1_emp || ' ' || c.apell1_emp,
|
||||
sum(a.cantidad),
|
||||
'0'
|
||||
FROM prtb00013 a, prtb00012 b, adtb00003 c, intb00003 e
|
||||
WHERE a.num_oc = b.num_oc
|
||||
AND b.cerrada = 'N'
|
||||
AND b.sec_vend = c.num_emp
|
||||
AND b.status_t IS NULL
|
||||
AND (e.cod_n = pcodn
|
||||
AND e.cod_grupo = pcodgrupo
|
||||
AND e.cod_tipo = pcodtipo
|
||||
AND e.cod_sec = pcodsec)
|
||||
AND (a.cod_n = e.cod_n_s
|
||||
AND a.cod_grupo = e.cod_grupo_s
|
||||
AND a.cod_tipo = e.cod_tipo_s
|
||||
AND a.cod_sec = e.cod_sec_s)
|
||||
group by a.num_oc,b.fecha_oc,c.nom1_emp,c.apell1_emp
|
||||
|
||||
|
||||
LET i = 1
|
||||
LET ordenes[i].vendedor = 'EXISTENCIA: '
|
||||
LET ordenes[i].balance = existencia
|
||||
LET i = i + 1
|
||||
LET total_desp = 0
|
||||
LET total_cantidad = 0
|
||||
|
||||
FOREACH busca_orden INTO ordenes[i].*
|
||||
LET ordenes[i].cantidad_Desp = 0
|
||||
SELECT ISNULL(SUM(c.cantidad_2), 0)
|
||||
INTO ordenes[i].cantidad_Desp
|
||||
FROM prtb00012 b, iptb00006 c, iptb00005 d
|
||||
WHERE (b.num_oc = c.num_oc)
|
||||
AND (c.num_oc = ordenes[i].num_oc)
|
||||
AND b.cerrada = 'N'
|
||||
AND b.status_t IS NULL
|
||||
AND (c.cod_n = pcodn
|
||||
AND c.cod_grupo = pcodgrupo
|
||||
AND c.cod_tipo = pcodtipo
|
||||
AND c.cod_sec = pcodsec)
|
||||
AND c.cod_mov = d.cod_mov
|
||||
AND (d.control_despacho = 'SI' OR d.control_devolucion = 'SI')
|
||||
AND c.status_t IS NULL
|
||||
|
||||
LET cantidad_Desp1 = 0
|
||||
SELECT ISNULL(SUM(c.cantidad_2), 0)
|
||||
INTO cantidad_Desp1
|
||||
FROM prtb00012 b, iptb00006 c, iptb00005 d, intb00003 e
|
||||
WHERE (b.num_oc = c.num_oc)
|
||||
AND (c.num_oc = ordenes[i].num_oc)
|
||||
AND b.cerrada = 'N'
|
||||
AND b.status_t IS NULL
|
||||
AND (e.cod_n = pcodn
|
||||
AND e.cod_grupo = pcodgrupo
|
||||
AND e.cod_tipo = pcodtipo
|
||||
AND e.cod_sec = pcodsec)
|
||||
AND (c.cod_n = e.cod_n_s
|
||||
AND c.cod_grupo = e.cod_grupo_s
|
||||
AND c.cod_tipo = e.cod_tipo_s
|
||||
AND c.cod_sec = e.cod_sec_s)
|
||||
AND c.cod_mov = d.cod_mov
|
||||
AND (d.control_despacho = 'SI' OR d.control_devolucion = 'SI')
|
||||
AND c.status_t IS NULL
|
||||
|
||||
LET ordenes[i].cantidad_Desp = ordenes[i].cantidad_Desp + cantidad_desp1
|
||||
|
||||
IF ordenes[i].cantidad > 0 THEN
|
||||
LET total_cantidad = total_cantidad + ordenes[i].cantidad
|
||||
END IF
|
||||
|
||||
LET total_desp = total_desp + ordenes[i].cantidad_Desp
|
||||
|
||||
LET ordenes[i].pendiente =
|
||||
ordenes[i].cantidad + ordenes[i].cantidad_Desp
|
||||
IF ordenes[i - 1].balance IS NOT NULL THEN
|
||||
LET ordenes[i].balance =
|
||||
ordenes[i - 1].balance - ordenes[i].pendiente
|
||||
END IF
|
||||
LET i = i + 1
|
||||
END FOREACH
|
||||
IF i > 1 THEN
|
||||
LET i = i + 1
|
||||
LET ordenes[i].vendedor = "TOTALES=====> "
|
||||
LET ordenes[i].cantidad = total_cantidad
|
||||
LET ordenes[i].cantidad_Desp = total_desp
|
||||
# LET ordenes[i].disponible = total_cantidad + total_desp
|
||||
|
||||
END IF
|
||||
DISPLAY ARRAY ordenes TO sordenes.*
|
||||
|
||||
CLOSE WINDOW w2
|
||||
END FUNCTION
|
||||
@@ -67,3 +67,13 @@ DEFINE numero_msg INT,
|
||||
END IF
|
||||
RETURN
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION usuarioSistema(xuser)
|
||||
DEFINE xuser,nombre,email STRING
|
||||
|
||||
SELECT ISNULL(RTRIM(b.nom1_emp)||' '||RTRIM(b.apell1_emp),' '),a.email INTO nombre,email FROM seg0001 a,adtb00003 b
|
||||
WHERE a.usuario = xuser AND
|
||||
a.num_emp = b.num_emp
|
||||
|
||||
RETURN nombre,email
|
||||
END FUNCTION
|
||||
|
||||
Reference in New Issue
Block a user