This commit is contained in:
Abel López
2026-10-21 16:58:41 -04:00
84 changed files with 50764 additions and 14877 deletions
+2 -2
View File
@@ -54,7 +54,7 @@ FUNCTION prprmt020()
OPEN WINDOW w1 WITH FORM "prfmmt012"
DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM)
INPUT BY NAME prtb09.num_oc
INPUT BY NAME prtb08.num_oc
BEFORE INPUT
LET d_tipos="PDF"
@@ -86,7 +86,7 @@ FUNCTION prprmt020()
AFTER FIELD num_oc
SELECT a.cotizacion_no,b.nombre,a.sec_vend,ISNULL(c.nom1_emp,' ')+ISNULL(c.apell1_emp,' '),
a.tipo_cliente,a.sec_cliente
INTO prtb09.cotizacion_no,nombre_cliente,psec_vend,vendedor,
INTO prtb08.cotizacion_no,nombre_cliente,psec_vend,vendedor,
prtb08.tipo_cliente,prtb08.sec_cliente
FROM prtb00012 a,vetb00004 b,adtb00003 c
WHERE a.num_oc = prtb08.num_oc AND
Binary file not shown.
+57
View File
@@ -0,0 +1,57 @@
Bag Attributes
localKeyID: 15 71 37 CA B9 91 AF C3 2B F7 1C 93 77 95 22 F8
subject=street=CALLE CENTRAL MADREVIEJA NORTE,09010,San Cristobal, CN=JORGE RICARDO SUBERO ISA, serialNumber=IDCDO-01300048665, GN=JORGE RICARDO, SN=SUBERO ISA, C=DO
issuer=organizationIdentifier=VATDO-40102368, CN=digifirma CA Subordinada 1, OU=digifirma, O=Cámara de Comercio y Producción de Santo Domingo, L=Distrito Nacional, C=DO
-----BEGIN CERTIFICATE-----
MIIJgDCCB2igAwIBAgIILvImiGW0S1gwDQYJKoZIhvcNAQELBQAwgbgxFzAVBgNV
BGEMDlZBVERPLTQwMTAyMzY4MSMwIQYDVQQDDBpkaWdpZmlybWEgQ0EgU3Vib3Jk
aW5hZGEgMTESMBAGA1UECwwJZGlnaWZpcm1hMTswOQYDVQQKDDJDw6FtYXJhIGRl
IENvbWVyY2lvIHkgUHJvZHVjY2nDs24gZGUgU2FudG8gRG9taW5nbzEaMBgGA1UE
BwwRRGlzdHJpdG8gTmFjaW9uYWwxCzAJBgNVBAYTAkRPMB4XDTI1MDkwMzE1MDcw
MFoXDTI3MDkwMzE1MDcwMFowgbYxOzA5BgNVBAkMMkNBTExFIENFTlRSQUwgTUFE
UkVWSUVKQSBOT1JURSwwOTAxMCxTYW4gQ3Jpc3RvYmFsMSEwHwYDVQQDDBhKT1JH
RSBSSUNBUkRPIFNVQkVSTyBJU0ExGjAYBgNVBAUTEUlEQ0RPLTAxMzAwMDQ4NjY1
MRYwFAYDVQQqDA1KT1JHRSBSSUNBUkRPMRMwEQYDVQQEDApTVUJFUk8gSVNBMQsw
CQYDVQQGEwJETzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJDFW87A
Vh9FknnJSlXpHVzRnuS5hzcQlpXVweQvVxEAXksq6i2bX7UCrS6RFOyR1fm59daQ
uxyk3Ralk4StBMUXg1fpVe1WWi4+rDccIHtRf+SvC7bhCAITk6kUnWGLs03ZrAIx
WmQQtQCF8KMIVhSqIGnKRR3UzKq0s9Mi/yBSkvLobuSUDJFpV80cdt17eww9BiHE
MnyoedHJ+Dd/11UAFehnhNhzNvIJwdWu2TZO2SAKPmAHc2oZwHkCz0laQAbWwrq2
vEXQ55Hw8mclhE3c/zqUjn/KDlmfXaTK2gilvGPnFjQqIR7PeXD9WfKMQZDDcJr9
w59o+lGL7NNbHJkCAwEAAaOCBIwwggSIMHoGCCsGAQUFBwEDBG4wbDAIBgYEAI5G
AQEwCwYGBACORgEDAgEUMAgGBgQAjkYBBDA0BgYEAI5GAQUwKjAoFiJodHRwczov
L2Rwcy5jYW1hcmFzYW50b2RvbWluZ28uZG8vEwJFTjATBgYEAI5GAQYwCQYHBACO
RgEGATCB3AYIKwYBBQUHAQEEgc8wgcwwSAYIKwYBBQUHMAKGPGh0dHBzOi8vd3d3
LmNhbWFyYXNhbnRvZG9taW5nby5kby9kaWdpZmlybWEvQ0NQU0RfY2FkZW5hLmNy
dDA/BggrBgEFBQcwAYYzaHR0cDovL29jc3AxLmNhbWFyYXNhbnRvZG9taW5nby5k
by9wdWJsaWMvcGtpL29jc3AvMD8GCCsGAQUFBzABhjNodHRwOi8vb2NzcDIuY2Ft
YXJhc2FudG9kb21pbmdvLmRvL3B1YmxpYy9wa2kvb2NzcC8wHQYDVR0OBBYEFFdr
vC9iM4+tPDIWPR+/gnqvDeTdMB8GA1UdIwQYMBaAFM7rpVkdIemjmSWnCkqsx5WQ
BhELMCoGA1UdEgQjMCGBH2RpZ2lmaXJtYUBjYW1hcmFzYW50b2RvbWluZ28uZG8w
ggHZBgNVHSAEggHQMIIBzDAJBgcEAIvsQAEAMIIBvQYLKwYBBAGBzHwBAwEwggGs
MC4GCCsGAQUFBwIBFiJodHRwczovL2Nwcy5jYW1hcmFzYW50b2RvbWluZ28uZG8v
MIIBeAYIKwYBBQUHAgIwggFqHoIBZgBDAGUAcgB0AGkAZgBpAGMAYQBkAG8AIABw
AGEAcgBhACAAcAByAG8AYwBlAGQAaQBtAGkAZQBuAHQAbwBzACAAdAByAGkAYgB1
AHQAYQByAGkAbwBzACAAZQBuACAAcAAxADIAIABlAG0AaQB0AGkAZABvACAAcABv
AHIAIABDAEMAUABTAEQALAAgAHUAYgBpAGMAYQBkAG8AIABBAHYAZQAuACAAMgA3
ACAAZABlACAAZgBlAGIAcgBlAHIAbwAgAGUAcwBxACAAdABpAHIAYQBkAGUAbgB0
AGUAcwAgADIAMgA4ACAAdABvAHIAcgBlACAAZgByAGkAdQBzAGEALAAgAEwAYQAg
AEUAcwBwAGUAcgBpAGwAbABhACwAIABTAGEAbgB0AG8AIABEAG8AbQBpAG4AZwBv
ACwAIABSAGUAcAD6AGIAbABpAGMAYQAgAEQAbwBtAGkAbgBpAGMAYQBuAGEwgY8G
A1UdHwSBhzCBhDBAoD6gPIY6aHR0cDovL2NybDEuY2FtYXJhc2FudG9kb21pbmdv
LmRvL3B1YmxpYy9wa2kvY3JsL0NDUFNELmNybDBAoD6gPIY6aHR0cDovL2NybDIu
Y2FtYXJhc2FudG9kb21pbmdvLmRvL3B1YmxpYy9wa2kvY3JsL0NDUFNELmNybDAO
BgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMCEG
A1UdEQQaMBiBFmpzb3RvQG1hcm1vdGVjaC5jb20uZG8wDQYJKoZIhvcNAQELBQAD
ggIBAIiGfGfXGgO5zHP5BkVKAUHMkKrUP7G3ohexFPp53Io1WbdL3L7oE8EtArLQ
yySdWr+0Yxb/6VE74krBUb+RhpghKlIhOTqsJvOL8Bdo3prI23hZWi2A4wHZn99W
3pISBU2PE8QTodoaR0yOpIgqyYCIZmgHGSExFymDHp8iwfqxSS3HWnXgK5eI5iU/
Zisl9bPBhHrFR1j9WjnZTx7IxocGmvd/efn26dJ3MgTP/TUx0P7jatukcTUazl6N
9Ht/rHFBSan9vzG+rgSPRvT/flIRhSJyUvVuBGv1+NJWy5R1HoazlVO0cR4QB+U3
nvg6E1j0ceccybWjIowA38pU/YpI81UVXSl0dbtwrFPrRmMzfnvMATX8H1NrOb98
cLlIss9U1yWQxdyTes4mItBTYjA0K0ESUFGKL3ZputaM7KDW85kWkjXQj/TJP4DC
lyzO4SjVx9ZFqSkz+yFzlvbfTU7clVshJHYxlmuO+nou19+2l7SPHz2UaikU4JAm
dn9bNIypte31BF30rahUywK6ePT1nQ5xL1tSIe2m9BtyG/45yiHobm7kljEeBl4E
zkY2mFEp84cH4s28BbRF/S2p8xkGFqNtDKa+DwcWd97IG+62en+/2vE75a9KRUxn
eW8Ipl6P/e5moXyLYLZS0lMGShBom8cTYdLFFRAPbksXIa5U
-----END CERTIFICATE-----
+31
View File
@@ -0,0 +1,31 @@
Bag Attributes
localKeyID: 15 71 37 CA B9 91 AF C3 2B F7 1C 93 77 95 22 F8
Key Attributes: <No Attributes>
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCQxVvOwFYfRZJ5
yUpV6R1c0Z7kuYc3EJaV1cHkL1cRAF5LKuotm1+1Aq0ukRTskdX5ufXWkLscpN0W
pZOErQTFF4NX6VXtVlouPqw3HCB7UX/krwu24QgCE5OpFJ1hi7NN2awCMVpkELUA
hfCjCFYUqiBpykUd1MyqtLPTIv8gUpLy6G7klAyRaVfNHHbde3sMPQYhxDJ8qHnR
yfg3f9dVABXoZ4TYczbyCcHVrtk2TtkgCj5gB3NqGcB5As9JWkAG1sK6trxF0OeR
8PJnJYRN3P86lI5/yg5Zn12kytoIpbxj5xY0KiEez3lw/VnyjEGQw3Ca/cOfaPpR
i+zTWxyZAgMBAAECggEAY5w4CDEU0N2I5F0Y1bXZKzVcU9pH7B5wzlXO3Beqm5sa
RjQX/xtqJdzaljDjKcdKaFKIkYLyC8pwCRYSQ3bc0lPUXpfBNNV2pV0gF6c1vkQc
cJf0wndhkDQyJGN3yldaHxXHoZadsD5CnEKMiVDCEePg+4leNyFlVYuSM5Nf4beE
u9qH6goOzjX5be7+ZWey1csntfTsoKa2rkpObdKz/l3W/tER0cEjdfPy/ksHqPDK
S4Y6w3tJTw1rMD7Gnd8hjLSR6Zr8zo67Q/Jb0QhoEJfSCYRrWSbiN2lkuwEdcT6y
SGXbQc2VEkvCn2B8QbxXYEBZQAsSekGGsbNRSKJENQKBgQDWxyRz3H2ubOTUIAya
UOoNBW1K2IlH7LwwxmufCkVwOhwKOnTBdch1nv1tCUhgHKCvb6J1EFCbWR42O8X5
hiqV+26nSPslxn96oMvkAIDINRBmHjVbzYQN7lCPAD3YelHi/qxCUfD8wmyIgZPe
zxBiyVivjNXVi5X0Mzc57T4E2wKBgQCsjoG/HJUCSliEuJzRWIZqLLk661ONQrNL
0JlEeKpaBNAzsDgCcsGdqPVPiMp4gpMXw7dTzqe4pC/mJ36Mgxkj/DDzO2LLeTTW
Hmktg+WIg6TZRx5GW9q9tIopOxwf6OCcfYhszMDMY2vjiU1V87ULUwIsIUH9qMxt
ZWFhtcxEmwKBgQCJ0prCup/v+TLSKIrNz9SRbIUYvWFCxVhyGDHhic7LWI67xY08
w99SEyde+9D01AoM6h8e7cw8E/D+Llc5au4S9pioQn3fXMRbJaoQ8n2xe9O9I+9r
rLLr2ZzaVvZY3w2DE5foqvpwyDarVjNUjB1gtwHxDPf/I6ajYOY0htgAdwKBgE6r
nf26kzj7GkZQQLa1DHslrsFs/qe9jC75iJcOCGSII0AdjDuZhCpUGJtNOzocFeHU
yiU8Z30n5eqhgPGg53pfhRWvsogf13XzYXJt2t0VX7fr06KySBULVZ4co+LsclMG
bIdmBlRo04xmUcrpFFZ4Xtotw39ZUPJjMTWyA9IXAoGBANX8VzucIKR0Sdy2ZeG4
R7XwBmHSIwLe5hOfO7Sl5ONGSC7Xj1P1iur8u8r13qI1d4o4i+pxMSjZuxz1ssdT
3wgzv5ZcjVK5mtA5DjwKUDGO4I+BvGZ/EfbUvPdZ4voDjCsEiYVkyGaftqgImuZq
/JMU8IoWP0sj4dMKbqK5V27A
-----END PRIVATE KEY-----
+28
View File
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCQxVvOwFYfRZJ5
yUpV6R1c0Z7kuYc3EJaV1cHkL1cRAF5LKuotm1+1Aq0ukRTskdX5ufXWkLscpN0W
pZOErQTFF4NX6VXtVlouPqw3HCB7UX/krwu24QgCE5OpFJ1hi7NN2awCMVpkELUA
hfCjCFYUqiBpykUd1MyqtLPTIv8gUpLy6G7klAyRaVfNHHbde3sMPQYhxDJ8qHnR
yfg3f9dVABXoZ4TYczbyCcHVrtk2TtkgCj5gB3NqGcB5As9JWkAG1sK6trxF0OeR
8PJnJYRN3P86lI5/yg5Zn12kytoIpbxj5xY0KiEez3lw/VnyjEGQw3Ca/cOfaPpR
i+zTWxyZAgMBAAECggEAY5w4CDEU0N2I5F0Y1bXZKzVcU9pH7B5wzlXO3Beqm5sa
RjQX/xtqJdzaljDjKcdKaFKIkYLyC8pwCRYSQ3bc0lPUXpfBNNV2pV0gF6c1vkQc
cJf0wndhkDQyJGN3yldaHxXHoZadsD5CnEKMiVDCEePg+4leNyFlVYuSM5Nf4beE
u9qH6goOzjX5be7+ZWey1csntfTsoKa2rkpObdKz/l3W/tER0cEjdfPy/ksHqPDK
S4Y6w3tJTw1rMD7Gnd8hjLSR6Zr8zo67Q/Jb0QhoEJfSCYRrWSbiN2lkuwEdcT6y
SGXbQc2VEkvCn2B8QbxXYEBZQAsSekGGsbNRSKJENQKBgQDWxyRz3H2ubOTUIAya
UOoNBW1K2IlH7LwwxmufCkVwOhwKOnTBdch1nv1tCUhgHKCvb6J1EFCbWR42O8X5
hiqV+26nSPslxn96oMvkAIDINRBmHjVbzYQN7lCPAD3YelHi/qxCUfD8wmyIgZPe
zxBiyVivjNXVi5X0Mzc57T4E2wKBgQCsjoG/HJUCSliEuJzRWIZqLLk661ONQrNL
0JlEeKpaBNAzsDgCcsGdqPVPiMp4gpMXw7dTzqe4pC/mJ36Mgxkj/DDzO2LLeTTW
Hmktg+WIg6TZRx5GW9q9tIopOxwf6OCcfYhszMDMY2vjiU1V87ULUwIsIUH9qMxt
ZWFhtcxEmwKBgQCJ0prCup/v+TLSKIrNz9SRbIUYvWFCxVhyGDHhic7LWI67xY08
w99SEyde+9D01AoM6h8e7cw8E/D+Llc5au4S9pioQn3fXMRbJaoQ8n2xe9O9I+9r
rLLr2ZzaVvZY3w2DE5foqvpwyDarVjNUjB1gtwHxDPf/I6ajYOY0htgAdwKBgE6r
nf26kzj7GkZQQLa1DHslrsFs/qe9jC75iJcOCGSII0AdjDuZhCpUGJtNOzocFeHU
yiU8Z30n5eqhgPGg53pfhRWvsogf13XzYXJt2t0VX7fr06KySBULVZ4co+LsclMG
bIdmBlRo04xmUcrpFFZ4Xtotw39ZUPJjMTWyA9IXAoGBANX8VzucIKR0Sdy2ZeG4
R7XwBmHSIwLe5hOfO7Sl5ONGSC7Xj1P1iur8u8r13qI1d4o4i+pxMSjZuxz1ssdT
3wgzv5ZcjVK5mtA5DjwKUDGO4I+BvGZ/EfbUvPdZ4voDjCsEiYVkyGaftqgImuZq
/JMU8IoWP0sj4dMKbqK5V27A
-----END PRIVATE KEY-----
@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="windows-1252"?>
<ECF xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Encabezado>
<Version>1.0</Version>
<IdDoc>
<TipoeCF>32</TipoeCF>
<eNCF>E320000009749</eNCF>
<TipoIngresos>01</TipoIngresos>
<TipoPago>1</TipoPago>
</IdDoc>
<Emisor>
<RNCEmisor>101521262</RNCEmisor>
<RazonSocialEmisor>MARMOTECH S A</RazonSocialEmisor>
<NombreComercial>MARMOTECH S A</NombreComercial>
<DireccionEmisor>ROBERTO PASTORIZA NO.101, ESQ. LUIS ALBERTI, SD</DireccionEmisor>
<Municipio>210101</Municipio>
<Provincia>210000</Provincia>
<CorreoEmisor>rsubero@marmotech.com.do</CorreoEmisor>
<CodigoVendedor>3930</CodigoVendedor>
<NumeroFacturaInterna>220596</NumeroFacturaInterna>
<FechaEmision>19-10-2026</FechaEmision>
</Emisor>
<Comprador>
<RNCComprador>132532066</RNCComprador>
<RazonSocialComprador>FIDEICOMISO%20%3BDE%20%3BDESARROLLO%20%3BINMO</RazonSocialComprador>
</Comprador>
<Totales>
<MontoGravadoTotal>400.00</MontoGravadoTotal>
<MontoGravadoI1>400.00</MontoGravadoI1>
<TotalITBIS>72.00</TotalITBIS>
<TotalITBIS1>72.00</TotalITBIS1>
<MontoTotal>472.00</MontoTotal>
</Totales>
</Encabezado>
<DetallesItems>
<Item>
<NumeroLinea>1</NumeroLinea>
<IndicadorFacturacion>1</IndicadorFacturacion>
<NombreItem>LOSAS CORALINA GOLDEN RUSTICO 20.3X30.5X2</NombreItem>
<IndicadorBienoServicio>2</IndicadorBienoServicio>
<CantidadItem>01.00</CantidadItem>
<PrecioUnitarioItem>400.0000</PrecioUnitarioItem>
<MontoItem>400.00</MontoItem>
</Item>
</DetallesItems>
<FechaHoraFirma>19-10-2026 11:28:17</FechaHoraFirma>
<dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
<dsig:SignedInfo>
<dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<dsig:Reference URI="">
<dsig:Transforms>
<dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<dsig:DigestValue>tA9RkpKq89aSfSmebmdy6Zgeh0L60Hi5ilVJwenHsg0=</dsig:DigestValue>
</dsig:Reference>
</dsig:SignedInfo>
<dsig:SignatureValue>eksMmJnTMn1J8kzXcoK/kEgzQWz+6vYhEsbikAelkurAuwcrH2daD2HbPtYqMTwo+dEY0C5/4m1vkU7Twjvw1PZVfZajx7eVOPIwN6uuow9pASbcC8soV7Uzgy9BF5btpFiLgVQKS8BlV2G8rjNS7sn5EAbKNfSGC3ItwP/MVbRoKaT3C5N1Uehe1OexCJnZ0K+fZUwCDZYbaWee7EtjFjOxZp9HMrn7fTWtLeNCZkHFf7W6FxCmWvbtiVSSnb4rbjYKVawds/hg47/MUrhy2MBzzoISPnxijYk0dDQ0sPhgYTPzR50FDFIxbrCHUbD2kTRsTg431nGKcJKJkr0JYg==</dsig:SignatureValue>
<dsig:KeyInfo>
<dsig:X509Data>
<dsig:X509Certificate>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</dsig:X509Certificate>
</dsig:X509Data>
</dsig:KeyInfo>
</dsig:Signature>
</ECF>
@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="windows-1252"?>
<RFCE xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Encabezado xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Version>1.0</Version>
<IdDoc>
<TipoeCF>32</TipoeCF>
<eNCF>E320000009750</eNCF>
<TipoIngresos>01</TipoIngresos>
<TipoPago>1</TipoPago>
<TablaFormasPago>
<FormaDePago>
<FormaPago>1</FormaPago>
<MontoPago>1528.28</MontoPago>
</FormaDePago>
</TablaFormasPago>
</IdDoc>
<Emisor>
<RNCEmisor>101521262</RNCEmisor>
<RazonSocialEmisor>MARMOTECH S A</RazonSocialEmisor>
<FechaEmision>19-10-2026</FechaEmision>
</Emisor>
<Comprador>
<RNCComprador>133051354</RNCComprador>
<RazonSocialComprador>FID%20%3BINM%20%3BVIN%20%3BY%20%3BDE%20%3BGTIA%20%3BLA%20%3BMARQU</RazonSocialComprador>
</Comprador>
<Totales>
<MontoGravadoTotal>1295.15</MontoGravadoTotal>
<MontoGravadoI1>1295.15</MontoGravadoI1>
<MontoExento>0</MontoExento>
<TotalITBIS>233.13</TotalITBIS>
<TotalITBIS1>233.13</TotalITBIS1>
<MontoTotal>1528.28</MontoTotal>
</Totales>
<CodigoSeguridadeCF>FqZpkp</CodigoSeguridadeCF>
</Encabezado>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<DigestValue>gIj+isIw9ln3PzfWAq5ThZQzx92KmyGVhN68bdSF+GI=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>VOZlXPd+9CiWD2Wd2xO/ifX7YijorJsdqyZda/QFkut+gasKO5jR9zX//yKoYLIzyhQ2QShk62TBcUfcWn4ze0r/OuLb8S4CSBngrScOL0gml/NHG6G3aCjsyQOsxBlijWnSjCkCMTrA5d4Whyc3JolBCUnB99DCiCCkhchx9awUExVivyELkJFxUPzLlhc+vbOYHySPr+vinXV4gnfa2smy0ixU0qqzsfGAXKiq3ZiDJUnB1YNrei80RMCglMUbpn+btDkH831IZs736Xza+lO2E3FJhqmc3hSTysXF28vrLqBYCTpRnpjlNWtiyiwt4PGx9IAFDsM3HrLLIKaBVw==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>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</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</RFCE>
@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="windows-1252"?>
<RFCE xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Encabezado xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Version>1.0</Version>
<IdDoc>
<TipoeCF>32</TipoeCF>
<eNCF>E320000009751</eNCF>
<TipoIngresos>01</TipoIngresos>
<TipoPago>1</TipoPago>
<TablaFormasPago>
<FormaDePago>
<FormaPago>1</FormaPago>
<MontoPago>1528.28</MontoPago>
</FormaDePago>
</TablaFormasPago>
</IdDoc>
<Emisor>
<RNCEmisor>101521262</RNCEmisor>
<RazonSocialEmisor>MARMOTECH S A</RazonSocialEmisor>
<FechaEmision>19-10-2026</FechaEmision>
</Emisor>
<Comprador>
<RNCComprador>133051354</RNCComprador>
<RazonSocialComprador>FID%20%3BINM%20%3BVIN%20%3BY%20%3BDE%20%3BGTIA%20%3BLA%20%3BMARQU</RazonSocialComprador>
</Comprador>
<Totales>
<MontoGravadoTotal>1295.15</MontoGravadoTotal>
<MontoGravadoI1>1295.15</MontoGravadoI1>
<MontoExento>0</MontoExento>
<TotalITBIS>233.13</TotalITBIS>
<TotalITBIS1>233.13</TotalITBIS1>
<MontoTotal>1528.28</MontoTotal>
</Totales>
<CodigoSeguridadeCF>h7lu7g</CodigoSeguridadeCF>
</Encabezado>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<DigestValue>GteE1eLXKXKJCiBVx2bIOu97FAO7fc9sJg5sq9RN15A=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>eeFiSnOwhoBK+eeO+qBMQg2xA9b0DIEQ57hruuRqsTpgywB0GIPQDx0gfF8w3LDGASYvLyLr2b4YEHYOANDzPNdzeSY7Ze+MpRSf0pKA5r+sutUFDmnOpChWcQs8SDMSb/XV66SmcsXRDu2LT/8Skz+J1tW9jLNUDASvx1NezE2GLiPW+2a7BLBbsSokunY+FE17+BdvRauEei7Saw+Z+bLBEExPlxZd7XNxpw4O8a+laQQpIk8wutIjBbTue+IW0qJPG/znUk0IEhu+Ph4nKgk0k564aV2bN2i+orMjpMUOqgud0qa40vY7nYKQAo4akIqU3JsGSSU9HYjhz+MZRA==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>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</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</RFCE>
@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="windows-1252"?>
<RFCE xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Encabezado xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Version>1.0</Version>
<IdDoc>
<TipoeCF>32</TipoeCF>
<eNCF>E320000009752</eNCF>
<TipoIngresos>01</TipoIngresos>
<TipoPago>1</TipoPago>
<TablaFormasPago>
<FormaDePago>
<FormaPago>1</FormaPago>
<MontoPago>1528.28</MontoPago>
</FormaDePago>
</TablaFormasPago>
</IdDoc>
<Emisor>
<RNCEmisor>101521262</RNCEmisor>
<RazonSocialEmisor>MARMOTECH S A</RazonSocialEmisor>
<FechaEmision>19-10-2026</FechaEmision>
</Emisor>
<Comprador>
<RNCComprador>133051354</RNCComprador>
<RazonSocialComprador>FID INM VIN Y DE GTIA LA MARQU</RazonSocialComprador>
</Comprador>
<Totales>
<MontoGravadoTotal>1295.15</MontoGravadoTotal>
<MontoGravadoI1>1295.15</MontoGravadoI1>
<MontoExento>0</MontoExento>
<TotalITBIS>233.13</TotalITBIS>
<TotalITBIS1>233.13</TotalITBIS1>
<MontoTotal>1528.28</MontoTotal>
</Totales>
<CodigoSeguridadeCF>al4mMT</CodigoSeguridadeCF>
</Encabezado>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<DigestValue>r7LprleaH9UZlFqF9HpRtEr1LyTbAgI3yl7P3hrQFBE=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>GbA5Wk7XewsA0VeUKFDt7vwdV+eBjsj3Sh+UGJxcEeGB7xEchtkOR0HxGKJ7T5/Jq0sbI/xjPTzDVkYrDd0GU3ExCebnpVKXC5arGo82thpzdB6OwQidfJJLRiibZx1nSmFx+IWD4VXtJqiszRTo1WjXqw6pUuH/0nTBDHTnY1Zwp867IzQN11k7sYrSyHmbhj+uI0d29pJV4nAv05pDKrncH+m6YQFF2ezRcPswLOhqqrE+euTqy/fuClrr+YZZsHPKJCNaZ2n2FoLuikMIWHXYGla4O1TaxWEZekzVhczf+ipCzAeLcW5HkPrGlRQC4IfJlyFjV79xMI9MvY/XNQ==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>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</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</RFCE>
@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<RFCE xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Encabezado xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Version>1.0</Version>
<IdDoc>
<TipoeCF>32</TipoeCF>
<eNCF>E320000009753</eNCF>
<TipoIngresos>01</TipoIngresos>
<TipoPago>1</TipoPago>
<TablaFormasPago>
<FormaDePago>
<FormaPago>1</FormaPago>
<MontoPago>1528.28</MontoPago>
</FormaDePago>
</TablaFormasPago>
</IdDoc>
<Emisor>
<RNCEmisor>101521262</RNCEmisor>
<RazonSocialEmisor>MARMOTECH S A</RazonSocialEmisor>
<FechaEmision>19-10-2026</FechaEmision>
</Emisor>
<Comprador>
<RNCComprador>133051354</RNCComprador>
<RazonSocialComprador>FID INM VIN Y DE GTIA LA MARQU</RazonSocialComprador>
</Comprador>
<Totales>
<MontoGravadoTotal>1295.15</MontoGravadoTotal>
<MontoGravadoI1>1295.15</MontoGravadoI1>
<MontoExento>0</MontoExento>
<TotalITBIS>233.13</TotalITBIS>
<TotalITBIS1>233.13</TotalITBIS1>
<MontoTotal>1528.28</MontoTotal>
</Totales>
<CodigoSeguridadeCF>bbSu1R</CodigoSeguridadeCF>
</Encabezado>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<DigestValue>DgM5WOJQHmlty0pqjiIGF4+fS8Vn0RC1l5yepnvO15g=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>OxtOxcxPLORZJSKGVUoxZdv30hKWBGnS4b9gB+JQjcNNgmJi6qU6APLxZanf74XC7416h26OgQHbiNWWtde+WKV3UUsXInHEqqwu/q95hl1S72Nbh0qNL9KspQIwpisrSMMDEOShfiNhcn8kDBygQwBpLz7DZnsAOr+AcgFpN2K00JQ0uGwBqYZqtwPHdIiuXoZJ/jWimreeg+PDpE7IIRPxMr5VfpqoBEzZZF0yGECyHq5O/bDrL1ZEfpEFfZ1V9m6Swlx7OcBWVHYreTMNFxIvxy+9ctKPIW09+ikQPiVdcu0CvT+sYNzIQevbfW9lXS5QVjUU7rSwZhruLVeXSA==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>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</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</RFCE>
@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<RFCE xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Encabezado xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Version>1.0</Version>
<IdDoc>
<TipoeCF>32</TipoeCF>
<eNCF>E320000009754</eNCF>
<TipoIngresos>01</TipoIngresos>
<TipoPago>1</TipoPago>
<TablaFormasPago>
<FormaDePago>
<FormaPago>1</FormaPago>
<MontoPago>1528.28</MontoPago>
</FormaDePago>
</TablaFormasPago>
</IdDoc>
<Emisor>
<RNCEmisor>101521262</RNCEmisor>
<RazonSocialEmisor>MARMOTECH S A</RazonSocialEmisor>
<FechaEmision>19-10-2026</FechaEmision>
</Emisor>
<Comprador>
<RNCComprador>133051354</RNCComprador>
<RazonSocialComprador>FID INM VIN Y DE GTIA LA MARQU</RazonSocialComprador>
</Comprador>
<Totales>
<MontoGravadoTotal>1295.15</MontoGravadoTotal>
<MontoGravadoI1>1295.15</MontoGravadoI1>
<MontoExento>0</MontoExento>
<TotalITBIS>233.13</TotalITBIS>
<TotalITBIS1>233.13</TotalITBIS1>
<MontoTotal>1528.28</MontoTotal>
</Totales>
<CodigoSeguridadeCF>Q38sms</CodigoSeguridadeCF>
</Encabezado>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<DigestValue>RPbs03AMJHfRzJk/Mj9jNtGAUYsGf6iDLJaU7h8MaYM=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>ZLQASJyIyO8pce8z599OP9aAFGT8vMU6hNrJ2dWilzZrjPK57SJn+l6x0Ht5hl1DTFzL4TBPaPP5cna7nXGI+az1qO63SUQ8dPfe6El7k/vKtQZlv8byoI9ONKej1wxN8rY1pHpHhSh9HXJUe07wflEJwP3UWAMDWYbBdaqBUJzCcK8W9cvrpnvHlFRgb+nmScA+nN4R06MzyqmUptKbGhcZT0JF0j4S1LD6ETCc8gKLceF+pPOzWuquWj2bZtJ0epS0vYwMWJ/GbaacUjGZTJWkBfOImC7ZN/vAwbkZUCG/Rzxd2n635LZq5zKoyy2u03Zu9ezWO7140N/N78Y3+Q==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>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</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</RFCE>
@@ -0,0 +1,36 @@
<?xml version='1.0' encoding='windows-1252'?>
<RFCE xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Encabezado xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Version>1.0</Version>
<IdDoc>
<TipoeCF>32</TipoeCF>
<eNCF>E320000009749</eNCF>
<TipoIngresos>01</TipoIngresos>
<TipoPago>1</TipoPago>
<TablaFormasPago>
<FormaDePago>
<FormaPago>1</FormaPago>
<MontoPago>472.00</MontoPago>
</FormaDePago>
</TablaFormasPago>
</IdDoc>
<Emisor>
<RNCEmisor>101521262</RNCEmisor>
<RazonSocialEmisor>MARMOTECH S A</RazonSocialEmisor>
<FechaEmision>19-10-2026</FechaEmision>
</Emisor>
<Comprador>
<RNCComprador>132532066</RNCComprador>
<RazonSocialComprador>FIDEICOMISO%20%3BDE%20%3BDESARROLLO%20%3BINMO</RazonSocialComprador>
</Comprador>
<Totales>
<MontoGravadoTotal>400.00</MontoGravadoTotal>
<MontoGravadoI1>400.00</MontoGravadoI1>
<MontoExento>0</MontoExento>
<TotalITBIS>72.00</TotalITBIS>
<TotalITBIS1>72.00</TotalITBIS1>
<MontoTotal>472.00</MontoTotal>
</Totales>
<CodigoSeguridadeCF></CodigoSeguridadeCF>
</Encabezado>
</RFCE>
@@ -0,0 +1,36 @@
<?xml version='1.0' encoding='windows-1252'?>
<RFCE xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Encabezado xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Version>1.0</Version>
<IdDoc>
<TipoeCF>32</TipoeCF>
<eNCF>E320000009750</eNCF>
<TipoIngresos>01</TipoIngresos>
<TipoPago>1</TipoPago>
<TablaFormasPago>
<FormaDePago>
<FormaPago>1</FormaPago>
<MontoPago>1528.28</MontoPago>
</FormaDePago>
</TablaFormasPago>
</IdDoc>
<Emisor>
<RNCEmisor>101521262</RNCEmisor>
<RazonSocialEmisor>MARMOTECH S A</RazonSocialEmisor>
<FechaEmision>19-10-2026</FechaEmision>
</Emisor>
<Comprador>
<RNCComprador>133051354</RNCComprador>
<RazonSocialComprador>FID%20%3BINM%20%3BVIN%20%3BY%20%3BDE%20%3BGTIA%20%3BLA%20%3BMARQU</RazonSocialComprador>
</Comprador>
<Totales>
<MontoGravadoTotal>1295.15</MontoGravadoTotal>
<MontoGravadoI1>1295.15</MontoGravadoI1>
<MontoExento>0</MontoExento>
<TotalITBIS>233.13</TotalITBIS>
<TotalITBIS1>233.13</TotalITBIS1>
<MontoTotal>1528.28</MontoTotal>
</Totales>
<CodigoSeguridadeCF>FqZpkp</CodigoSeguridadeCF>
</Encabezado>
</RFCE>
@@ -0,0 +1,36 @@
<?xml version='1.0' encoding='windows-1252'?>
<RFCE xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Encabezado xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Version>1.0</Version>
<IdDoc>
<TipoeCF>32</TipoeCF>
<eNCF>E320000009751</eNCF>
<TipoIngresos>01</TipoIngresos>
<TipoPago>1</TipoPago>
<TablaFormasPago>
<FormaDePago>
<FormaPago>1</FormaPago>
<MontoPago>1528.28</MontoPago>
</FormaDePago>
</TablaFormasPago>
</IdDoc>
<Emisor>
<RNCEmisor>101521262</RNCEmisor>
<RazonSocialEmisor>MARMOTECH S A</RazonSocialEmisor>
<FechaEmision>19-10-2026</FechaEmision>
</Emisor>
<Comprador>
<RNCComprador>133051354</RNCComprador>
<RazonSocialComprador>FID%20%3BINM%20%3BVIN%20%3BY%20%3BDE%20%3BGTIA%20%3BLA%20%3BMARQU</RazonSocialComprador>
</Comprador>
<Totales>
<MontoGravadoTotal>1295.15</MontoGravadoTotal>
<MontoGravadoI1>1295.15</MontoGravadoI1>
<MontoExento>0</MontoExento>
<TotalITBIS>233.13</TotalITBIS>
<TotalITBIS1>233.13</TotalITBIS1>
<MontoTotal>1528.28</MontoTotal>
</Totales>
<CodigoSeguridadeCF>h7lu7g</CodigoSeguridadeCF>
</Encabezado>
</RFCE>
@@ -0,0 +1,36 @@
<?xml version='1.0' encoding='windows-1252'?>
<RFCE xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Encabezado xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Version>1.0</Version>
<IdDoc>
<TipoeCF>32</TipoeCF>
<eNCF>E320000009752</eNCF>
<TipoIngresos>01</TipoIngresos>
<TipoPago>1</TipoPago>
<TablaFormasPago>
<FormaDePago>
<FormaPago>1</FormaPago>
<MontoPago>1528.28</MontoPago>
</FormaDePago>
</TablaFormasPago>
</IdDoc>
<Emisor>
<RNCEmisor>101521262</RNCEmisor>
<RazonSocialEmisor>MARMOTECH S A</RazonSocialEmisor>
<FechaEmision>19-10-2026</FechaEmision>
</Emisor>
<Comprador>
<RNCComprador>133051354</RNCComprador>
<RazonSocialComprador>FID INM VIN Y DE GTIA LA MARQU</RazonSocialComprador>
</Comprador>
<Totales>
<MontoGravadoTotal>1295.15</MontoGravadoTotal>
<MontoGravadoI1>1295.15</MontoGravadoI1>
<MontoExento>0</MontoExento>
<TotalITBIS>233.13</TotalITBIS>
<TotalITBIS1>233.13</TotalITBIS1>
<MontoTotal>1528.28</MontoTotal>
</Totales>
<CodigoSeguridadeCF>al4mMT</CodigoSeguridadeCF>
</Encabezado>
</RFCE>
@@ -0,0 +1,36 @@
<?xml version='1.0' encoding='windows-1252'?>
<RFCE xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Encabezado xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Version>1.0</Version>
<IdDoc>
<TipoeCF>32</TipoeCF>
<eNCF>E320000009753</eNCF>
<TipoIngresos>01</TipoIngresos>
<TipoPago>1</TipoPago>
<TablaFormasPago>
<FormaDePago>
<FormaPago>1</FormaPago>
<MontoPago>1528.28</MontoPago>
</FormaDePago>
</TablaFormasPago>
</IdDoc>
<Emisor>
<RNCEmisor>101521262</RNCEmisor>
<RazonSocialEmisor>MARMOTECH S A</RazonSocialEmisor>
<FechaEmision>19-10-2026</FechaEmision>
</Emisor>
<Comprador>
<RNCComprador>133051354</RNCComprador>
<RazonSocialComprador>FID INM VIN Y DE GTIA LA MARQU</RazonSocialComprador>
</Comprador>
<Totales>
<MontoGravadoTotal>1295.15</MontoGravadoTotal>
<MontoGravadoI1>1295.15</MontoGravadoI1>
<MontoExento>0</MontoExento>
<TotalITBIS>233.13</TotalITBIS>
<TotalITBIS1>233.13</TotalITBIS1>
<MontoTotal>1528.28</MontoTotal>
</Totales>
<CodigoSeguridadeCF>bbSu1R</CodigoSeguridadeCF>
</Encabezado>
</RFCE>
@@ -0,0 +1,36 @@
<?xml version='1.0' encoding='windows-1252'?>
<RFCE xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Encabezado xmlns:xs="http://www.w3.org/2001/XMLSchema">
<Version>1.0</Version>
<IdDoc>
<TipoeCF>32</TipoeCF>
<eNCF>E320000009754</eNCF>
<TipoIngresos>01</TipoIngresos>
<TipoPago>1</TipoPago>
<TablaFormasPago>
<FormaDePago>
<FormaPago>1</FormaPago>
<MontoPago>1528.28</MontoPago>
</FormaDePago>
</TablaFormasPago>
</IdDoc>
<Emisor>
<RNCEmisor>101521262</RNCEmisor>
<RazonSocialEmisor>MARMOTECH S A</RazonSocialEmisor>
<FechaEmision>19-10-2026</FechaEmision>
</Emisor>
<Comprador>
<RNCComprador>133051354</RNCComprador>
<RazonSocialComprador>FID INM VIN Y DE GTIA LA MARQU</RazonSocialComprador>
</Comprador>
<Totales>
<MontoGravadoTotal>1295.15</MontoGravadoTotal>
<MontoGravadoI1>1295.15</MontoGravadoI1>
<MontoExento>0</MontoExento>
<TotalITBIS>233.13</TotalITBIS>
<TotalITBIS1>233.13</TotalITBIS1>
<MontoTotal>1528.28</MontoTotal>
</Totales>
<CodigoSeguridadeCF>Q38sms</CodigoSeguridadeCF>
</Encabezado>
</RFCE>
+32 -31
View File
@@ -1,6 +1,6 @@
<?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="60003" version="7.00">
<report:Settings RWPageWidth="a4width" RWPageLength="a4length" RWLeftMargin="1.3cm" RWTopMargin="1.3cm" RWRightMargin="1.3cm" RWBottomMargin="1.3cm">
<report:Settings RWPageWidth="a4length" RWPageLength="a4width" RWLeftMargin="1.3cm" RWTopMargin="1.3cm" RWRightMargin="1.3cm" RWBottomMargin="1.3cm">
<report:FormatList>
<report:Format-SVG/>
<report:Format-PDF/>
@@ -12,56 +12,57 @@
<rtl:stylesheet>
<PXML>
<rtl:match name="Report" nameConstraint="Report" minOccurs="1" maxOccurs="1">
<MINIPAGE name="page root" width="max" length="max" alignment="near" fontName="Arial">
<LAYOUTNODE name="header" width="min" length="min" port="firstPageHeader">
<WORDBOX name="Title" width="200" length="14" alignment="near" fontSize="15" fontBold="true" text="Operaciones Por Movimientos Al Standard"/>
<MINIPAGE name="page root" width="max" length="max" alignment="near" fontName="Arial" fontSize="8">
<LAYOUTNODE name="header" width="min" length="min" alignment="center" port="firstPageHeader">
<WORDBOX name="Title" width="686" length="24" alignment="near" fontSize="15" fontBold="true" textAlignment="center" text="Operaciones Por Movimientos Al Standard"/>
<LAYOUTNODE name="espacio titulo" width="686" length="8"/>
</LAYOUTNODE>
<rtl:match name="Group cod_mov" nameConstraint="Group" minOccurs="0" maxOccurs="unbounded">
<MINIPAGE name="grupo header" width="min" length="12" layoutDirection="leftToRight" bgColor="#cccccc" fontBold="true">
<MINIPAGE name="grupo header" width="min" length="max" layoutDirection="leftToRight" bgColor="#cccccc" fontBold="true">
<rtl:input-variable name="x.cod_mov" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="cod_mov Value" width="30" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{x.cod_mov}}"/>
<WORDWRAPBOX name="cod_mov Value" width="40" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{x.cod_mov}}"/>
<rtl:input-variable name="x.descrip_mov" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="descrip_mov Value" width="150" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{x.descrip_mov}}"/>
<WORDWRAPBOX name="descrip_mov Value" width="300" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{x.descrip_mov}}"/>
</MINIPAGE>
<MINIPAGE name="encabezado" width="min" length="12" bgColor="#eeeeee" fontBold="true" layoutDirection="leftToRight">
<WORDBOX name="h1" width="18" length="12" alignment="baseline" text="Docto."/>
<WORDBOX name="h2" width="14" length="12" alignment="baseline" text="Orden"/>
<WORDBOX name="h3" width="16" length="12" alignment="baseline" text="Fecha"/>
<WORDBOX name="h4" width="30" length="12" alignment="baseline" text="Proveedor"/>
<WORDBOX name="h5" width="18" length="12" alignment="baseline" text="Producto"/>
<WORDBOX name="h6" width="60" length="12" alignment="baseline" text="Descripcion"/>
<WORDBOX name="h7" width="20" length="12" alignment="baseline" textAlignment="right" text="Cantidad"/>
<WORDBOX name="h8" width="22" length="12" alignment="baseline" textAlignment="right" text="Costo"/>
<WORDBOX name="h9" width="24" length="12" alignment="baseline" textAlignment="right" text="Total"/>
<MINIPAGE name="encabezado" width="min" length="max" bgColor="#eeeeee" fontBold="true" layoutDirection="leftToRight">
<WORDBOX name="h1" width="112" length="12" alignment="baseline" text="Producto"/>
<WORDBOX name="h2" width="38" length="12" alignment="baseline" text="Docto."/>
<WORDBOX name="h3" width="40" length="12" alignment="baseline" text="Orden"/>
<WORDBOX name="h4" width="46" length="12" alignment="baseline" text="Fecha"/>
<WORDBOX name="h5" width="100" length="12" alignment="baseline" text="Proveedor"/>
<WORDBOX name="h6" width="150" length="12" alignment="baseline" text="Descripcion"/>
<WORDBOX name="h7" width="63" length="12" alignment="baseline" textAlignment="right" text="Cantidad"/>
<WORDBOX name="h8" width="70" length="12" alignment="baseline" textAlignment="right" text="Costo"/>
<WORDBOX name="h9" width="66" length="12" alignment="baseline" textAlignment="right" text="Total"/>
</MINIPAGE>
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<MINIPAGE name="fila" width="min" length="12" layoutDirection="leftToRight">
<MINIPAGE name="fila" width="min" length="max" layoutDirection="leftToRight">
<rtl:input-variable name="pcodigo" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="pcodigo Value" width="18" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{pcodigo}}"/>
<WORDWRAPBOX name="pcodigo Value" width="112" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{pcodigo}}"/>
<rtl:input-variable name="x.num_doc" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="num_doc Value" width="14" length="12" alignment="baseline" floatingBehavior="enclosed" format="&amp;&amp;&amp;&amp;&amp;&amp;" value="{{x.num_doc}}"/>
<DECIMALFORMATBOX name="num_doc Value" width="38" length="12" alignment="baseline" floatingBehavior="enclosed" format="&amp;&amp;&amp;&amp;&amp;&amp;" value="{{x.num_doc}}"/>
<rtl:input-variable name="x.orden" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="orden Value" width="16" length="12" alignment="baseline" floatingBehavior="enclosed" format="&amp;&amp;&amp;&amp;&amp;&amp;&amp;" value="{{x.orden}}"/>
<DECIMALFORMATBOX name="orden Value" width="40" length="12" alignment="baseline" floatingBehavior="enclosed" format="&amp;&amp;&amp;&amp;&amp;&amp;&amp;" value="{{x.orden}}"/>
<rtl:input-variable name="fecha_fmt" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="fecha_fmt Value" width="16" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{fecha_fmt}}"/>
<WORDWRAPBOX name="fecha_fmt Value" width="46" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{fecha_fmt}}"/>
<rtl:input-variable name="x.proveedor" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="proveedor Value" width="30" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{x.proveedor}}"/>
<WORDWRAPBOX name="proveedor Value" width="100" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{x.proveedor}}"/>
<rtl:input-variable name="x.descrip_esp" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="descrip_esp Value" width="60" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{x.descrip_esp}}"/>
<WORDWRAPBOX name="descrip_esp Value" width="150" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{x.descrip_esp}}"/>
<rtl:input-variable name="x.consumo" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="consumo Value" width="20" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="---,---,--&amp;.&amp;&amp;&amp;" value="{{x.consumo}}"/>
<DECIMALFORMATBOX name="consumo Value" width="63" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="---,---,--&amp;.&amp;&amp;&amp;" value="{{x.consumo}}"/>
<rtl:input-variable name="x.costo" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="costo Value" width="22" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="-,---,---,--&amp;.&amp;&amp;&amp;" value="{{x.costo}}"/>
<DECIMALFORMATBOX name="costo Value" width="70" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="-,---,---,--&amp;.&amp;&amp;&amp;" value="{{x.costo}}"/>
<rtl:input-variable name="total_p" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="total_p Value" width="24" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="--,---,---,--&amp;.&amp;&amp;" value="{{total_p}}"/>
<DECIMALFORMATBOX name="total_p Value" width="66" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="--,---,---,--&amp;.&amp;&amp;" value="{{total_p}}"/>
</MINIPAGE>
</rtl:match>
<MINIPAGE name="grupo footer" width="min" length="12" layoutDirection="leftToRight" fontBold="true">
<WORDBOX name="totalLabel" width="100" length="12" alignment="baseline" textAlignment="right" text="Total ---->"/>
<MINIPAGE name="grupo footer" width="min" length="max" layoutDirection="leftToRight" fontBold="true">
<WORDBOX name="totalLabel" width="486" length="12" alignment="baseline" textAlignment="right" text="Total ---->"/>
<rtl:input-variable name="total_consumo_m" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="total_consumo_m Value" width="20" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="---,---,--&amp;.&amp;&amp;&amp;" value="{{total_consumo_m}}"/>
<DECIMALFORMATBOX name="total_consumo_m Value" width="63" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="---,---,--&amp;.&amp;&amp;&amp;" value="{{total_consumo_m}}"/>
<rtl:input-variable name="total_m" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="total_m Value" width="46" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="--,---,---,--&amp;.&amp;&amp;" value="{{total_m}}"/>
<DECIMALFORMATBOX name="total_m Value" width="136" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="--,---,---,--&amp;.&amp;&amp;" value="{{total_m}}"/>
</MINIPAGE>
</rtl:match>
</MINIPAGE>
+1
View File
@@ -0,0 +1 @@
<?xml version="1.0" encoding="windows-1252"?><RespuestaAutenticacion xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><token>eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiMDEzMDAwNDg2NjUiLCJqdGkiOiI2Nzk4MDQ2NS0wNDUxLTQ0MDYtOWI5Zi1hMjFjYjYxNzVhNWYiLCJuYmYiOjE3OTI0MjgyNzAsImV4cCI6MTc5MjQzMTg3MCwiaXNzIjoiREdJSS5GRSIsImF1ZCI6IlVTVUFSSU9TLkRHSUkuRkUifQ.CFNvtRwooi8ywhpTMC54p_ELzsGnhmcnXk71cJ7TquA</token><expira>2026-10-19T17:44:30Z</expira><expedido>2026-10-19T16:44:30Z</expedido></RespuestaAutenticacion>
+24
View File
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<SemillaModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<valor>O9f47mo3hpvCPZZ0lkMfRuq8fhKebogyPyzQ7gf4GU0Q/V6vzKJ2sQTG7w0Nwvmh6Bl/m9OLhu+Jsec5Viv6XgNxEotYqq8C8YN5NKCvMyz/i8SHJjfqyXuVZEla9ahLgYZGcCUN3lrLGJvjYJBz0A==</valor>
<fecha>2026-10-19T12:44:29.9029266-04:00</fecha>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<DigestValue>vGncOoTrCPgivdMEd/PdehNZNfi05mZP1HTfeOZlWtU=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>XpIYLmsHYdkfcmntUY1GJ1VLa6elL9ly3hszbZiAILnjfdqomRtmGbajUdjo/oAkroqaNj32UVaD8XyvWfUMv2klM4Ld+NdJhWEOe8H8YY9zxh0OAef7IVrO39RA5XywXcFe9P1TgIpg4S91RniIjOReRQAwXFEwUpDyVpYaeqvdnMKVn/iaJNu59SSYF5JJx9KeHo0z8xHP1XykHKzL3JrwjsbXM6GGDztAWfSVMwJ6f/MDfKhVWcmAb7nfIPc6YD6DjKzvwSmKjqkFt6TysAB+Nq9fwGz7rMRoMGF3PHh18OcxKDA4xJ+MoDmeVxAX99Re+VB+MObF457vPm+9QQ==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>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</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</SemillaModel>
+1
View File
@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><SemillaModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><valor>O9f47mo3hpvCPZZ0lkMfRuq8fhKebogyPyzQ7gf4GU0Q/V6vzKJ2sQTG7w0Nwvmh6Bl/m9OLhu+Jsec5Viv6XgNxEotYqq8C8YN5NKCvMyz/i8SHJjfqyXuVZEla9ahLgYZGcCUN3lrLGJvjYJBz0A==</valor><fecha>2026-10-19T12:44:29.9029266-04:00</fecha></SemillaModel>
+16
View File
@@ -2,3 +2,19 @@ Date: 23/07/2026 Time: 14:04:13
Program error at 'veprmt001.4gl', line number 223.
SQL statement error number -6372 (1).
[Microsoft][SQL Server Native Client 11.0]SQL Server Network Interfaces: Error Locating Server/Instance Specified [xFFFFFFFF].
Date: 19/10/2026 Time: 10:57:33
Program error at 'veprmt001.4gl', line number 281.
FORMS statement error number -1110.
Form file (vefmmt001) not found.
Date: 19/10/2026 Time: 10:59:38
Program error at 'veconduceSinfacturar.4gl', line number 24.
FORMS statement error number -1110.
Form file (vefmmt041) not found.
Date: 19/10/2026 Time: 11:03:30
Program error at 'veprmt001.4gl', line number 6606.
FORMS statement error number -1110.
Form file (vefmwd075) not found.
Date: 19/10/2026 Time: 11:04:43
Program error at 'codigoncf.4gl', line number 15.
FORMS statement error number -1110.
Form file (vefmwd020) not found.
+60 -12
View File
@@ -7,7 +7,7 @@
<report:Format-SVG/>
</report:FormatList>
</report:Settings>
<report:Data RWDataLocation="../vedir/veprmt022.rdd" RWFglReportName="imp_factura"/>
<report:Data RWDataLocation="../vedir/vefactura.rdd" RWFglReportName="imp_factura"/>
<report:Conflicts>
<report:Conflict nodeName="MiniPage1" message="Node was in trigger &quot;Group factura [0; unbounded]&quot;, but trigger was removed during schema update"/>
<report:Conflict nodeName="subtotal" message="Node was in trigger &quot;Group factura [0; unbounded]&quot;, but trigger was removed during schema update"/>
@@ -24,7 +24,9 @@
<IMAGEBOX name="ImageBox1_1_1" length="70" alignment="near" floatingBehavior="enclosed" url="{{&quot;IMAGENES/Logo.png&quot;}}" intendedResolution="120"/>
</LAYOUTNODE>
<LAYOUTNODE name="infocia" width="min" length="min" anchorY="1" fontSize="12" floatingBehavior="enclosed">
<rtl:input-variable name="sucnombre" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox9" alignment="near" fontBold="true" baselineType="leftleft" text="{{sucnombre.trim()}}"/>
<rtl:input-variable name="direccion_sucursal" type="FGLString" expectedLocation="expectedAhead"/>
<WORDWRAPBOX name="WordWrapBox5" width="width(&quot;M&quot;)*33" fontSize="9" floatingBehavior="enclosed" text="{{direccion_sucursal.trim()}}"/>
<LAYOUTNODE name="ourAdress" x="0" width="min" length="min" anchorX="0" layoutDirection="leftToRight" floatingBehavior="enclosed">
<LAYOUTNODE name="Layout Node11" width="min" length="min">
@@ -32,18 +34,25 @@
<WORDBOX name="WordBox12" alignment="baseline" fontSize="9" baselineType="leftleft" text="Telefono:"/>
</LAYOUTNODE>
<LAYOUTNODE name="Layout Node12" width="min" length="min">
<rtl:input-variable name="p_companias.rnc" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox93" alignment="baseline" fontSize="9" floatingBehavior="enclosed" text="{{p_companias.rnc}}"/>
<rtl:input-variable name="p_companias.telefono" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox15" alignment="baseline" fontSize="9" baselineType="leftleft" text="{{p_companias.telefono}}"/>
</LAYOUTNODE>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="x.fecha_factura" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox32_1_1" alignment="baseline" baselineType="leftleft" text="{{&quot;Fecha Emision: &quot;+x.fecha_factura.value}}"/>
</LAYOUTNODE>
</LAYOUTNODE>
</LAYOUTNODE>
<LAYOUTNODE name="NCF" x="20" y="290" width="282.6" length="min" alignment="near" floatingBehavior="enclosed">
<rtl:input-variable name="descripcion" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox31_1" width="max" alignment="baseline" fontSize="12" fontBold="true" baselineType="leftleft" textAlignment="right" text="{{descripcion.trim()}}"/>
<rtl:input-variable name="ch_ncf" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox73_1" width="max" alignment="baseline" fontSize="12" baselineType="leftleft" textAlignment="right" text="{{ch_ncf.trim()}}"/>
<rtl:input-variable name="ncffechaVencimiento" type="FGLNumeric" expectedLocation="expectedAhead"/>
<rtl:input-variable name="ch_fecha" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="ch_fecha Value" rtl:condition="ncffechaVencimiento==1" width="max" alignment="near" floatingBehavior="enclosed" textAlignment="right" text="{{&quot;Vencimiento Secuencia: &quot;+ch_fecha}}"/>
</LAYOUTNODE>
</LAYOUTNODE>
@@ -52,26 +61,35 @@
<LAYOUTNODE name="Layout Node15" width="min" length="min" alignment="near" fontSize="8">
<LAYOUTNODE name="Layout Node17" width="min" length="min" fontItalic="true" layoutDirection="leftToRight">
<WORDBOX name="WordBox18" alignment="baseline" fontBold="true" baselineType="leftleft" text="{{&quot;Razon Social Cliente: &quot;}}"/>
<rtl:input-variable name="x.tipo_cliente" type="FGLNumeric" expectedLocation="expectedAhead"/>
<rtl:input-variable name="x.sec_cliente" type="FGLNumeric" expectedLocation="expectedAhead"/>
<rtl:input-variable name="x.nombre" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox19" alignment="near" baselineType="leftleft" text="{{&quot;(&quot;+x.tipo_cliente.format(&quot;&lt;&lt;&quot;)+&quot;-&quot;+x.sec_cliente.format(&quot;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&quot;)+&quot;)&quot;+x.nombre.trim()}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="Layout Node33" width="min" length="min" layoutDirection="leftToRight">
<WORDBOX name="WordBox64" width="2.2cm" alignment="baseline" fontBold="true" baselineType="leftleft" text="{{&quot;RNC o CEDULA: &quot;}}"/>
<rtl:input-variable name="rnc" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox105" floatingBehavior="enclosed" text="{{rnc.trim()}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="direccion" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox125" width="2.2cm" alignment="near" fontBold="true" floatingBehavior="enclosed" text="{{&quot;Direccion: &quot;}}"/>
<rtl:input-variable name="x.direccion" type="FGLString" expectedLocation="expectedAhead"/>
<WORDWRAPBOX name="WordWrapBox6" width="width(&quot;M&quot;)*34" floatingBehavior="enclosed" text="{{x.direccion}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="telefonoemail" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox126" width="2.2cm" floatingBehavior="enclosed" text="Telefono"/>
<rtl:input-variable name="cliente_bas.telefono" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox123" width="2.3cm" floatingBehavior="enclosed" text="{{cliente_bas.telefono}}"/>
<rtl:input-variable name="cemail" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox127" width="4cm" floatingBehavior="enclosed" text="{{&quot; Email:&quot;+cemail.trim()}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="representante" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox128" width="2.2cm" floatingBehavior="enclosed" text="Representante"/>
<rtl:input-variable name="x.nombre_vend" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox124" width="4cm" floatingBehavior="enclosed" text="{{x.nombre_vend.trim()}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode52" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="x.prima_us" type="FGLNumeric" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox121" floatingBehavior="enclosed" text="{{&quot;TASA: &quot;+x.prima_us}}"/>
</LAYOUTNODE>
</LAYOUTNODE>
@@ -80,17 +98,21 @@
<LAYOUTNODE name="LayoutNode53" x="14.1732" width="278.239" length="min" alignment="baseline" layoutDirection="topToBottom" floatingBehavior="enclosed">
<LAYOUTNODE name="LayoutNode55" x="120" width="min" length="min" fontSize="12" fontBold="true" fontItalic="true" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox129" width="3cm" floatingBehavior="enclosed" text="Factura No.:"/>
<rtl:input-variable name="x.factura" type="FGLNumeric" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox130" width="2cm" alignment="far" floatingBehavior="enclosed" text="{{x.factura.format(&quot;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&quot;)}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode56" x="120" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox131" width="3cm" alignment="far" floatingBehavior="enclosed" text="Cotizacion No.:"/>
<rtl:input-variable name="x.conduce" type="FGLNumeric" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox132" floatingBehavior="enclosed" text="{{x.conduce.format(&quot;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&quot;)}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode57" x="120" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox133" width="3cm" floatingBehavior="enclosed" text="Orden No.:"/>
<rtl:input-variable name="x.orden" type="FGLNumeric" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox134" floatingBehavior="enclosed" text="{{x.orden.format(&quot;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&quot;)}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode58" x="120" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="condicion.descrip" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox135" width="4cm" alignment="baseline" floatingBehavior="enclosed" text="{{&quot;Condicion Cobros: &quot;+condicion.descrip.trim()}}"/>
</LAYOUTNODE>
</LAYOUTNODE>
@@ -108,62 +130,88 @@
</MINIPAGE>
<MINIPAGE name="StripeLayouter21" width=".2cm" layoutDirection="leftToRight"/>
</LAYOUTNODE>
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<MINIPAGE name="PAGINADETALLE" width="max" lengthAdjustment="shrinkToChildren" swapX="true" hidePageFooterOnLastPage="true" roundedCorners="true" borderWidth=".08" borderStyle="solid">
<MINIPAGE name="DETALLEFACTURA" width="min" length="max" layoutDirection="leftToRight">
<LAYOUTNODE name="LayoutNode31" width="min" length="max" fontSize="8" layoutDirection="leftToRight" roundedCorners="true" borderWidth=".9" borderStyle="solid">
<WORDBOX name="cantidad" width="2.5cm" alignment="baseline" baselineType="leftleft" textAlignment="left" text="{{z.cantidad.format(&quot;###,##&amp;.##&quot;)}}"/>
<WORDWRAPBOX name="WordWrapBox3" width="8cm" alignment="baseline" baselineType="leftleft" text="{{z.descrip_esp.trim()}}"/>
<WORDBOX name="WordBox97" width="2cm" alignment="baseline" floatingBehavior="enclosed" text="{{z.unidad_med.trim()}}"/>
<WORDBOX name="precio" width="2cm" alignment="baseline" baselineType="leftleft" textAlignment="right" text="{{z.precio.format(&quot;###,###.##&quot;)}}"/>
<WORDBOX name="monto" width="6cm" anchorY="1" alignment="baseline" bgColor="#d3d3d3" baselineType="leftleft" floatingBehavior="enclosed" textAlignment="right" text="{{z.monto_fact.format(&quot;##,###,###.##&quot;)}}"/>
</LAYOUTNODE>
<rtl:match name="Group factura" nameConstraint="Group" minOccurs="0" maxOccurs="unbounded">
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<MINIPAGE name="PAGINADETALLE" width="max" lengthAdjustment="shrinkToChildren" swapX="true" hidePageFooterOnLastPage="true" roundedCorners="true" borderWidth=".08" borderStyle="solid">
<MINIPAGE name="DETALLEFACTURA" width="min" length="max" layoutDirection="leftToRight">
<LAYOUTNODE name="LayoutNode31" width="min" length="max" fontSize="8" layoutDirection="leftToRight" roundedCorners="true" borderWidth=".9" borderStyle="solid">
<rtl:input-variable name="z.cantidad" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="cantidad" width="2.5cm" alignment="baseline" baselineType="leftleft" textAlignment="left" text="{{z.cantidad.format(&quot;###,##&amp;.##&quot;)}}"/>
<rtl:input-variable name="z.descrip_esp" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WordWrapBox3" width="8cm" alignment="baseline" baselineType="leftleft" text="{{z.descrip_esp.trim()}}"/>
<rtl:input-variable name="z.unidad_med" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox97" width="2cm" alignment="baseline" floatingBehavior="enclosed" text="{{z.unidad_med.trim()}}"/>
<rtl:input-variable name="z.precio" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="precio" width="2cm" alignment="baseline" baselineType="leftleft" textAlignment="right" text="{{z.precio.format(&quot;###,###.##&quot;)}}"/>
<rtl:input-variable name="z.monto_fact" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="monto" width="6cm" anchorY="1" alignment="baseline" bgColor="#d3d3d3" baselineType="leftleft" floatingBehavior="enclosed" textAlignment="right" text="{{z.monto_fact.format(&quot;##,###,###.##&quot;)}}"/>
</LAYOUTNODE>
</MINIPAGE>
</MINIPAGE>
</MINIPAGE>
</rtl:match>
</rtl:match>
<LAYOUTNODE name="subtotal" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox100" width="17.4cm" floatingBehavior="enclosed" text="Subtotal" borderStyle="none"/>
<rtl:input-variable name="simbolo" type="FGLString" expectedLocation="expectedBefore"/>
<rtl:input-variable name="x.sub_total" type="FGLNumeric" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox101" width="3.1cm" alignment="baseline" bgColor="#d3d3d3" floatingBehavior="enclosed" textAlignment="right" text="{{simbolo.trim()+x.sub_total.format(&quot;###,###,###.##&quot;)}}" roundedCorners="true" borderWidth=".9" borderStyle="solid"/>
</LAYOUTNODE>
<LAYOUTNODE name="final" width="min" length="min" layoutDirection="topToBottom" floatingBehavior="enclosed">
<LAYOUTNODE name="LayoutNode45" width="min" length="min" alignment="near" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
<WORDBOX name="WordBox109" width="17.4cm" alignment="baseline" floatingBehavior="enclosed" text="Descuento"/>
<rtl:input-variable name="simbolo" type="FGLString" expectedLocation="expectedBefore"/>
<rtl:input-variable name="x.desc_valor" type="FGLNumeric" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox110" width="3.1cm" alignment="baseline" bgColor="#d3d3d3" floatingBehavior="enclosed" textAlignment="right" text="{{simbolo.trim()+x.desc_valor.format(&quot;###,###,###.##&quot;)}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode46" width="min" length="min" alignment="near" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
<WORDBOX name="WordBox111" width="17.4cm" floatingBehavior="enclosed" text="{{&quot;Neto S/Impuesto&quot;}}"/>
<rtl:input-variable name="simbolo" type="FGLString" expectedLocation="expectedBefore"/>
<rtl:input-variable name="neto_s_imp" type="FGLNumeric" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox112" width="3.1cm" alignment="baseline" bgColor="#d3d3d3" floatingBehavior="enclosed" textAlignment="right" text="{{simbolo.trim()+neto_s_imp.format(&quot;###,###,###.##&quot;)}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="ITBIS" width="min" length="min" alignment="near" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed" roundedCorners="false">
<WORDBOX name="WordBox160" width="17.4cm" floatingBehavior="enclosed" text="{{&quot;Itbis&quot;}}"/>
<rtl:input-variable name="simbolo" type="FGLString" expectedLocation="expectedBefore"/>
<rtl:input-variable name="x.itbi" type="FGLNumeric" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox102_1" width="3.1cm" alignment="baseline" bgColor="#d3d3d3" floatingBehavior="enclosed" textAlignment="right" text="{{simbolo.trim()+x.itbi.format(&quot;###,###,###.##&quot;)}}" roundedCorners="true" borderWidth=".9" borderStyle="solid"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode43" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox103" width="17.3cm" alignment="far" floatingBehavior="enclosed" text="Total" roundedCorners="true" borderWidth=".9" borderStyle="solid"/>
<rtl:input-variable name="simbolo" type="FGLString" expectedLocation="expectedBefore"/>
<rtl:input-variable name="x.total_fact" type="FGLNumeric" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox104" width="3.1cm" bgColor="#d3d3d3" floatingBehavior="enclosed" textAlignment="right" text="{{simbolo.trim()+x.total_fact.format(&quot;###,###,###.##&quot;)}}" roundedCorners="true" borderWidth=".9" borderStyle="solid"/>
</LAYOUTNODE>
<MINIPAGE name="MiniPage2" width=".1cm" bgColor="#0087cb" layoutDirection="leftToRight"/>
<WORDBOX name="WordBox106" length="1cm" floatingBehavior="enclosed"/>
<rtl:input-variable name="x.prima_us" type="FGLNumeric" expectedLocation="expectedBefore"/>
<LAYOUTNODE name="totalesmonedas" rtl:condition="x.prima_us&gt;1" x="max-5.3cm" width="min" length="min" fontSize="9" layoutDirection="topToBottom" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
<WORDBOX name="WordBox148" width="4cm" length=".7cm" alignment="baseline" fontBold="true" floatingBehavior="enclosed" textAlignment="center" text="{{&quot;INFORMACION EN RD$&quot;}}"/>
<LAYOUTNODE name="LayoutNode67" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox155" width="2cm" floatingBehavior="enclosed" text="{{&quot;ITBIS:&quot;}}"/>
<rtl:input-variable name="chitbis" type="FGLString" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox156" width="3cm" floatingBehavior="enclosed" textAlignment="right" text="{{chitbis.trim()}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode68" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox157" width="2cm" floatingBehavior="enclosed" text="{{&quot;MONTO TOTAL:&quot;}}"/>
<rtl:input-variable name="chneto" type="FGLString" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox158" width="3cm" floatingBehavior="enclosed" textAlignment="right" text="{{chneto.trim()}}"/>
</LAYOUTNODE>
<WORDBOX name="WordBox159" length="1cm" floatingBehavior="enclosed"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode69" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="observacion" type="FGLString" expectedLocation="expectedBefore"/>
<WORDWRAPBOX name="WordWrapBox7" width="width(&quot;M&quot;)*60" length="1cm" floatingBehavior="enclosed" text="{{&quot;OBSERVACIONES: &quot;+observacion.trim()}}"/>
</LAYOUTNODE>
<rtl:input-variable name="muestraQR" type="FGLNumeric" expectedLocation="expectedBefore"/>
<MINIPAGE name="MiniPage" rtl:condition="muestraQR==1" width="min" length="max" layoutDirection="leftToRight">
<rtl:input-variable name="dataqrcode" type="FGLString" expectedLocation="expectedBefore"/>
<BARCODEBOX name="BarCodeBox1" width="4cm" length="4cm" alignment="near" floatingBehavior="enclosed" codeType="qr-code" codeValue="{{dataqrcode.trim()}}"/>
</MINIPAGE>
<rtl:input-variable name="muestraQR" type="FGLNumeric" expectedLocation="expectedBefore"/>
<LAYOUTNODE name="LayoutNode44" rtl:condition="muestraQR==1" width="min" length="min" floatingBehavior="enclosed">
<rtl:input-variable name="xhash" type="FGLString" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox108" floatingBehavior="enclosed" text="{{&quot;Codigo de Seguridad:&quot;+xhash.trim()}}"/>
<rtl:input-variable name="chfechafirmadigital" type="FGLString" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox107" floatingBehavior="enclosed" text="{{&quot;Fecha de Firma Digital: &quot;+chfechafirmadigital.trim()}}"/>
</LAYOUTNODE>
</LAYOUTNODE>
+4 -3
View File
@@ -99,7 +99,8 @@ FUNCTION VariacionPrecios()
LET estados.cond_pago = ''
LET estados.estilo = 0
DELETE FROM tmpcxccompara
# tmpcxccompara no existe en el .250 y nadie la lee (el reporte sale de memoria)
# DELETE FROM tmpcxccompara
FOREACH variaciones INTO balancesCE.*
@@ -176,8 +177,8 @@ FUNCTION VariacionPrecios()
END IF
INSERT INTO tmpcxccompara (tipo_cliente,sec_cliente,balance1,balance2)
VALUES (balancesCE.tipo_cliente,balancesCE.sec_cliente, balancesCE.valor,balancesCE.valor2)
# INSERT INTO tmpcxccompara (tipo_cliente,sec_cliente,balance1,balance2)
# VALUES (balancesCE.tipo_cliente,balancesCE.sec_cliente, balancesCE.valor,balancesCE.valor2)
OUTPUT TO REPORT balancesCE_prod_rpt(balancesCE.*, datos.fecha_final,estados.*)
END IF
+1 -1
View File
@@ -89,7 +89,7 @@ DEFINE hoy CHAR(10)
LET hoy = relacion.fecha
LET p_fechas = relacion.fecha
CALL prd(p_fechas,usuarios)
CALL prd(p_fechas,usuarios) RETURNING bandera
IF bandera = 1 THEN
LET bandera = 0
NEXT FIELD fecha
+2 -1
View File
@@ -386,7 +386,8 @@ FUNCTION imprime_req(xnumreq)
c.id_kit,x3.observacion,d.celular1,d.contacto
ORDER BY b.num_req, c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec
LET r_output="SVG"
# antes fijo SVG (en web no se ve): se deja elegir PDF/Excel/pantalla
CALL seleccionarSalida() RETURNING r_output
LET r_filename = "ccprmt010.4rp"
LET preview = 1
+2 -1
View File
@@ -64,7 +64,8 @@ FUNCTION ccprrp027()
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
DELETE FROM tmpccprrp027
# tmpccprrp027 ya no se usa (el INSERT esta comentado) y no existe en el .250
# DELETE FROM tmpccprrp027
LET pflag = "N"
# LET tiposaldo='TODOS'
+2 -1
View File
@@ -180,7 +180,8 @@ OPEN c_vende USING fecha_inicial,fecha_final
FINISH REPORT reporte34
LET puede = NULL
DISPLAY BY NAME valor_total
# el formulario ccfmrp034 no tiene campo valor_total (error -1102); el total sale en el reporte
# DISPLAY BY NAME valor_total
{
LET opt = fgl_winquestion("Atencion","Desea Imprimir Reporte?",
"yes","yes|no","question",0)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+299 -299
View File
@@ -1,299 +1,299 @@
GLOBALS "cgprgb000.4gl"
FUNCTION edprrp118(
fecha1, fecha2, detalle, entra, afecta, p_companias, acumulado_arr, usuario)
DEFINE
handler
om
.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
r_filename
STRING, -- filename of Report Design Document including .4rp extension
r_output STRING, -- output format option
preview INTEGER
DEFINE
acumulado_arr DYNAMIC ARRAY OF RECORD
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE intb00005.descrip_mov,
departamento SMALLINT,
nombre CHAR(30),
consumo DECIMAL(12, 2),
cuenta CHAR(10),
gasto_ind LIKE irtb00013.costo_st,
descripcion CHAR(50),
consumo_cuenta DECIMAL(12, 2),
cuenta_inv CHAR(10)
END RECORD,
ordenar CHAR(30)
DEFINE
afecta CHAR(3),
fecha1, fecha2 DATE,
p_cctb01 RECORD LIKE cctb00001.*,
entra CHAR(14),
detalle CHAR(100),
p_companias CHAR(30),
idz INT,
###### Variables para almacenar los datos selecionados
usuario, clave CHAR(80),
impresor SMALLINT
LET r_filename = "edprrp118b.4rp"
LET idz = 1
FOR idx = 1 TO acumulado_arr.getLength()
IF idx = 1 THEN
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview = 1
CALL seleccionarsalida()
RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler =
fgl_report_commitCurrentSettings() -- commit changes
END IF
START REPORT entrada14 TO XML HANDLER HANDLER
END IF
LET ordenar =
acumulado_arr[idz].cuenta CLIPPED,
"-",
acumulado_arr[idz].departamento USING "&&&&&"
OUTPUT TO REPORT entrada14(
p_cctb01.*,
fecha1,
fecha2,
detalle,
entra,
afecta,
p_companias,
acumulado_arr[idz].*,
ordenar, usuario)
LET idz = idz + 1
END FOR
IF idx > 1 THEN
FINISH REPORT entrada14
ELSE
CALL fgl_winmessage(
"INFO",
"NO HAY REGISTROS EN ESTE RANGO DE FECHA Y CON LOS PARAMETROS INDICADOS",
"INFO")
END IF
--RUN imprime
END FUNCTION
REPORT entrada14(
x, fecha1, fecha2, detalle1, entrada, afecta, p_companias, y, xordenar, usuario)
DEFINE x RECORD LIKE cctb00001.*
DEFINE usuario VARCHAR(50)
DEFINE
y RECORD
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE intb00005.descrip_mov,
departamento SMALLINT,
nombre CHAR(30),
consumo DECIMAL(12, 2),
cuenta CHAR(10),
gasto_ind LIKE irtb00013.costo_st,
descripcion CHAR(30),
consumo_cuenta DECIMAL(12, 2),
cuenta_inv CHAR(10)
END RECORD,
xordenar VARCHAR(30)
### Acumula los valores de las diferentes cuentas para entrada diario de nomina
DEFINE
invdebito,
invcredito,
debito,
credito,
total_departamento,
total_haber,
total_deber
DECIMAL(12, 2),
detalle1, nombre_cta, rango_fecha CHAR(100),
fecha1, fecha2 DATE, #### Almacena las fecha del rango de busqueda
hora CHAR(5),
entrada CHAR(14),
actual VARCHAR(20),
afecta CHAR(3),
p_companias, desc_cuenta CHAR(30)
ORDER BY xordenar
FORMAT
FIRST PAGE HEADER
LET hora = TIME
LET actual = TODAY USING "dd/mm/yyyy"
LET rango_fecha =
"Del ",
fecha1 USING "dd/mm/yyyy",
" Al ",
fecha2 USING "dd/mm/yyyy"
LET total_deber = 0
LET total_haber = 0
BEFORE GROUP OF y.departamento
LET total_departamento = 0
AFTER GROUP OF xordenar
IF y.consumo < 0 THEN
LET debito = GROUP SUM(y.consumo_cuenta) * -1
LET credito = 0
ELSE
LET debito = 0
LET credito = GROUP SUM(y.consumo_cuenta)
END IF
PRINTX entrada,
hora,
actual,
rango_fecha,
p_companias,
y.cod_mov,
y.consumo,
y.cuenta,
y.departamento,
y.descrip_mov,
y.gasto_ind,
y.nombre,
y.consumo_cuenta,
y.descripcion,
debito,
credito,
detalle1
IF afecta = "S" THEN
BEGIN WORK
IF y.consumo < 0 THEN
INSERT INTO cgtb00004(
fecha,
tipo,
ref,
cuenta_no,
departamento,
detalle_1,
debito,
credito,
us_crea,
fech_crea)
VALUES(fecha2,
1,
entrada,
y.cuenta,
y.departamento,
detalle1,
debito,
0,
usuarios,
GETDATE())
ELSE
INSERT INTO cgtb00004(
fecha,
tipo,
ref,
cuenta_no,
departamento,
detalle_1,
debito,
credito,
us_crea,
fech_crea)
VALUES(fecha2,
1,
entrada,
y.cuenta,
y.departamento,
detalle1,
0,
credito,
usuarios,
GETDATE())
END IF
COMMIT WORK
END IF
LET total_deber = debito + total_deber
LET total_haber = credito + total_haber
ON LAST ROW
SELECT a.descripcion
INTO nombre_cta
FROM cgtb00001 a
WHERE a.cuenta_no = y.cuenta_inv
IF nombre_cta IS NULL THEN
LET nombre_cta = "CUENTA SIN DESCRIPCION"
END IF
IF y.consumo < 0 THEN
LET invcredito = SUM(y.consumo_cuenta * -1)
LET invdebito = 0
LET total_haber = invcredito + total_haber
ELSE
LET invdebito = SUM(y.consumo_cuenta)
LET invcredito = 0
LET total_deber = invdebito + total_deber
END IF
IF afecta = "S" THEN
BEGIN WORK
IF y.consumo < 0 THEN
INSERT INTO cgtb00004(
fecha,
tipo,
ref,
cuenta_no,
detalle_1,
debito,
credito,
us_crea,
fech_crea)
VALUES(fecha2,
1,
entrada,
y.cuenta_inv,
detalle1,
0,
invcredito,
usuarios,
GETDATE())
ELSE
INSERT INTO cgtb00004(
fecha,
tipo,
ref,
cuenta_no,
detalle_1,
debito,
credito,
us_crea,
fech_crea)
VALUES(fecha2,
1,
entrada,
y.cuenta_inv,
detalle1,
invcredito,
0,
usuarios,
GETDATE())
END IF
{UPDATE cgtb00011
SET referencia = referencia + 1,
us_mod = usuario,
fech_mod = getdate()
WHERE entrada_no = 5}
COMMIT WORK
END IF
PRINTX y.cuenta_inv,
total_haber,
nombre_cta,
desc_cuenta,
total_deber,
invdebito,
invcredito
END REPORT
GLOBALS "cgprgb000.4gl"
FUNCTION edprrp118(
fecha1, fecha2, detalle, entra, afecta, p_companias, acumulado_arr, usuario)
DEFINE
handler
om
.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
r_filename
STRING, -- filename of Report Design Document including .4rp extension
r_output STRING, -- output format option
preview INTEGER
DEFINE
acumulado_arr DYNAMIC ARRAY OF RECORD
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE intb00005.descrip_mov,
departamento SMALLINT,
nombre CHAR(30),
consumo DECIMAL(12, 2),
cuenta CHAR(10),
gasto_ind LIKE irtb00013.costo_st,
descripcion CHAR(50),
consumo_cuenta DECIMAL(12, 2),
cuenta_inv CHAR(10)
END RECORD,
ordenar CHAR(30)
DEFINE
afecta CHAR(3),
fecha1, fecha2 DATE,
p_cctb01 RECORD LIKE cctb00001.*,
entra CHAR(14),
detalle CHAR(100),
p_companias CHAR(30),
idz INT,
###### Variables para almacenar los datos selecionados
usuario, clave CHAR(80),
impresor SMALLINT
LET r_filename = "edprrp118b.4rp"
LET idz = 1
FOR idx = 1 TO acumulado_arr.getLength()
IF idx = 1 THEN
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview = 1
CALL seleccionarsalida()
RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler =
fgl_report_commitCurrentSettings() -- commit changes
END IF
START REPORT entrada14 TO XML HANDLER HANDLER
END IF
LET ordenar =
acumulado_arr[idz].cuenta CLIPPED,
"-",
acumulado_arr[idz].departamento USING "&&&&&"
OUTPUT TO REPORT entrada14(
p_cctb01.*,
fecha1,
fecha2,
detalle,
entra,
afecta,
p_companias,
acumulado_arr[idz].*,
ordenar, usuario)
LET idz = idz + 1
END FOR
IF idx > 1 THEN
FINISH REPORT entrada14
ELSE
CALL fgl_winmessage(
"INFO",
"NO HAY REGISTROS EN ESTE RANGO DE FECHA Y CON LOS PARAMETROS INDICADOS",
"INFO")
END IF
--RUN imprime
END FUNCTION
REPORT entrada14(
x, fecha1, fecha2, detalle1, entrada, afecta, p_companias, y, xordenar, usuario)
DEFINE x RECORD LIKE cctb00001.*
DEFINE usuario VARCHAR(50)
DEFINE
y RECORD
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE intb00005.descrip_mov,
departamento SMALLINT,
nombre CHAR(30),
consumo DECIMAL(12, 2),
cuenta CHAR(10),
gasto_ind LIKE irtb00013.costo_st,
descripcion CHAR(30),
consumo_cuenta DECIMAL(12, 2),
cuenta_inv CHAR(10)
END RECORD,
xordenar VARCHAR(30)
### Acumula los valores de las diferentes cuentas para entrada diario de nomina
DEFINE
invdebito,
invcredito,
debito,
credito,
total_departamento,
total_haber,
total_deber
DECIMAL(12, 2),
detalle1, nombre_cta, rango_fecha CHAR(100),
fecha1, fecha2 DATE, #### Almacena las fecha del rango de busqueda
hora CHAR(5),
entrada CHAR(14),
actual VARCHAR(20),
afecta CHAR(3),
p_companias, desc_cuenta CHAR(30)
ORDER BY xordenar
FORMAT
FIRST PAGE HEADER
LET hora = TIME
LET actual = TODAY USING "dd/mm/yyyy"
LET rango_fecha =
"Del ",
fecha1 USING "dd/mm/yyyy",
" Al ",
fecha2 USING "dd/mm/yyyy"
LET total_deber = 0
LET total_haber = 0
BEFORE GROUP OF y.departamento
LET total_departamento = 0
AFTER GROUP OF xordenar
IF y.consumo < 0 THEN
LET debito = GROUP SUM(y.consumo_cuenta) * -1
LET credito = 0
ELSE
LET debito = 0
LET credito = GROUP SUM(y.consumo_cuenta)
END IF
PRINTX entrada,
hora,
actual,
rango_fecha,
p_companias,
y.cod_mov,
y.consumo,
y.cuenta,
y.departamento,
y.descrip_mov,
y.gasto_ind,
y.nombre,
y.consumo_cuenta,
y.descripcion,
debito,
credito,
detalle1
IF afecta = "S" THEN
BEGIN WORK
IF y.consumo < 0 THEN
INSERT INTO cgtb00004(
fecha,
tipo,
ref,
cuenta_no,
departamento,
detalle_1,
debito,
credito,
us_crea,
fech_crea)
VALUES(fecha2,
1,
entrada,
y.cuenta,
y.departamento,
detalle1,
debito,
0,
usuarios,
GETDATE())
ELSE
INSERT INTO cgtb00004(
fecha,
tipo,
ref,
cuenta_no,
departamento,
detalle_1,
debito,
credito,
us_crea,
fech_crea)
VALUES(fecha2,
1,
entrada,
y.cuenta,
y.departamento,
detalle1,
0,
credito,
usuarios,
GETDATE())
END IF
COMMIT WORK
END IF
LET total_deber = debito + total_deber
LET total_haber = credito + total_haber
ON LAST ROW
SELECT a.descripcion
INTO nombre_cta
FROM cgtb00001 a
WHERE a.cuenta_no = y.cuenta_inv
IF nombre_cta IS NULL THEN
LET nombre_cta = "CUENTA SIN DESCRIPCION"
END IF
IF y.consumo < 0 THEN
LET invcredito = SUM(y.consumo_cuenta * -1)
LET invdebito = 0
LET total_haber = invcredito + total_haber
ELSE
LET invdebito = SUM(y.consumo_cuenta)
LET invcredito = 0
LET total_deber = invdebito + total_deber
END IF
IF afecta = "S" THEN
BEGIN WORK
IF y.consumo < 0 THEN
INSERT INTO cgtb00004(
fecha,
tipo,
ref,
cuenta_no,
detalle_1,
debito,
credito,
us_crea,
fech_crea)
VALUES(fecha2,
1,
entrada,
y.cuenta_inv,
detalle1,
0,
invcredito,
usuarios,
GETDATE())
ELSE
INSERT INTO cgtb00004(
fecha,
tipo,
ref,
cuenta_no,
detalle_1,
debito,
credito,
us_crea,
fech_crea)
VALUES(fecha2,
1,
entrada,
y.cuenta_inv,
detalle1,
invcredito,
0,
usuarios,
GETDATE())
END IF
{UPDATE cgtb00011
SET referencia = referencia + 1,
us_mod = usuario,
fech_mod = getdate()
WHERE entrada_no = 5}
COMMIT WORK
END IF
PRINTX y.cuenta_inv,
total_haber,
nombre_cta,
desc_cuenta,
total_deber,
invdebito,
invcredito
END REPORT
+42 -3
View File
@@ -648,6 +648,10 @@ SET CONNECTION "MSSQL"
p_iptb02.cod_sec,p_iptb02.unidad_med,p_iptb01.factor_conv,
NULL,SUSER_SNAME(),GETDATE(),NULL,NULL,p_iptb01.factor_ad)
# Se puede aceptar sin pasar por num_emp (GUI): se recalcula el nombre del representante
IF p_iptb02.num_emp IS NOT NULL THEN
LET p_iptb02.nombre_representante = ui.ComboBox.forName('formonly.num_emp').getTextOf(p_iptb02.num_emp)
END IF
INSERT INTO iptb00002(cod_cia,cod_n,cod_grupo,cod_tipo,cod_Sec,descrip_esp,
descrip_ing,unidad_med,bodega,control_existencia,control_itbis,dia_llegada,exist_max,
exist_min,us_crea,fech_crea,foto_producto,porc_desc,fecha_desc,imagen,descuento_permitido,departamento,grupo1,
@@ -685,6 +689,10 @@ SET CONNECTION "MSSQL"
SET CONNECTION "IFMX"
# Se puede aceptar sin pasar por num_emp (GUI): se recalcula el nombre del representante
IF p_iptb02.num_emp IS NOT NULL THEN
LET p_iptb02.nombre_representante = ui.ComboBox.forName('formonly.num_emp').getTextOf(p_iptb02.num_emp)
END IF
INSERT INTO iptb00002(cod_cia,cod_n,cod_grupo,cod_tipo,cod_Sec,descrip_esp,
descrip_ing,unidad_med,bodega,control_existencia,control_itbis,dia_llegada,exist_max,
exist_min,imp_aduanal, us_crea,fech_crea,codid)
@@ -714,6 +722,10 @@ SET CONNECTION "MSSQL"
# PRIMERA CONEXION
SET CONNECTION "MSSQL"
# Se puede aceptar sin pasar por num_emp (GUI): se recalcula el nombre del representante
IF p_iptb02.num_emp IS NOT NULL THEN
LET p_iptb02.nombre_representante = ui.ComboBox.forName('formonly.num_emp').getTextOf(p_iptb02.num_emp)
END IF
UPDATE iptb00002 SET iptb00002.cod_cia = p_iptb02.cod_cia,
iptb00002.cod_n =p_iptb02.cod_n,
iptb00002.cod_grupo = p_iptb02.cod_grupo,
@@ -790,6 +802,10 @@ SET CONNECTION "MSSQL"
a.cod_sec = p_iptb02.cod_sec
IF STATUS <> NOTFOUND THEN
# Se puede aceptar sin pasar por num_emp (GUI): se recalcula el nombre del representante
IF p_iptb02.num_emp IS NOT NULL THEN
LET p_iptb02.nombre_representante = ui.ComboBox.forName('formonly.num_emp').getTextOf(p_iptb02.num_emp)
END IF
UPDATE iptb00002 SET iptb00002.cod_cia = p_iptb02.cod_cia,
iptb00002.descrip_esp =p_iptb02.descrip_esp,
iptb00002.descrip_ing =p_iptb02.descrip_ing,
@@ -810,6 +826,10 @@ SET CONNECTION "MSSQL"
cod_tipo = p_iptb02.cod_tipo AND
cod_Sec = p_iptb02.cod_sec
ELSE
# Se puede aceptar sin pasar por num_emp (GUI): se recalcula el nombre del representante
IF p_iptb02.num_emp IS NOT NULL THEN
LET p_iptb02.nombre_representante = ui.ComboBox.forName('formonly.num_emp').getTextOf(p_iptb02.num_emp)
END IF
INSERT INTO iptb00002(cod_cia,cod_n,cod_grupo,cod_tipo,cod_Sec,descrip_esp,
descrip_ing,unidad_med,bodega,control_existencia,control_itbis,dia_llegada,exist_max,
exist_min,imp_aduanal,us_crea,fech_crea,codid)
@@ -1170,8 +1190,27 @@ FUNCTION grupo_producto()
ORDER BY a.cod_grupo
CALL cgrupo.clear()
FOREACH btipoproductos INTO kgrupo, dgrupo
CALL cgrupo.additem(kgrupo, dgrupo)
# Se recorria btipoproductos (cursor de otra funcion): el combo mostraba Bienes/Servicio.
# iptb00002.grupo1 guarda el NOMBRE del grupo (CORALINA, TRAVERTINO...), no el codigo.
FOREACH bgrupos INTO kgrupo, dgrupo
CALL cgrupo.additem(dgrupo CLIPPED, dgrupo CLIPPED)
END FOREACH
END FUNCTION
END FUNCTION
# busca_departamento() local: la version compartida esta en FUNCIONES_IR (duplicaria el modulo)
FUNCTION busca_departamento()
DEFINE pdepartamento ui.combobox,
kdepartamento SMALLINT,kdescripcion CHAR(30)
LET pdepartamento = ui.combobox.forname("formonly.departamento")
CALL pdepartamento.clear()
DECLARE pagar_dpto CURSOR FOR
SELECT departamento, nom_dpto FROM adtb00001
WHERE status_t is null
ORDER BY nom_dpto
FOREACH pagar_dpto INTO kdepartamento,kdescripcion
CALL pdepartamento.additem(kdepartamento,kdescripcion)
END FOREACH
END FUNCTION
+32 -31
View File
@@ -1,6 +1,6 @@
<?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="60003" version="7.00">
<report:Settings RWPageWidth="a4width" RWPageLength="a4length" RWLeftMargin="1.3cm" RWTopMargin="1.3cm" RWRightMargin="1.3cm" RWBottomMargin="1.3cm">
<report:Settings RWPageWidth="a4length" RWPageLength="a4width" RWLeftMargin="1.3cm" RWTopMargin="1.3cm" RWRightMargin="1.3cm" RWBottomMargin="1.3cm">
<report:FormatList>
<report:Format-SVG/>
<report:Format-PDF/>
@@ -12,56 +12,57 @@
<rtl:stylesheet>
<PXML>
<rtl:match name="Report" nameConstraint="Report" minOccurs="1" maxOccurs="1">
<MINIPAGE name="page root" width="max" length="max" alignment="near" fontName="Arial">
<LAYOUTNODE name="header" width="min" length="min" port="firstPageHeader">
<WORDBOX name="Title" width="200" length="14" alignment="near" fontSize="15" fontBold="true" text="Operaciones Por Movimientos Al Standard"/>
<MINIPAGE name="page root" width="max" length="max" alignment="near" fontName="Arial" fontSize="8">
<LAYOUTNODE name="header" width="min" length="min" alignment="center" port="firstPageHeader">
<WORDBOX name="Title" width="686" length="24" alignment="near" fontSize="15" fontBold="true" textAlignment="center" text="Operaciones Por Movimientos Al Standard"/>
<LAYOUTNODE name="espacio titulo" width="686" length="8"/>
</LAYOUTNODE>
<rtl:match name="Group cod_mov" nameConstraint="Group" minOccurs="0" maxOccurs="unbounded">
<MINIPAGE name="grupo header" width="min" length="12" layoutDirection="leftToRight" bgColor="#cccccc" fontBold="true">
<MINIPAGE name="grupo header" width="min" length="max" layoutDirection="leftToRight" bgColor="#cccccc" fontBold="true">
<rtl:input-variable name="x.cod_mov" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="cod_mov Value" width="30" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{x.cod_mov}}"/>
<WORDWRAPBOX name="cod_mov Value" width="40" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{x.cod_mov}}"/>
<rtl:input-variable name="x.descrip_mov" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="descrip_mov Value" width="150" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{x.descrip_mov}}"/>
<WORDWRAPBOX name="descrip_mov Value" width="300" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{x.descrip_mov}}"/>
</MINIPAGE>
<MINIPAGE name="encabezado" width="min" length="12" bgColor="#eeeeee" fontBold="true" layoutDirection="leftToRight">
<WORDBOX name="h1" width="18" length="12" alignment="baseline" text="Docto."/>
<WORDBOX name="h2" width="14" length="12" alignment="baseline" text="Orden"/>
<WORDBOX name="h3" width="16" length="12" alignment="baseline" text="Fecha"/>
<WORDBOX name="h4" width="30" length="12" alignment="baseline" text="Proveedor"/>
<WORDBOX name="h5" width="18" length="12" alignment="baseline" text="Producto"/>
<WORDBOX name="h6" width="60" length="12" alignment="baseline" text="Descripcion"/>
<WORDBOX name="h7" width="20" length="12" alignment="baseline" textAlignment="right" text="Cantidad"/>
<WORDBOX name="h8" width="22" length="12" alignment="baseline" textAlignment="right" text="Costo"/>
<WORDBOX name="h9" width="24" length="12" alignment="baseline" textAlignment="right" text="Total"/>
<MINIPAGE name="encabezado" width="min" length="max" bgColor="#eeeeee" fontBold="true" layoutDirection="leftToRight">
<WORDBOX name="h1" width="112" length="12" alignment="baseline" text="Producto"/>
<WORDBOX name="h2" width="38" length="12" alignment="baseline" text="Docto."/>
<WORDBOX name="h3" width="40" length="12" alignment="baseline" text="Orden"/>
<WORDBOX name="h4" width="46" length="12" alignment="baseline" text="Fecha"/>
<WORDBOX name="h5" width="100" length="12" alignment="baseline" text="Proveedor"/>
<WORDBOX name="h6" width="150" length="12" alignment="baseline" text="Descripcion"/>
<WORDBOX name="h7" width="63" length="12" alignment="baseline" textAlignment="right" text="Cantidad"/>
<WORDBOX name="h8" width="70" length="12" alignment="baseline" textAlignment="right" text="Costo"/>
<WORDBOX name="h9" width="66" length="12" alignment="baseline" textAlignment="right" text="Total"/>
</MINIPAGE>
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<MINIPAGE name="fila" width="min" length="12" layoutDirection="leftToRight">
<MINIPAGE name="fila" width="min" length="max" layoutDirection="leftToRight">
<rtl:input-variable name="pcodigo" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="pcodigo Value" width="18" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{pcodigo}}"/>
<WORDWRAPBOX name="pcodigo Value" width="112" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{pcodigo}}"/>
<rtl:input-variable name="x.num_doc" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="num_doc Value" width="14" length="12" alignment="baseline" floatingBehavior="enclosed" format="&amp;&amp;&amp;&amp;&amp;&amp;" value="{{x.num_doc}}"/>
<DECIMALFORMATBOX name="num_doc Value" width="38" length="12" alignment="baseline" floatingBehavior="enclosed" format="&amp;&amp;&amp;&amp;&amp;&amp;" value="{{x.num_doc}}"/>
<rtl:input-variable name="x.orden" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="orden Value" width="16" length="12" alignment="baseline" floatingBehavior="enclosed" format="&amp;&amp;&amp;&amp;&amp;&amp;&amp;" value="{{x.orden}}"/>
<DECIMALFORMATBOX name="orden Value" width="40" length="12" alignment="baseline" floatingBehavior="enclosed" format="&amp;&amp;&amp;&amp;&amp;&amp;&amp;" value="{{x.orden}}"/>
<rtl:input-variable name="fecha_fmt" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="fecha_fmt Value" width="16" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{fecha_fmt}}"/>
<WORDWRAPBOX name="fecha_fmt Value" width="46" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{fecha_fmt}}"/>
<rtl:input-variable name="x.proveedor" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="proveedor Value" width="30" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{x.proveedor}}"/>
<WORDWRAPBOX name="proveedor Value" width="100" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{x.proveedor}}"/>
<rtl:input-variable name="x.descrip_esp" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="descrip_esp Value" width="60" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{x.descrip_esp}}"/>
<WORDWRAPBOX name="descrip_esp Value" width="150" length="12" alignment="baseline" floatingBehavior="enclosed" text="{{x.descrip_esp}}"/>
<rtl:input-variable name="x.consumo" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="consumo Value" width="20" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="---,---,--&amp;.&amp;&amp;&amp;" value="{{x.consumo}}"/>
<DECIMALFORMATBOX name="consumo Value" width="63" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="---,---,--&amp;.&amp;&amp;&amp;" value="{{x.consumo}}"/>
<rtl:input-variable name="x.costo" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="costo Value" width="22" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="-,---,---,--&amp;.&amp;&amp;&amp;" value="{{x.costo}}"/>
<DECIMALFORMATBOX name="costo Value" width="70" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="-,---,---,--&amp;.&amp;&amp;&amp;" value="{{x.costo}}"/>
<rtl:input-variable name="total_p" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="total_p Value" width="24" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="--,---,---,--&amp;.&amp;&amp;" value="{{total_p}}"/>
<DECIMALFORMATBOX name="total_p Value" width="66" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="--,---,---,--&amp;.&amp;&amp;" value="{{total_p}}"/>
</MINIPAGE>
</rtl:match>
<MINIPAGE name="grupo footer" width="min" length="12" layoutDirection="leftToRight" fontBold="true">
<WORDBOX name="totalLabel" width="100" length="12" alignment="baseline" textAlignment="right" text="Total ---->"/>
<MINIPAGE name="grupo footer" width="min" length="max" layoutDirection="leftToRight" fontBold="true">
<WORDBOX name="totalLabel" width="486" length="12" alignment="baseline" textAlignment="right" text="Total ---->"/>
<rtl:input-variable name="total_consumo_m" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="total_consumo_m Value" width="20" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="---,---,--&amp;.&amp;&amp;&amp;" value="{{total_consumo_m}}"/>
<DECIMALFORMATBOX name="total_consumo_m Value" width="63" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="---,---,--&amp;.&amp;&amp;&amp;" value="{{total_consumo_m}}"/>
<rtl:input-variable name="total_m" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="total_m Value" width="46" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="--,---,---,--&amp;.&amp;&amp;" value="{{total_m}}"/>
<DECIMALFORMATBOX name="total_m Value" width="136" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="--,---,---,--&amp;.&amp;&amp;" value="{{total_m}}"/>
</MINIPAGE>
</rtl:match>
</MINIPAGE>
File diff suppressed because it is too large Load Diff
+127 -127
View File
@@ -1,128 +1,128 @@
DEFINE curr,i INT,
kdatos DYNAMIC ARRAY OF RECORD
bookmash VARCHAR(50),
tipos VARCHAR(50),
lado_1 DEC(8,2),
lado_2 DEC(8,2),
lado_3 DEC(8,2),
cantidad SMALLINT,
cantidad2 FLOAT,
tono,calidad VARCHAR(100),
xobservacion VARCHAR(200),
id_producto CHAR(25),
bodega INT,
seccion INT,
tramo INT,
codid,idrow,idtrx INT
END RECORD,
xcodid,xbodega,xseccion,xtramo,xcodn,xcodgrupo,xcodtipo,xcodsec,kidtrx INT,
xfecha DATE,
totalmedida DEC(12,5)
FUNCTION desglose_conteo(pcodid,pfecha,pbodega,pseccion,ptramo,pcodn,pcodgrupo,pcodtipo,pcodsec,descripcion,idtrx)
DEFINE pcodid,pbodega,pseccion,ptramo,pcodn,pcodgrupo,pcodtipo,pcodsec,idtrx INT,pfecha DATE,
descripcion VARCHAR(100)
LET xcodid = pcodid
LET xbodega = pbodega
LET xseccion = pseccion
LET xtramo = ptramo
LET xfecha = pfecha
LET xcodn = pcodn
LET xcodgrupo = pcodgrupo
LET xcodtipo = pcodtipo
LET xcodsec = pcodsec
LET kidtrx = idtrx
CALL kdatos.clear()
CALL busca_detalle()
OPEN WINDOW w1 WITH FORM "irfmwd015"
DISPLAY BY NAME pcodn,pcodgrupo,pcodtipo,pcodsec,descripcion
INPUT ARRAY kdatos FROM sdatos.* ATTRIBUTES(WITHOUT DEFAULTS)
BEFORE INPUT
LET curr = arr_curr()
LET totalmedida =0
LET kdatos[curr].cantidad2 =0
CALL bodegas('1')
CALL cseccion(kdatos[curr].bodega)
CALL ctramo(kdatos[curr].bodega,kdatos[curr].seccion)
AFTER FIELD cantidad
IF kdatos[arr_curr()].cantidad IS NOT NULL THEN
IF kdatos[arr_curr()].lado_1 IS NOT NULL THEN
LET kdatos[arr_curr()].cantidad2 =kdatos[arr_curr()].lado_1 *kdatos[arr_curr()].cantidad
END IF
IF kdatos[arr_curr()].lado_2 IS NOT NULL THEN
LET kdatos[arr_curr()].cantidad2 =kdatos[arr_curr()].lado_1 * kdatos[arr_curr()].lado_2* kdatos[arr_curr()].cantidad
END IF
IF kdatos[arr_curr()].lado_3 IS NOT NULL THEN
LET kdatos[arr_curr()].cantidad2 =kdatos[arr_curr()].cantidad2* kdatos[arr_curr()].lado_3* kdatos[arr_curr()].cantidad
END IF
DISPLAY kdatos[arr_curr()].cantidad2 TO sdatos[scr_line()].cantidad2
LET totalmedida = totalmedida + kdatos[arr_curr()].cantidad2
DISPLAY BY NAME totalmedida
END IF
AFTER INPUT
IF int_flag THEN
LET int_flag = FALSE
CALL msg(2)
END IF
LET totalmedida =0
FOR i =1 to kdatos.getLength()
IF kdatos[i].cantidad IS NOT NULL THEN
IF kdatos[i].lado_1 IS NOT NULL THEN
LET kdatos[i].cantidad2 =kdatos[i].lado_1 *kdatos[i].cantidad
END IF
IF kdatos[i].lado_2 IS NOT NULL THEN
LET kdatos[i].cantidad2 =kdatos[i].lado_1 * kdatos[i].lado_2* kdatos[i].cantidad
END IF
IF kdatos[i].lado_3 IS NOT NULL THEN
LET kdatos[i].cantidad2 =kdatos[i].cantidad2* kdatos[i].lado_3
END IF
LET totalmedida = totalmedida + kdatos[i].cantidad2
END IF
END FOR
EXIT INPUT
ON ACTION salvar ATTRIBUTE(TEXT="Guardar",IMAGE="fa-save")
CALL guarda_info()
END INPUT
CLOSE WINDOW w1
RETURN totalmedida
END FUNCTION
FUNCTION busca_detalle()
DECLARE busca_desglose CURSOR FOR
SELECT a.book,a.tipos,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.cantidad2,a.tono,a.calidad,
a.observacion,
a.idproducto,a.bodega,a.cod_seccion,a.cod_tramo,a.codid, a.idrow,a.idtrx
FROM iptb00062 a WHERE a.codid = xcodid AND a.fecha = xfecha
ORDER BY a.lado_1
LET i = 1
FOREACH busca_desglose INTO kdatos[i].*
LET i = i + 1
END FOREACH
END FUNCTION
FUNCTION guarda_info()
BEGIN WORK
DELETE FROM iptb00062 WHERE fecha = xfecha AND bodega = xbodega AND codid = xcodid
FOR i = 1 TO kdatos.getLength()
IF kdatos[i].cantidad2 IS NOT NULL THEN
INSERT INTO iptb00062 (codid,cod_n,cod_grupo,cod_tipo,cod_Sec,cantidad,cantidad2,lado_1,lado_2,lado_3,
book,tipos,cod_seccion,cod_tramo,bodega,us_crea,fech_crea,idproducto,idtrx,tono,calidad,fecha,
observacion)
VALUES (kdatos[i].codid,xcodn,xcodgrupo,xcodtipo,xcodsec,kdatos[i].cantidad,kdatos[i].cantidad2,
kdatos[i].lado_1,kdatos[i].lado_2,kdatos[i].lado_3,kdatos[i].bookmash,kdatos[i].tipos,
kdatos[i].seccion,kdatos[i].tramo,kdatos[i].bodega,suser_sname(),getdate(),
kdatos[i].id_producto,kidtrx,kdatos[i].tono,kdatos[i].calidad,xfecha,
kdatos[i].xobservacion)
END IF
END FOR
COMMIT WORK
CALL msg(1)
DEFINE curr,i INT,
kdatos DYNAMIC ARRAY OF RECORD
bookmash VARCHAR(50),
tipos VARCHAR(50),
lado_1 DEC(8,2),
lado_2 DEC(8,2),
lado_3 DEC(8,2),
cantidad SMALLINT,
cantidad2 FLOAT,
tono,calidad VARCHAR(100),
xobservacion VARCHAR(200),
id_producto CHAR(25),
bodega INT,
seccion INT,
tramo INT,
codid,idrow,idtrx INT
END RECORD,
xcodid,xbodega,xseccion,xtramo,xcodn,xcodgrupo,xcodtipo,xcodsec,kidtrx INT,
xfecha DATE,
totalmedida DEC(12,5)
FUNCTION desglose_conteo(pcodid,pfecha,pbodega,pseccion,ptramo,pcodn,pcodgrupo,pcodtipo,pcodsec,descripcion,idtrx)
DEFINE pcodid,pbodega,pseccion,ptramo,pcodn,pcodgrupo,pcodtipo,pcodsec,idtrx INT,pfecha DATE,
descripcion VARCHAR(100)
LET xcodid = pcodid
LET xbodega = pbodega
LET xseccion = pseccion
LET xtramo = ptramo
LET xfecha = pfecha
LET xcodn = pcodn
LET xcodgrupo = pcodgrupo
LET xcodtipo = pcodtipo
LET xcodsec = pcodsec
LET kidtrx = idtrx
CALL kdatos.clear()
CALL busca_detalle()
OPEN WINDOW w1 WITH FORM "irfmwd015"
DISPLAY BY NAME pcodn,pcodgrupo,pcodtipo,pcodsec,descripcion
INPUT ARRAY kdatos FROM sdatos.* ATTRIBUTES(WITHOUT DEFAULTS)
BEFORE INPUT
LET curr = arr_curr()
LET totalmedida =0
LET kdatos[curr].cantidad2 =0
CALL bodegas('1')
CALL cseccion(kdatos[curr].bodega)
CALL ctramo(kdatos[curr].bodega,kdatos[curr].seccion)
AFTER FIELD cantidad
IF kdatos[arr_curr()].cantidad IS NOT NULL THEN
IF kdatos[arr_curr()].lado_1 IS NOT NULL THEN
LET kdatos[arr_curr()].cantidad2 =kdatos[arr_curr()].lado_1 *kdatos[arr_curr()].cantidad
END IF
IF kdatos[arr_curr()].lado_2 IS NOT NULL THEN
LET kdatos[arr_curr()].cantidad2 =kdatos[arr_curr()].lado_1 * kdatos[arr_curr()].lado_2* kdatos[arr_curr()].cantidad
END IF
IF kdatos[arr_curr()].lado_3 IS NOT NULL THEN
LET kdatos[arr_curr()].cantidad2 =kdatos[arr_curr()].cantidad2* kdatos[arr_curr()].lado_3* kdatos[arr_curr()].cantidad
END IF
DISPLAY kdatos[arr_curr()].cantidad2 TO sdatos[scr_line()].cantidad2
LET totalmedida = totalmedida + kdatos[arr_curr()].cantidad2
DISPLAY BY NAME totalmedida
END IF
AFTER INPUT
IF int_flag THEN
LET int_flag = FALSE
CALL msg(2)
END IF
LET totalmedida =0
FOR i =1 to kdatos.getLength()
IF kdatos[i].cantidad IS NOT NULL THEN
IF kdatos[i].lado_1 IS NOT NULL THEN
LET kdatos[i].cantidad2 =kdatos[i].lado_1 *kdatos[i].cantidad
END IF
IF kdatos[i].lado_2 IS NOT NULL THEN
LET kdatos[i].cantidad2 =kdatos[i].lado_1 * kdatos[i].lado_2* kdatos[i].cantidad
END IF
IF kdatos[i].lado_3 IS NOT NULL THEN
LET kdatos[i].cantidad2 =kdatos[i].cantidad2* kdatos[i].lado_3
END IF
LET totalmedida = totalmedida + kdatos[i].cantidad2
END IF
END FOR
EXIT INPUT
ON ACTION salvar ATTRIBUTE(TEXT="Guardar",IMAGE="fa-save")
CALL guarda_info()
END INPUT
CLOSE WINDOW w1
RETURN totalmedida
END FUNCTION
FUNCTION busca_detalle()
DECLARE busca_desglose CURSOR FOR
SELECT a.book,a.tipos,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.cantidad2,a.tono,a.calidad,
a.observacion,
a.idproducto,a.bodega,a.cod_seccion,a.cod_tramo,a.codid, a.idrow,a.idtrx
FROM iptb00062 a WHERE a.codid = xcodid AND a.fecha = xfecha
ORDER BY a.lado_1
LET i = 1
FOREACH busca_desglose INTO kdatos[i].*
LET i = i + 1
END FOREACH
END FUNCTION
FUNCTION guarda_info()
BEGIN WORK
DELETE FROM iptb00062 WHERE fecha = xfecha AND bodega = xbodega AND codid = xcodid
FOR i = 1 TO kdatos.getLength()
IF kdatos[i].cantidad2 IS NOT NULL THEN
INSERT INTO iptb00062 (codid,cod_n,cod_grupo,cod_tipo,cod_Sec,cantidad,cantidad2,lado_1,lado_2,lado_3,
book,tipos,cod_seccion,cod_tramo,bodega,us_crea,fech_crea,idproducto,idtrx,tono,calidad,fecha,
observacion)
VALUES (kdatos[i].codid,xcodn,xcodgrupo,xcodtipo,xcodsec,kdatos[i].cantidad,kdatos[i].cantidad2,
kdatos[i].lado_1,kdatos[i].lado_2,kdatos[i].lado_3,kdatos[i].bookmash,kdatos[i].tipos,
kdatos[i].seccion,kdatos[i].tramo,kdatos[i].bodega,suser_sname(),getdate(),
kdatos[i].id_producto,kidtrx,kdatos[i].tono,kdatos[i].calidad,xfecha,
kdatos[i].xobservacion)
END IF
END FOR
COMMIT WORK
CALL msg(1)
END FUNCTION
+164 -164
View File
@@ -1,165 +1,165 @@
GLOBALS "irprgb000.4gl"
DEFINE xcodigo VARCHAR(50)
DEFINE despiece1 DYNAMIC ARRAY OF RECORD
id_etiqueta SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
lado_1 DEC(12,5),
lado_2 DEC(12,5),
lado_3 DEC(12,5),
cantidad DEC(12,5),
medida DEC(12,5),
secuencia,id_despiece INT,
bodega SMALLINT
END RECORD
DEFINE vendedor VARCHAR(100)
FUNCTION impdocumentos(numeroid,codmov)
DEFINE numeroid,codmov INT
CALL buscadoc(numeroid,codmov)
LET r_filename = "irprmt020.4rp"
iF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
LET r_output="PDF"
LET preview=1
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
ELSE
RETURN
END IF
START REPORT requiere TO XML HANDLER HANDLER
FOR idx = 1 TO arr_irtb58.getLength()
IF arr_irtb58[idx].cod_Sec IS NOT NULL THEN
LET xcodigo =arr_irtb58[idx].cod_n USING '&&&&&','-',
arr_irtb58[idx].cod_grupo USING '&&&&&','-',
arr_irtb58[idx].cod_tipo USING '&&&&&&','-',
arr_irtb58[idx].cod_sec USING '&&&&&&&'
DISPLAY arr_irtb58[idx].*
DISPLAY xcodigo
OUTPUT TO REPORT requiere(arr_irtb58[idx].*,despiece[idx].*, xcodigo)
END IF
END FOR
FINISH REPORT requiere
LET tienedespiece = FALSE
END FUNCTION
REPORT requiere(detalle,xdespiece,codigo)
DEFINE hora STRING,
detalle RECORD
area INT,
cod_n,cod_grupo,cod_tipo,cod_sec INT,
descripcion VARCHAR(100),
unidad_med VARCHAR(4),
cantidad_1,cantidad,cantidad_o1,cantidad1,factor_conv DEC(12,5)
END RECORD,
xdespiece RECORD
id_etiqueta SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
lado_1 DEC(12,5),
lado_2 DEC(12,5),
lado_3 DEC(12,5),
cantidad DEC(12,5),
medida DEC(12,5),
secuencia,id_despiece INT,
bodega SMALLINT
END RECORD,
codigo VARCHAR(50),
x INT,
etiqueta VARCHAR(100)
ORDER BY codigo
FORMAT
FIRST PAGE HEADER
SELECT a.nombre INTO p_companias.nombre FROM companias a
LET hora = CURRENT
PRINTX hora,p_companias.nombre
BEFORE GROUP OF codigo
PRINTX detalle.*,p_irtb57.*,
nombreMov,nombreBodega,nombreBodegaDestino,nombreUsuario
ON EVERY ROW
SELECT a.descripcion INTO etiqueta FROM vetb00026 a
WHERE a.codid = xdespiece.id_etiqueta
LET total_cantidad = total_cantidad + xdespiece.cantidad
PRINTX codigo,xdespiece.*,tienedespiece,etiqueta,total_cantidad,total_medida
END REPORT
FUNCTION buscadoc(numid,codmov)
DEFINE numid,codmov INT
LET vendedor = null
SELECT a.numero_Doc,a.cod_mov,a.fecha,a.num_oc,a.tipo_cliente,a.sec_cliente,a.nombre,a.bodega,a.bodega_destino,
a.estado,a.url_destino,a.observacion,b.descrip_mov,c.descripcion,
'('||ISNULL(CAST(f.num_emp AS VARCHAR(10)),' ')||')'||ISNULL(rtrim(f.nom1_emp),' ')||' '||ISNULL(f.apell1_emp,' ')
INTO p_irtb57.numero_doc,p_irtb57.cod_mov,p_irtb57.fecha,p_irtb57.num_oc,p_irtb57.tipo_cliente,p_irtb57.sec_cliente,
p_irtb57.cliente,p_irtb57.bodega,p_irtb57.bodega_destino,p_irtb57.estado,
p_irtb57.url_file,p_irtb57.observacion,nombreMov,nombreBodega,vendedor
FROM irtb00057 a INNER JOIN irtb00005 b ON b.cod_mov = a.cod_mov
INNER JOIN intb00009 c ON c.cod_bodega = a.bodega
LEFT OUTER JOIN prtb00012 d ON d.num_oc = a.num_oc
LEFT OUTER JOIN adtb00003 f ON f.num_emp = d.sec_vend
WHERE a.numero_doc = numid AND a.cod_mov = codmov
#BODEGA DESTINO
IF p_irtb57.bodega_destino IS NOT NULL THEN
SELECT a.descripcion INTO nombreBodegaDestino FROM intb00009 a WHERE a.cod_bodega = p_irtb57.bodega_destino
END IF
DECLARE buscardetalle CURSOR FOR
SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descripcion,a.unidad_med,
a.cantidad_1,a.cantidad_2,
c.id_etiqueta,
c.lado_1,c.lado_2,c.lado_3,c.cantidad,c.medida
FROM irtb00058 a
LEFT OUTER JOIN irtb00060 c ON c.cod_n =a.cod_n AND c.cod_grupo = a.cod_grupo AND
c.cod_tipo = a.cod_tipo AND c.cod_sec = a.cod_Sec AND
c.id_despiece = a.numero_Doc
WHERE a.numero_Doc = numid AND a.cod_mov = codmov
LET idx = 1
CALL arr_irtb58.clear()
LET tienedespiece = FALSE
FOREACH buscardetalle INTO arr_irtb58[idx].area,
arr_irtb58[idx].cod_n,
arr_irtb58[idx].cod_grupo,
arr_irtb58[idx].cod_tipo,
arr_irtb58[idx].cod_sec,
arr_irtb58[idx].descripcion,
arr_irtb58[idx].unidad_med,
arr_irtb58[idx].cantidad_1,
arr_irtb58[idx].cantidad,
#arr_irtb58[idx].factor_conv,
despiece1[idx].id_etiqueta,
despiece1[idx].lado_1,
despiece1[idx].lado_2,
despiece1[idx].lado_3,
despiece1[idx].cantidad,
despiece1[idx].medida
IF despiece1[idx].cantidad > 0 THEN
LET tienedespiece = TRUE
ELSE
LET tienedespiece = FALSE
END IF
LET idx = idx + 1
END FOREACH
GLOBALS "irprgb000.4gl"
DEFINE xcodigo VARCHAR(50)
DEFINE despiece1 DYNAMIC ARRAY OF RECORD
id_etiqueta SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
lado_1 DEC(12,5),
lado_2 DEC(12,5),
lado_3 DEC(12,5),
cantidad DEC(12,5),
medida DEC(12,5),
secuencia,id_despiece INT,
bodega SMALLINT
END RECORD
DEFINE vendedor VARCHAR(100)
FUNCTION impdocumentos(numeroid,codmov)
DEFINE numeroid,codmov INT
CALL buscadoc(numeroid,codmov)
LET r_filename = "irprmt020.4rp"
iF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
LET r_output="PDF"
LET preview=1
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
ELSE
RETURN
END IF
START REPORT requiere TO XML HANDLER HANDLER
FOR idx = 1 TO arr_irtb58.getLength()
IF arr_irtb58[idx].cod_Sec IS NOT NULL THEN
LET xcodigo =arr_irtb58[idx].cod_n USING '&&&&&','-',
arr_irtb58[idx].cod_grupo USING '&&&&&','-',
arr_irtb58[idx].cod_tipo USING '&&&&&&','-',
arr_irtb58[idx].cod_sec USING '&&&&&&&'
DISPLAY arr_irtb58[idx].*
DISPLAY xcodigo
OUTPUT TO REPORT requiere(arr_irtb58[idx].*,despiece[idx].*, xcodigo)
END IF
END FOR
FINISH REPORT requiere
LET tienedespiece = FALSE
END FUNCTION
REPORT requiere(detalle,xdespiece,codigo)
DEFINE hora STRING,
detalle RECORD
area INT,
cod_n,cod_grupo,cod_tipo,cod_sec INT,
descripcion VARCHAR(100),
unidad_med VARCHAR(4),
cantidad_1,cantidad,cantidad_o1,cantidad1,factor_conv DEC(12,5)
END RECORD,
xdespiece RECORD
id_etiqueta SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
lado_1 DEC(12,5),
lado_2 DEC(12,5),
lado_3 DEC(12,5),
cantidad DEC(12,5),
medida DEC(12,5),
secuencia,id_despiece INT,
bodega SMALLINT
END RECORD,
codigo VARCHAR(50),
x INT,
etiqueta VARCHAR(100)
ORDER BY codigo
FORMAT
FIRST PAGE HEADER
SELECT a.nombre INTO p_companias.nombre FROM companias a
LET hora = CURRENT
PRINTX hora,p_companias.nombre
BEFORE GROUP OF codigo
PRINTX detalle.*,p_irtb57.*,
nombreMov,nombreBodega,nombreBodegaDestino,nombreUsuario
ON EVERY ROW
SELECT a.descripcion INTO etiqueta FROM vetb00026 a
WHERE a.codid = xdespiece.id_etiqueta
LET total_cantidad = total_cantidad + xdespiece.cantidad
PRINTX codigo,xdespiece.*,tienedespiece,etiqueta,total_cantidad,total_medida
END REPORT
FUNCTION buscadoc(numid,codmov)
DEFINE numid,codmov INT
LET vendedor = null
SELECT a.numero_Doc,a.cod_mov,a.fecha,a.num_oc,a.tipo_cliente,a.sec_cliente,a.nombre,a.bodega,a.bodega_destino,
a.estado,a.url_destino,a.observacion,b.descrip_mov,c.descripcion,
'('||ISNULL(CAST(f.num_emp AS VARCHAR(10)),' ')||')'||ISNULL(rtrim(f.nom1_emp),' ')||' '||ISNULL(f.apell1_emp,' ')
INTO p_irtb57.numero_doc,p_irtb57.cod_mov,p_irtb57.fecha,p_irtb57.num_oc,p_irtb57.tipo_cliente,p_irtb57.sec_cliente,
p_irtb57.cliente,p_irtb57.bodega,p_irtb57.bodega_destino,p_irtb57.estado,
p_irtb57.url_file,p_irtb57.observacion,nombreMov,nombreBodega,vendedor
FROM irtb00057 a INNER JOIN irtb00005 b ON b.cod_mov = a.cod_mov
INNER JOIN intb00009 c ON c.cod_bodega = a.bodega
LEFT OUTER JOIN prtb00012 d ON d.num_oc = a.num_oc
LEFT OUTER JOIN adtb00003 f ON f.num_emp = d.sec_vend
WHERE a.numero_doc = numid AND a.cod_mov = codmov
#BODEGA DESTINO
IF p_irtb57.bodega_destino IS NOT NULL THEN
SELECT a.descripcion INTO nombreBodegaDestino FROM intb00009 a WHERE a.cod_bodega = p_irtb57.bodega_destino
END IF
DECLARE buscardetalle CURSOR FOR
SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descripcion,a.unidad_med,
a.cantidad_1,a.cantidad_2,
c.id_etiqueta,
c.lado_1,c.lado_2,c.lado_3,c.cantidad,c.medida
FROM irtb00058 a
LEFT OUTER JOIN irtb00060 c ON c.cod_n =a.cod_n AND c.cod_grupo = a.cod_grupo AND
c.cod_tipo = a.cod_tipo AND c.cod_sec = a.cod_Sec AND
c.id_despiece = a.numero_Doc
WHERE a.numero_Doc = numid AND a.cod_mov = codmov
LET idx = 1
CALL arr_irtb58.clear()
LET tienedespiece = FALSE
FOREACH buscardetalle INTO arr_irtb58[idx].area,
arr_irtb58[idx].cod_n,
arr_irtb58[idx].cod_grupo,
arr_irtb58[idx].cod_tipo,
arr_irtb58[idx].cod_sec,
arr_irtb58[idx].descripcion,
arr_irtb58[idx].unidad_med,
arr_irtb58[idx].cantidad_1,
arr_irtb58[idx].cantidad,
#arr_irtb58[idx].factor_conv,
despiece1[idx].id_etiqueta,
despiece1[idx].lado_1,
despiece1[idx].lado_2,
despiece1[idx].lado_3,
despiece1[idx].cantidad,
despiece1[idx].medida
IF despiece1[idx].cantidad > 0 THEN
LET tienedespiece = TRUE
ELSE
LET tienedespiece = FALSE
END IF
LET idx = idx + 1
END FOREACH
END FUNCTION
+438 -438
View File
@@ -1,438 +1,438 @@
{
PROGRAMA: irautorizareq
OBJETIVO: Mostrar al usuario las requisiciones autorizadas
FECHA : Mayo 9, 2022
}
GLOBALS "irprgb000.4gl"
DEFINE
r INT,
arr_busqueda1 DYNAMIC ARRAY OF RECORD
procesar VARCHAR(3),
estado VARCHAR(20),
idestado INT,
num_oc INT,
tipo_documento VARCHAR(100),
numeroid INT,
fecha DATE,
nombre, observacion1, origen, destino, usuario VARCHAR(100),
vendedor VARCHAR(100),
archivo VARCHAR(200),
cod_mov1 INT,
us_crea VARCHAR(50),
rtipo_cliente, rsec_cliente, bodega, bodega_destino INT
END RECORD,
nombreusuario, email, vendedor VARCHAR(100),
tienedespiece BOOLEAN,
cuentaimp INT
DEFINE despiece1 DYNAMIC ARRAY OF RECORD
id_etiqueta SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
lado_1 DEC(12, 5),
lado_2 DEC(12, 5),
lado_3 DEC(12, 5),
cantidad DEC(12, 5),
medida DEC(12, 5),
secuencia, id_despiece INT,
bodega SMALLINT
END RECORD
DEFINE curr INT
FUNCTION irautorizadas(xusuario)
DEFINE
data RECORD
rnumeroDoc,
rcodMov,
rtipo_cliente,
num_oc,
tipo_cliente,
sec_cliente,
bodega,
bodega_destino
INT,
nombre VARCHAR(100)
END RECORD,
xusuario VARCHAR(50)
CALL arr_busqueda1.clear()
INITIALIZE curr TO NULL
CALL buscadataReq(xusuario)
IF r = 1 THEN
RETURN data.*
END IF
OPEN WINDOW w1 WITH FORM "irautorizareq"
INPUT ARRAY arr_busqueda1
FROM sbusqueda.*
ATTRIBUTE(WITHOUT DEFAULTS, UNBUFFERED)
BEFORE INPUT
DISPLAY 'REQUISICIONES TRANSACCIONES AUTORIZADAS' TO etiqueta
CALL DIALOG.setActionActive("accept", FALSE)
{ BEFORE ROW
LET r = arr_curr()
IF arr_busqueda1[r].archivo IS NULL THEN
CALL DIALOG.setActionActive( "tfile", FALSE )
ELSE
CALL DIALOG.setActionActive( "tfile", TRUE )
END IF}
CALL estadosprocesos(1)
ON ACTION tfile
LET r = arr_curr()
IF arr_busqueda1[r].archivo IS NOT NULL THEN
CALL ui.Interface.frontCall(
"standard", "launchURL", [arr_busqueda1[r].archivo], [])
END IF
ON ACTION imprimir ATTRIBUTE(TEXT = "Imprimir", IMAGE = "printer")
IF arr_busqueda1[arr_curr()].numeroid > 0 THEN
CALL buscadoc(
arr_busqueda1[arr_curr()].numeroid,
arr_busqueda1[arr_curr()].cod_mov1)
LET data.rnumeroDoc = arr_busqueda1[arr_curr()].numeroid
LET data.rcodMov = arr_busqueda1[arr_curr()].cod_mov1
LET data.rtipo_cliente = arr_busqueda1[arr_curr()].rtipo_cliente
LET data.sec_cliente = arr_busqueda1[arr_curr()].rsec_cliente
LET data.nombre = arr_busqueda1[arr_curr()].nombre
LET data.num_oc = arr_busqueda1[arr_curr()].num_oc
LET data.bodega = arr_busqueda1[arr_curr()].bodega
LET data.bodega_destino =
arr_busqueda1[arr_curr()].bodega_destino
LET nombreUsuario = arr_busqueda1[arr_curr()].usuario
DISPLAY data.*
DISPLAY nombreUsuario
CALL impdocumento()
END IF
ON ACTION procesar ATTRIBUTE(TEXT = "Procesa", IMAGE = "")
LET curr = arr_curr()
IF arr_busqueda1[curr].numeroid > 0 THEN
LET data.rnumeroDoc = arr_busqueda1[curr].numeroid
LET data.rcodMov = arr_busqueda1[curr].cod_mov1
LET data.rtipo_cliente = arr_busqueda1[curr].rtipo_cliente
LET data.sec_cliente = arr_busqueda1[curr].rsec_cliente
LET data.nombre = arr_busqueda1[curr].nombre
LET data.num_oc = arr_busqueda1[curr].num_oc
LET data.bodega = arr_busqueda1[curr].bodega
LET data.bodega_destino = arr_busqueda1[curr].bodega_destino
EXIT INPUT
END IF
ON CHANGE observacion1
IF arr_busqueda1[arr_curr()].numeroid > 0 THEN
UPDATE irtb00057
SET observacion = arr_busqueda1[arr_curr()].observacion1,
us_mod = usuarios,
fech_mod = getdate()
WHERE numero_doc = arr_busqueda1[arr_curr()].numeroid
END IF
ON CHANGE idestado
IF arr_busqueda1[arr_curr()].numeroid > 0 THEN
UPDATE irtb00057
SET idestado = arr_busqueda1[arr_curr()].idestado,
observacion = arr_busqueda1[arr_curr()].observacion1,
us_mod = usuarios,
fech_mod = getdate()
WHERE numero_doc = arr_busqueda1[arr_curr()].numeroid
END IF
AFTER INPUT
IF int_flag THEN
LET data.rnumeroDoc = NULL
LET data.rcodMov = NULL
LET data.rtipo_cliente = NULL
LET data.sec_cliente = NULL
LET data.nombre = NULL
LET data.num_oc = NULL
LET data.bodega = NULL
LET data.bodega_destino = NULL
LET int_flag = FALSE
END IF
EXIT INPUT
END INPUT
CLOSE WINDOW w1
RETURN data.*
END FUNCTION
FUNCTION buscadataReq(pusuario)
DEFINE pusuario VARCHAR(50)
DECLARE buscar CURSOR FOR
SELECT ' ',
b.estado,
b.idestado,
b.num_oc,
CAST(a.cod_mov AS VARCHAR(10)) || ' ' || a.descrip_mov,
b.numero_doc,
b.fecha,
'',
b.observacion,
(SELECT p1.descripcion
FROM intb00009 p1
WHERE p1.cod_bodega = b.bodega)
AS ORIGEN,
(SELECT p2.descripcion
FROM intb00009 p2
WHERE p2.cod_bodega = b.bodega_destino),
' ',
' '
,
b.url_destino,
b.cod_mov,
b.us_crea,
'0',
'0',
b.bodega,
b.bodega_destino
FROM irtb00005 a,
irtb00057 b
INNER
JOIN irtb00048 d
ON d.bodega = b.bodega AND d.usuario = pusuario
WHERE a.cod_mov = b.cod_mov
AND b.estado = 'AUTORIZADA'
AND b.status_t IS NULL
LET r = 1
CALL arr_busqueda1.clear()
FOREACH buscar INTO arr_busqueda1[r].*
CALL usuarioSistema(
arr_busqueda1[r].us_crea)
RETURNING nombreUsuario, email
LET arr_busqueda1[r].usuario = nombreUsuario
LET r = r + 1
END FOREACH
END FUNCTION
FUNCTION buscadoc(numid, codmov)
DEFINE numid, codmov INT
LET vendedor = NULL
SELECT a.numero_Doc,
a.cod_mov,
a.fecha,
a.num_oc,
a.tipo_cliente,
a.sec_cliente,
a.nombre,
a.bodega,
a.bodega_destino,
a.estado,
a.url_destino,
a.observacion,
b.descrip_mov,
c.descripcion
INTO p_irtb57.numero_doc,
p_irtb57.cod_mov,
p_irtb57.fecha,
p_irtb57.num_oc,
p_irtb57.tipo_cliente,
p_irtb57.sec_cliente,
p_irtb57.cliente,
p_irtb57.bodega,
p_irtb57.bodega_destino,
p_irtb57.estado,
p_irtb57.url_file,
p_irtb57.observacion,
nombreMov,
nombreBodega
FROM irtb00057 a INNER JOIN irtb00005 b ON b.cod_mov = a.cod_mov
INNER
JOIN intb00009 c
ON c.cod_bodega = a.bodega
#-> Se eliminaron los JOIN a prtb00012 y adtb00003: una requisicion de
# REPUESTOS no puede tener orden de pedido de cliente ni nada de ventas,
# y el join por sec_vend rompia la consulta (-4104 f.sec_vend).
WHERE a.numero_doc = numid AND a.cod_mov = codmov
#BODEGA DESTINO
IF p_irtb57.bodega_destino IS NOT NULL THEN
SELECT a.descripcion
INTO nombreBodegaDestino
FROM intb00009 a
WHERE a.cod_bodega = p_irtb57.bodega_destino
END IF
DECLARE buscardetalle CURSOR FOR
SELECT a.area,
a.cod_n,
a.cod_grupo,
a.cod_tipo,
a.cod_sec,
a.descripcion,
a.unidad_med,
a.cantidad_1,
a.cantidad_2,
c.id_etiqueta,
c.lado_1,
c.lado_2,
c.lado_3,
c.cantidad,
c.medida
FROM irtb00058 a
LEFT OUTER
JOIN irtb00060 c
ON c.cod_n = a.cod_n
AND c.cod_grupo = a.cod_grupo
AND c.cod_tipo = a.cod_tipo
AND c.cod_sec = a.cod_Sec
AND c.id_despiece = a.numero_Doc
WHERE a.numero_Doc = numid AND a.cod_mov = codmov
LET idx = 1
CALL arr_irtb58.clear()
LET tienedespiece = FALSE
FOREACH buscardetalle
INTO arr_irtb58[idx].area,
arr_irtb58[idx].cod_n,
arr_irtb58[idx].cod_grupo,
arr_irtb58[idx].cod_tipo,
arr_irtb58[idx].cod_sec,
arr_irtb58[idx].descripcion,
arr_irtb58[idx].unidad_med,
arr_irtb58[idx].cantidad_1,
arr_irtb58[idx].cantidad,
#arr_irtb58[idx].factor_conv,
despiece1[idx].id_etiqueta,
despiece1[idx].lado_1,
despiece1[idx].lado_2,
despiece1[idx].lado_3,
despiece1[idx].cantidad,
despiece1[idx].medida
IF despiece1[idx].cantidad > 0 THEN
LET tienedespiece = TRUE
ELSE
LET tienedespiece = FALSE
END IF
LET idx = idx + 1
END FOREACH
END FUNCTION
FUNCTION impdocumento()
DEFINE
idx_l INT,
xcodigo VARCHAR(50)
LET r_filename = "irprmt020_1.4rp"
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
LET r_output = "PDF"
LET preview = 1
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
ELSE
RETURN
END IF
START REPORT requiere TO XML HANDLER HANDLER
FOR idx = 1 TO arr_irtb58.getLength()
IF arr_irtb58[idx].cod_Sec IS NOT NULL THEN
LET xcodigo =
arr_irtb58[idx].cod_n USING '&&&&&',
'-',
arr_irtb58[idx].cod_grupo USING '&&&&&',
'-',
arr_irtb58[idx].cod_tipo USING '&&&&&&',
'-',
arr_irtb58[idx].cod_sec USING '&&&&&&&'
OUTPUT TO REPORT requiere(
p_irtb57.*, arr_irtb58[idx].*, despiece1[idx].*, xcodigo)
END IF
END FOR
FINISH REPORT requiere
END FUNCTION
REPORT requiere(x, detalle, xdespiece, codigo)
DEFINE
hora STRING,
detalle RECORD
area INT,
cod_n, cod_grupo, cod_tipo, cod_sec INT,
descripcion VARCHAR(100),
unidad_med VARCHAR(4),
cantidad_1, cantidad, cantidad_o1, cantidad1, factor_conv DEC(12, 5)
END RECORD,
xdespiece RECORD
id_etiqueta SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
lado_1 DEC(12, 5),
lado_2 DEC(12, 5),
lado_3 DEC(12, 5),
cantidad DEC(12, 5),
medida DEC(12, 5),
secuencia, id_despiece INT,
bodega SMALLINT
END RECORD,
codigo VARCHAR(50),
x RECORD
numero_doc INT,
cod_mov SMALLINT,
fecha DATE,
num_oc INT,
orden_trabajo INT,
observacion VARCHAR(200),
tipo_cliente SMALLINT,
sec_cliente INT,
cliente VARCHAR(100),
bodega SMALLINT,
bodega_destino SMALLINT,
estado VARCHAR(50),
ruta_documento, url_file VARCHAR(250),
idstado VARCHAR(60)
END RECORD,
etiqueta VARCHAR(100),
total_cantidad, total_medida DEC(12, 5)
ORDER BY codigo
FORMAT
FIRST PAGE HEADER
SELECT a.nombre INTO p_companias.nombre FROM companias a
LET hora = CURRENT
PRINTX p_companias.nombre,
hora,
x.*,
nombreMov,
nombreBodega,
nombreBodegaDestino,
nombreUsuario,
vendedor
BEFORE GROUP OF codigo
PRINTX dEtalle.*
ON EVERY ROW
SELECT a.descripcion
INTO etiqueta
FROM vetb00026 a
WHERE a.codid = xdespiece.id_etiqueta
LET total_cantidad = total_cantidad + xdespiece.cantidad
PRINTX codigo,
xdespiece.*,
tienedespiece,
etiqueta,
total_cantidad,
total_medida
END REPORT
{
PROGRAMA: irautorizareq
OBJETIVO: Mostrar al usuario las requisiciones autorizadas
FECHA : Mayo 9, 2022
}
GLOBALS "irprgb000.4gl"
DEFINE
r INT,
arr_busqueda1 DYNAMIC ARRAY OF RECORD
procesar VARCHAR(3),
estado VARCHAR(20),
idestado INT,
num_oc INT,
tipo_documento VARCHAR(100),
numeroid INT,
fecha DATE,
nombre, observacion1, origen, destino, usuario VARCHAR(100),
vendedor VARCHAR(100),
archivo VARCHAR(200),
cod_mov1 INT,
us_crea VARCHAR(50),
rtipo_cliente, rsec_cliente, bodega, bodega_destino INT
END RECORD,
nombreusuario, email, vendedor VARCHAR(100),
tienedespiece BOOLEAN,
cuentaimp INT
DEFINE despiece1 DYNAMIC ARRAY OF RECORD
id_etiqueta SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
lado_1 DEC(12, 5),
lado_2 DEC(12, 5),
lado_3 DEC(12, 5),
cantidad DEC(12, 5),
medida DEC(12, 5),
secuencia, id_despiece INT,
bodega SMALLINT
END RECORD
DEFINE curr INT
FUNCTION irautorizadas(xusuario)
DEFINE
data RECORD
rnumeroDoc,
rcodMov,
rtipo_cliente,
num_oc,
tipo_cliente,
sec_cliente,
bodega,
bodega_destino
INT,
nombre VARCHAR(100)
END RECORD,
xusuario VARCHAR(50)
CALL arr_busqueda1.clear()
INITIALIZE curr TO NULL
CALL buscadataReq(xusuario)
IF r = 1 THEN
RETURN data.*
END IF
OPEN WINDOW w1 WITH FORM "irautorizareq"
INPUT ARRAY arr_busqueda1
FROM sbusqueda.*
ATTRIBUTE(WITHOUT DEFAULTS, UNBUFFERED)
BEFORE INPUT
DISPLAY 'REQUISICIONES TRANSACCIONES AUTORIZADAS' TO etiqueta
CALL DIALOG.setActionActive("accept", FALSE)
{ BEFORE ROW
LET r = arr_curr()
IF arr_busqueda1[r].archivo IS NULL THEN
CALL DIALOG.setActionActive( "tfile", FALSE )
ELSE
CALL DIALOG.setActionActive( "tfile", TRUE )
END IF}
CALL estadosprocesos(1)
ON ACTION tfile
LET r = arr_curr()
IF arr_busqueda1[r].archivo IS NOT NULL THEN
CALL ui.Interface.frontCall(
"standard", "launchURL", [arr_busqueda1[r].archivo], [])
END IF
ON ACTION imprimir ATTRIBUTE(TEXT = "Imprimir", IMAGE = "printer")
IF arr_busqueda1[arr_curr()].numeroid > 0 THEN
CALL buscadoc(
arr_busqueda1[arr_curr()].numeroid,
arr_busqueda1[arr_curr()].cod_mov1)
LET data.rnumeroDoc = arr_busqueda1[arr_curr()].numeroid
LET data.rcodMov = arr_busqueda1[arr_curr()].cod_mov1
LET data.rtipo_cliente = arr_busqueda1[arr_curr()].rtipo_cliente
LET data.sec_cliente = arr_busqueda1[arr_curr()].rsec_cliente
LET data.nombre = arr_busqueda1[arr_curr()].nombre
LET data.num_oc = arr_busqueda1[arr_curr()].num_oc
LET data.bodega = arr_busqueda1[arr_curr()].bodega
LET data.bodega_destino =
arr_busqueda1[arr_curr()].bodega_destino
LET nombreUsuario = arr_busqueda1[arr_curr()].usuario
DISPLAY data.*
DISPLAY nombreUsuario
CALL impdocumento()
END IF
ON ACTION procesar ATTRIBUTE(TEXT = "Procesa", IMAGE = "")
LET curr = arr_curr()
IF arr_busqueda1[curr].numeroid > 0 THEN
LET data.rnumeroDoc = arr_busqueda1[curr].numeroid
LET data.rcodMov = arr_busqueda1[curr].cod_mov1
LET data.rtipo_cliente = arr_busqueda1[curr].rtipo_cliente
LET data.sec_cliente = arr_busqueda1[curr].rsec_cliente
LET data.nombre = arr_busqueda1[curr].nombre
LET data.num_oc = arr_busqueda1[curr].num_oc
LET data.bodega = arr_busqueda1[curr].bodega
LET data.bodega_destino = arr_busqueda1[curr].bodega_destino
EXIT INPUT
END IF
ON CHANGE observacion1
IF arr_busqueda1[arr_curr()].numeroid > 0 THEN
UPDATE irtb00057
SET observacion = arr_busqueda1[arr_curr()].observacion1,
us_mod = usuarios,
fech_mod = getdate()
WHERE numero_doc = arr_busqueda1[arr_curr()].numeroid
END IF
ON CHANGE idestado
IF arr_busqueda1[arr_curr()].numeroid > 0 THEN
UPDATE irtb00057
SET idestado = arr_busqueda1[arr_curr()].idestado,
observacion = arr_busqueda1[arr_curr()].observacion1,
us_mod = usuarios,
fech_mod = getdate()
WHERE numero_doc = arr_busqueda1[arr_curr()].numeroid
END IF
AFTER INPUT
IF int_flag THEN
LET data.rnumeroDoc = NULL
LET data.rcodMov = NULL
LET data.rtipo_cliente = NULL
LET data.sec_cliente = NULL
LET data.nombre = NULL
LET data.num_oc = NULL
LET data.bodega = NULL
LET data.bodega_destino = NULL
LET int_flag = FALSE
END IF
EXIT INPUT
END INPUT
CLOSE WINDOW w1
RETURN data.*
END FUNCTION
FUNCTION buscadataReq(pusuario)
DEFINE pusuario VARCHAR(50)
DECLARE buscar CURSOR FOR
SELECT ' ',
b.estado,
b.idestado,
b.num_oc,
CAST(a.cod_mov AS VARCHAR(10)) || ' ' || a.descrip_mov,
b.numero_doc,
b.fecha,
'',
b.observacion,
(SELECT p1.descripcion
FROM intb00009 p1
WHERE p1.cod_bodega = b.bodega)
AS ORIGEN,
(SELECT p2.descripcion
FROM intb00009 p2
WHERE p2.cod_bodega = b.bodega_destino),
' ',
' '
,
b.url_destino,
b.cod_mov,
b.us_crea,
'0',
'0',
b.bodega,
b.bodega_destino
FROM irtb00005 a,
irtb00057 b
INNER
JOIN irtb00048 d
ON d.bodega = b.bodega AND d.usuario = pusuario
WHERE a.cod_mov = b.cod_mov
AND b.estado = 'AUTORIZADA'
AND b.status_t IS NULL
LET r = 1
CALL arr_busqueda1.clear()
FOREACH buscar INTO arr_busqueda1[r].*
CALL usuarioSistema(
arr_busqueda1[r].us_crea)
RETURNING nombreUsuario, email
LET arr_busqueda1[r].usuario = nombreUsuario
LET r = r + 1
END FOREACH
END FUNCTION
FUNCTION buscadoc(numid, codmov)
DEFINE numid, codmov INT
LET vendedor = NULL
SELECT a.numero_Doc,
a.cod_mov,
a.fecha,
a.num_oc,
a.tipo_cliente,
a.sec_cliente,
a.nombre,
a.bodega,
a.bodega_destino,
a.estado,
a.url_destino,
a.observacion,
b.descrip_mov,
c.descripcion
INTO p_irtb57.numero_doc,
p_irtb57.cod_mov,
p_irtb57.fecha,
p_irtb57.num_oc,
p_irtb57.tipo_cliente,
p_irtb57.sec_cliente,
p_irtb57.cliente,
p_irtb57.bodega,
p_irtb57.bodega_destino,
p_irtb57.estado,
p_irtb57.url_file,
p_irtb57.observacion,
nombreMov,
nombreBodega
FROM irtb00057 a INNER JOIN irtb00005 b ON b.cod_mov = a.cod_mov
INNER
JOIN intb00009 c
ON c.cod_bodega = a.bodega
#-> Se eliminaron los JOIN a prtb00012 y adtb00003: una requisicion de
# REPUESTOS no puede tener orden de pedido de cliente ni nada de ventas,
# y el join por sec_vend rompia la consulta (-4104 f.sec_vend).
WHERE a.numero_doc = numid AND a.cod_mov = codmov
#BODEGA DESTINO
IF p_irtb57.bodega_destino IS NOT NULL THEN
SELECT a.descripcion
INTO nombreBodegaDestino
FROM intb00009 a
WHERE a.cod_bodega = p_irtb57.bodega_destino
END IF
DECLARE buscardetalle CURSOR FOR
SELECT a.area,
a.cod_n,
a.cod_grupo,
a.cod_tipo,
a.cod_sec,
a.descripcion,
a.unidad_med,
a.cantidad_1,
a.cantidad_2,
c.id_etiqueta,
c.lado_1,
c.lado_2,
c.lado_3,
c.cantidad,
c.medida
FROM irtb00058 a
LEFT OUTER
JOIN irtb00060 c
ON c.cod_n = a.cod_n
AND c.cod_grupo = a.cod_grupo
AND c.cod_tipo = a.cod_tipo
AND c.cod_sec = a.cod_Sec
AND c.id_despiece = a.numero_Doc
WHERE a.numero_Doc = numid AND a.cod_mov = codmov
LET idx = 1
CALL arr_irtb58.clear()
LET tienedespiece = FALSE
FOREACH buscardetalle
INTO arr_irtb58[idx].area,
arr_irtb58[idx].cod_n,
arr_irtb58[idx].cod_grupo,
arr_irtb58[idx].cod_tipo,
arr_irtb58[idx].cod_sec,
arr_irtb58[idx].descripcion,
arr_irtb58[idx].unidad_med,
arr_irtb58[idx].cantidad_1,
arr_irtb58[idx].cantidad,
#arr_irtb58[idx].factor_conv,
despiece1[idx].id_etiqueta,
despiece1[idx].lado_1,
despiece1[idx].lado_2,
despiece1[idx].lado_3,
despiece1[idx].cantidad,
despiece1[idx].medida
IF despiece1[idx].cantidad > 0 THEN
LET tienedespiece = TRUE
ELSE
LET tienedespiece = FALSE
END IF
LET idx = idx + 1
END FOREACH
END FUNCTION
FUNCTION impdocumento()
DEFINE
idx_l INT,
xcodigo VARCHAR(50)
LET r_filename = "irprmt020_1.4rp"
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
LET r_output = "PDF"
LET preview = 1
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
ELSE
RETURN
END IF
START REPORT requiere TO XML HANDLER HANDLER
FOR idx = 1 TO arr_irtb58.getLength()
IF arr_irtb58[idx].cod_Sec IS NOT NULL THEN
LET xcodigo =
arr_irtb58[idx].cod_n USING '&&&&&',
'-',
arr_irtb58[idx].cod_grupo USING '&&&&&',
'-',
arr_irtb58[idx].cod_tipo USING '&&&&&&',
'-',
arr_irtb58[idx].cod_sec USING '&&&&&&&'
OUTPUT TO REPORT requiere(
p_irtb57.*, arr_irtb58[idx].*, despiece1[idx].*, xcodigo)
END IF
END FOR
FINISH REPORT requiere
END FUNCTION
REPORT requiere(x, detalle, xdespiece, codigo)
DEFINE
hora STRING,
detalle RECORD
area INT,
cod_n, cod_grupo, cod_tipo, cod_sec INT,
descripcion VARCHAR(100),
unidad_med VARCHAR(4),
cantidad_1, cantidad, cantidad_o1, cantidad1, factor_conv DEC(12, 5)
END RECORD,
xdespiece RECORD
id_etiqueta SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
lado_1 DEC(12, 5),
lado_2 DEC(12, 5),
lado_3 DEC(12, 5),
cantidad DEC(12, 5),
medida DEC(12, 5),
secuencia, id_despiece INT,
bodega SMALLINT
END RECORD,
codigo VARCHAR(50),
x RECORD
numero_doc INT,
cod_mov SMALLINT,
fecha DATE,
num_oc INT,
orden_trabajo INT,
observacion VARCHAR(200),
tipo_cliente SMALLINT,
sec_cliente INT,
cliente VARCHAR(100),
bodega SMALLINT,
bodega_destino SMALLINT,
estado VARCHAR(50),
ruta_documento, url_file VARCHAR(250),
idstado VARCHAR(60)
END RECORD,
etiqueta VARCHAR(100),
total_cantidad, total_medida DEC(12, 5)
ORDER BY codigo
FORMAT
FIRST PAGE HEADER
SELECT a.nombre INTO p_companias.nombre FROM companias a
LET hora = CURRENT
PRINTX p_companias.nombre,
hora,
x.*,
nombreMov,
nombreBodega,
nombreBodegaDestino,
nombreUsuario,
vendedor
BEFORE GROUP OF codigo
PRINTX dEtalle.*
ON EVERY ROW
SELECT a.descripcion
INTO etiqueta
FROM vetb00026 a
WHERE a.codid = xdespiece.id_etiqueta
LET total_cantidad = total_cantidad + xdespiece.cantidad
PRINTX codigo,
xdespiece.*,
tienedespiece,
etiqueta,
total_cantidad,
total_medida
END REPORT
+103 -103
View File
@@ -1,103 +1,103 @@
#-----------------------------------------------------------------------------
# irbuscaprod.4gl
# busca_prod() tomada de PROYECTOS/otrodir/funciones.4gl (3.20), que es la que
# enlazaba irprmt020. Va aparte porque funciones_ip.4gl redefine bodegas()
# y disponibles(), ya presentes en la libreria FUNCIONES.
#-----------------------------------------------------------------------------
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
#-----------------------------------------------------------------------------
# irbuscaprod.4gl
# busca_prod() tomada de PROYECTOS/otrodir/funciones.4gl (3.20), que es la que
# enlazaba irprmt020. Va aparte porque funciones_ip.4gl redefine bodegas()
# y disponibles(), ya presentes en la libreria FUNCIONES.
#-----------------------------------------------------------------------------
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
+40 -40
View File
@@ -1,40 +1,40 @@
database smarmotech
screen size 24 by 80
{
Mes Inicial [f1] [g4 ]
Mes Final [f2] [g5 ]
Ano [f002]
Codigo [a ]-[b ]-[c ]-[d ][e ] [g ]
Costo Estandar [f005 ]
[j]
Usuario Creador [f006 ] Usuario Modificador [f008 ]
Fecha Creacion [f007 ] Fecha Modificacion [f009 ]
}
end
tables
irtb00013,irtb00002
attributes
f1 = irtb00013.mes_ini,autonext,
comments = "Digite el mes inicial",default = 01,noentry;
g4 = formonly.descrip1 type char,default = "ENERO";
f2 = irtb00013.mes_fin,autonext,noentry,
comments = "Digite el mes final",default = 12;
g5 = formonly.descrip2 type char,default = "DICIEMBRE";
f002 = irtb00013.ano,autonext,comments = "Digite el ano";
a = irtb00013.cod_n,autonext,comments = "Digite el NIVEL";
b = irtb00013.cod_grupo,autonext,comments = "Digite el GRUPO";
c = irtb00013.cod_tipo,autonext,comments = "Digite el TIPO";
d = irtb00013.cod_sec,autonext,comments = "Digite la SECUENCIA";
e = irtb00002.descrip_esp,noentry;
g = irtb00002.unidad_med,noentry;
f005 = irtb00013.costo_st,comments = "Digite el costo";
j = irtb00013.status_t,noentry;
f006 = irtb00013.us_crea,noentry;
f007 = irtb00013.fech_crea,noentry;
f008 = irtb00013.us_mod,noentry;
f009 = irtb00013.fech_mod,noentry;
instructions
delimiters " "
end
database smarmotech
screen size 24 by 80
{
Mes Inicial [f1] [g4 ]
Mes Final [f2] [g5 ]
Ano [f002]
Codigo [a ]-[b ]-[c ]-[d ][e ] [g ]
Costo Estandar [f005 ]
[j]
Usuario Creador [f006 ] Usuario Modificador [f008 ]
Fecha Creacion [f007 ] Fecha Modificacion [f009 ]
}
end
tables
irtb00013,irtb00002
attributes
f1 = irtb00013.mes_ini,autonext,
comments = "Digite el mes inicial",default = 01,noentry;
g4 = formonly.descrip1 type char,default = "ENERO";
f2 = irtb00013.mes_fin,autonext,noentry,
comments = "Digite el mes final",default = 12;
g5 = formonly.descrip2 type char,default = "DICIEMBRE";
f002 = irtb00013.ano,autonext,comments = "Digite el ano";
a = irtb00013.cod_n,autonext,comments = "Digite el NIVEL";
b = irtb00013.cod_grupo,autonext,comments = "Digite el GRUPO";
c = irtb00013.cod_tipo,autonext,comments = "Digite el TIPO";
d = irtb00013.cod_sec,autonext,comments = "Digite la SECUENCIA";
e = irtb00002.descrip_esp,noentry;
g = irtb00002.unidad_med,noentry;
f005 = irtb00013.costo_st,comments = "Digite el costo";
j = irtb00013.status_t,noentry;
f006 = irtb00013.us_crea,noentry;
f007 = irtb00013.fech_crea,noentry;
f008 = irtb00013.us_mod,noentry;
f009 = irtb00013.fech_mod,noentry;
instructions
delimiters " "
end
+186 -186
View File
@@ -1,186 +1,186 @@
{
---------------------------------------------------------------------
PROGRAMA : IRPRCS006
OBJETIVO : Programa Consulta Balances Repuestos.
PROGRAMADOR : Juan Fco. Soto (Johnny)
FECHA REALIZACION : Marzo 2, 1993.
---------------------------------------------------------------------
}
GLOBALS
"irprgb000.4gl"
MAIN
DEFER INTERRUPT
CALL arg_val(1) RETURNING usuarios
CALL arg_val(2) RETURNING clave
CALL arg_val(3) RETURNING impresor
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprcs006()
END MAIN
FUNCTION irprcs006()
DEFINE idx1 INTEGER
DEFINE segunda CHAR(1)
DEFINE fecha1 char(8)
DEFINE hora1 char(5)
DEFINE balance_in DECIMAL(12,2)
DEFINE primera CHAR(1)
DEFINE nombre CHAR(8)
LET fecha1 = today using "dd/mm/yy"
LET hora1 = time
LET int_flag = false
LET bandera = 0
#WHENEVER ERROR CONTINUE
CLEAR SCREEN
OPTIONS
ERROR LINE 24,
FORM LINE 4,
COMMENT LINE 22,
PROMPT LINE 23
OPEN FORM irfmcs006 FROM "irfmcs006"
DISPLAY FORM irfmcs006
INITIALIZE datos_cons.* TO NULL
#WHENEVER ERROR CONTINUE
LABEL volver:
INPUT BY NAME datos_cons.* WITHOUT DEFAULTS
BEFORE INPUT
CALL csmov1.clear()
BEFORE FIELD fech_fi
LET datos_cons.fech_fi = today using "dd/mm/yy"
DISPLAY BY NAME datos_cons.fech_fi
AFTER FIELD cod_n
IF datos_cons.cod_n !=7 THEN
LET numero_msg = 114
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
AFTER FIELD cod_sec
SELECT a.descrip_esp INTO datos_cons.descrip_esp FROM irtb00002 a
WHERE a.cod_n= datos_cons.cod_n and a.cod_grupo = datos_cons.cod_grupo and
a.cod_tipo= datos_cons.cod_tipo and a.cod_sec=datos_cons.cod_sec and
a.status_t is null
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
CLEAR FORM
NEXT FIELD cod_n
END IF
CALL integridad()
if bandera = 1 THEN
LET bandera = 0
RETURN
end if
DISPLAY BY NAME datos_cons.descrip_esp
DISPLAY BY NAME datos_cons.*
AFTER FIELD fech_fi
IF datos_cons.fech_fi IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_in
END IF
IF datos_cons.fech_in IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_in
END IF
IF datos_cons.fech_in > datos_cons.fech_fi THEN
LET numero_msg = 36
CALL msg(numero_msg)
NEXT FIELD fech_in
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
CLEAR SCREEN
RETURN
END IF
SELECT sum(a.cantidad_2) INTO balance_in FROM irtb00006 a
WHERE a.cod_n = datos_cons.cod_n and a.cod_grupo = datos_cons.cod_grupo and
a.cod_tipo = datos_cons.cod_tipo and a.cod_sec = datos_cons.cod_sec and
a.status_t is null and fecha < datos_cons.fech_in
IF balance_in is null THEN
LET balance_in = 0
END IF
DECLARE jhonn_1 CURSOR FOR
SELECT p.num_doc,p.fecha,p.cantidad_1,p.cantidad_2,p.cod_mov,
b.descrip_mov
FROM irtb00006 p,OUTER irtb00005 b
WHERE p.fecha between datos_cons.fech_in and datos_cons.fech_fi and
p.cod_mov = b.cod_mov and p.cod_n = datos_cons.cod_n and
p.cod_grupo=datos_cons.cod_grupo and p.cod_tipo=datos_cons.cod_tipo and
p.cod_sec=datos_cons.cod_sec and p.status_t is null
ORDER BY 2,1
OPEN jhonn_1
LET idx = 1
LET balance = balance_in
FOREACH jhonn_1 INTO csmov.*
IF idx = 1 THEN
LET csmov1[idx].descrip_mov = "BALANCE INICIAL"
LET csmov1[idx].fecha_2 = datos_cons.fech_in
LET csmov1[idx].balance = balance USING "---,---.##"
LET idx = idx + 1
END IF
IF csmov.cantidad_2 IS NULL THEN
LET csmov.cantidad_2 = 0
END IF
LET balance = balance + csmov.cantidad_2
LET csmov1[idx].descrip_mov = "(",csmov.cod_mov using "&&",")",
csmov.descrip_mov clipped
LET csmov1[idx].fecha_2 = csmov.fecha_1
LET csmov1[idx].balance = balance USING "---,---.##"
LET csmov1[idx].num_doc = csmov.num_doc USING "&&&&&"
IF csmov.cantidad_2 <= 0 THEN
LET csmov1[idx].entrada = null
LET csmov1[idx].salida = csmov.cantidad_2 USING "---,---.##"
ELSE
LET csmov1[idx].salida = null
LET csmov1[idx].entrada = csmov.cantidad_2 USING "---,---.##"
END IF
LET idx = idx + 1
END FOREACH
CALL set_count(idx - 1)
DISPLAY ARRAY csmov1 TO s_csmov.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
CLEAR SCREEN
EXIT INPUT
END IF
CLEAR FORM
CONTINUE INPUT
END INPUT
IF INT_FLAG THEN
LET int_flag = FALSE
RETURN
END IF
END FUNCTION
{
---------------------------------------------------------------------
PROGRAMA : IRPRCS006
OBJETIVO : Programa Consulta Balances Repuestos.
PROGRAMADOR : Juan Fco. Soto (Johnny)
FECHA REALIZACION : Marzo 2, 1993.
---------------------------------------------------------------------
}
GLOBALS
"irprgb000.4gl"
MAIN
DEFER INTERRUPT
CALL arg_val(1) RETURNING usuarios
CALL arg_val(2) RETURNING clave
CALL arg_val(3) RETURNING impresor
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprcs006()
END MAIN
FUNCTION irprcs006()
DEFINE idx1 INTEGER
DEFINE segunda CHAR(1)
DEFINE fecha1 char(8)
DEFINE hora1 char(5)
DEFINE balance_in DECIMAL(12,2)
DEFINE primera CHAR(1)
DEFINE nombre CHAR(8)
LET fecha1 = today using "dd/mm/yy"
LET hora1 = time
LET int_flag = false
LET bandera = 0
#WHENEVER ERROR CONTINUE
CLEAR SCREEN
OPTIONS
ERROR LINE 24,
FORM LINE 4,
COMMENT LINE 22,
PROMPT LINE 23
OPEN FORM irfmcs006 FROM "irfmcs006"
DISPLAY FORM irfmcs006
INITIALIZE datos_cons.* TO NULL
#WHENEVER ERROR CONTINUE
LABEL volver:
INPUT BY NAME datos_cons.* WITHOUT DEFAULTS
BEFORE INPUT
CALL csmov1.clear()
BEFORE FIELD fech_fi
LET datos_cons.fech_fi = today using "dd/mm/yy"
DISPLAY BY NAME datos_cons.fech_fi
AFTER FIELD cod_n
IF datos_cons.cod_n !=7 THEN
LET numero_msg = 114
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
AFTER FIELD cod_sec
SELECT a.descrip_esp INTO datos_cons.descrip_esp FROM irtb00002 a
WHERE a.cod_n= datos_cons.cod_n and a.cod_grupo = datos_cons.cod_grupo and
a.cod_tipo= datos_cons.cod_tipo and a.cod_sec=datos_cons.cod_sec and
a.status_t is null
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
CLEAR FORM
NEXT FIELD cod_n
END IF
CALL integridad()
if bandera = 1 THEN
LET bandera = 0
RETURN
end if
DISPLAY BY NAME datos_cons.descrip_esp
DISPLAY BY NAME datos_cons.*
AFTER FIELD fech_fi
IF datos_cons.fech_fi IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_in
END IF
IF datos_cons.fech_in IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_in
END IF
IF datos_cons.fech_in > datos_cons.fech_fi THEN
LET numero_msg = 36
CALL msg(numero_msg)
NEXT FIELD fech_in
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
CLEAR SCREEN
RETURN
END IF
SELECT sum(a.cantidad_2) INTO balance_in FROM irtb00006 a
WHERE a.cod_n = datos_cons.cod_n and a.cod_grupo = datos_cons.cod_grupo and
a.cod_tipo = datos_cons.cod_tipo and a.cod_sec = datos_cons.cod_sec and
a.status_t is null and fecha < datos_cons.fech_in
IF balance_in is null THEN
LET balance_in = 0
END IF
DECLARE jhonn_1 CURSOR FOR
SELECT p.num_doc,p.fecha,p.cantidad_1,p.cantidad_2,p.cod_mov,
b.descrip_mov
FROM irtb00006 p,OUTER irtb00005 b
WHERE p.fecha between datos_cons.fech_in and datos_cons.fech_fi and
p.cod_mov = b.cod_mov and p.cod_n = datos_cons.cod_n and
p.cod_grupo=datos_cons.cod_grupo and p.cod_tipo=datos_cons.cod_tipo and
p.cod_sec=datos_cons.cod_sec and p.status_t is null
ORDER BY 2,1
OPEN jhonn_1
LET idx = 1
LET balance = balance_in
FOREACH jhonn_1 INTO csmov.*
IF idx = 1 THEN
LET csmov1[idx].descrip_mov = "BALANCE INICIAL"
LET csmov1[idx].fecha_2 = datos_cons.fech_in
LET csmov1[idx].balance = balance USING "---,---.##"
LET idx = idx + 1
END IF
IF csmov.cantidad_2 IS NULL THEN
LET csmov.cantidad_2 = 0
END IF
LET balance = balance + csmov.cantidad_2
LET csmov1[idx].descrip_mov = "(",csmov.cod_mov using "&&",")",
csmov.descrip_mov clipped
LET csmov1[idx].fecha_2 = csmov.fecha_1
LET csmov1[idx].balance = balance USING "---,---.##"
LET csmov1[idx].num_doc = csmov.num_doc USING "&&&&&"
IF csmov.cantidad_2 <= 0 THEN
LET csmov1[idx].entrada = null
LET csmov1[idx].salida = csmov.cantidad_2 USING "---,---.##"
ELSE
LET csmov1[idx].salida = null
LET csmov1[idx].entrada = csmov.cantidad_2 USING "---,---.##"
END IF
LET idx = idx + 1
END FOREACH
CALL set_count(idx - 1)
DISPLAY ARRAY csmov1 TO s_csmov.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
CLEAR SCREEN
EXIT INPUT
END IF
CLEAR FORM
CONTINUE INPUT
END INPUT
IF INT_FLAG THEN
LET int_flag = FALSE
RETURN
END IF
END FUNCTION
+457 -457
View File
@@ -1,457 +1,457 @@
SCHEMA smarmotech
GLOBALS
DEFINE arr_prod DYNAMIC ARRAY OF RECORD
cod_n INTEGER,
cod_grupo INTEGER,
cod_tipo INTEGER,
cod_sec INTEGER,
descrip_esp CHAR(30),
unidad_med CHAR(5),
existencia FLOAT
END RECORD,
p_irtb57 RECORD
numero_doc INT,
cod_mov SMALLINT,
fecha DATE,
num_oc INT,
orden_trabajo INT,
observacion VARCHAR(200),
tipo_cliente SMALLINT,
sec_cliente INT,
cliente VARCHAR(100),
bodega SMALLINT,
bodega_destino SMALLINT,
estado VARCHAR(50),
ruta_documento ,
url_file STRING,
idstado VARCHAR(60)
END RECORD,
arr_irtb58 DYNAMIC ARRAY OF RECORD
area INT,
cod_n,cod_grupo,cod_tipo,cod_sec INT,
descripcion VARCHAR(100),
unidad_med VARCHAR(4),
cantidad_1,cantidad,cantidad_o1,cantidad1,factor_conv DEC(12,5)
END RECORD,
arr_busqueda DYNAMIC ARRAY OF RECORD
estadp1 VARCHAR(50),
estado_proceso1 VARCHAR(100),
tipo_documento VARCHAR(100),
numeroid INT,
fechadoc DATE,
nombre VARCHAR(100),
observacion VARCHAR(200),
bodega_origen VARCHAR(100),
bodega_destino VARCHAR(100),
cod_mov INT,
bodega1 SMALLINT,
bodega2 SMALLINT
END RECORD,
secuencia INT,
nombreUsuario,email,nombreBodega,nombreBodegaDestino,nombreMov STRING,
cbmovimiento ui.ComboBox
DEFINE
tieneDetalle,requiere VARCHAR(2),
ordenPedidos,existe BOOLEAN,
xestado VARCHAR(50),xtiene VARCHAR(3),tienedespiece BOOLEAN,
total_cantidad,total_medida DEC(12,5),
xtiene VARCHAR(3),
cuentaimp INT
DEFINE consulta,pflag CHAR(1),
USUARIOS, CLAVE CHAR(50),
progreso SMALLINT
DEFINE cmd,imprime,copia CHAR(150),archivo CHAR(80),i,impresor SMALLINT
DEFINE doce,normal,doble,doble_of,negras,negras_off CHAR(3)
DEFINE negrilla_on,negrillas_of,comp_on,comp_off,doble_on,doble_off
CHAR(3),
pprograma CHAR(12),
handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
r_filename,inventario STRING, -- filename of Report Design Document including .4rp extension
r_output,selec_pt,TOEmail,subject,ccemail,PCCEMAIL,cuerpo_correo,procedimiento STRING
DEFINE regi,p_ultimo,curr1 INTEGER
DEFINE p_param,ya CHAR(1), -- G6: existe ya esta definida como BOOLEAN (-4319)
formulario CHAR(100) ,
lj SMALLINT,
p_companias RECORD LIKE companias.*,
nombre_d CHAR(50)
DEFINE chequea RECORD
existe LIKE irtb00002.existencia,
pto LIKE irtb00002.existencia
END RECORD,
preview smallint
DEFINE movimientos RECORD
num_doc LIKE intb00006.num_doc,
cod_mov LIKE intb00006.cod_mov,
fecha LIKE intb00006.fecha,
tipo LIKE cotb00014.tipo,
orden_compra LIKE intb00006.orden_compra,
cod_sp LIKE intb00006.cod_sp,
cod_sp_sec LIKE intb00006.cod_sp_sec,
fact_no LIKE intb00006.fact_no,
conduce_no LIKE intb00006.conduce_no,
sec_de LIKE intb00006.depto_de,
sec_a LIKE intb00006.depto_a
END RECORD
DEFINE ultimo RECORD
cond_recep LIKE intb00006.cond_recep,
uso_tiempo LIKE intb00006.uso_tiempo
END RECORD
DEFINE busca_wd1 ARRAY [100] OF RECORD
codigo LIKE adtb00001.departamento,
nom_dpto LIKE adtb00001.nom_dpto
END RECORD
DEFINE busca_wd2 ARRAY [500] OF RECORD
codigo LIKE irtb00009.codigo,
nombre LIKE irtb00009.nombre
END RECORD
DEFINE datos1 RECORD
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE irtb00005.descrip_mov,
num_doc LIKE intb00006.num_doc,
tipo LIKE irtb00006.tipo,
orden_compra LIKE irtb00006.orden_compra,
cod_sp SMALLINT,
cod_sp_sec SMALLINT,
fecha DATE,
conduce_no VARCHAR(50),
departamento INT,
nom_sp CHAR(30)
END RECORD
DEFINE p_conteo RECORD
fecha LIKE intb00006.fecha,
bodega LIKE intb00006.bodega,
cod_n LIKE intb00006.cod_n,
cod_grupo LIKE intb00006.cod_grupo,
cod_tipo LIKE intb00006.cod_tipo,
cod_sec LIKE intb00006.cod_sec,
cantidad LIKE intb00006.cantidad_2
END RECORD
DEFINE costos RECORD
mes_ini LIKE intb00013.mes_ini,
mes_fin LIKE intb00013.mes_fin,
ano LIKE intb00013.ano,
cod_n LIKE intb00001.cod_N,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
costo_st LIKE intb00013.costo_st,
us_crea LIKE intb00013.us_crea,
fech_crea LIKE intb00013.fech_crea,
us_mod LIKE intb00013.us_mod,
fech_mod LIKE intb00013.fech_mod
END RECORD
DEFINE datos RECORD
num_doc LIKE intb00006.num_doc,
fecha LIKE intb00006.fecha,
depto_de LIKE intb00006.depto_de,
depto_a LIKE intb00006.depto_a,
nom_dpto LIKE adtb00001.nom_dpto,
nom_dpto1 LIKE adtb00001.nom_dpto,
bodega LIKE intb00006.bodega
END RECORD
DEFINE datos_gen RECORD
cod_mov LIKE irtb00006.cod_mov,
num_doc LIKE irtb00006.num_doc,
tipo SMALLINT,
orden_compra LIKE irtb00006.orden_compra,
cod_sp LIKE irtb00006.cod_sp,
cod_sp_sec LIKE irtb00006.cod_sp_sec,
conduce_no LIKE irtb00006.conduce_no,
fact_no LIKE irtb00006.fact_no,
fecha DATE,
sec_a LIKE irtb00006.sec_a,
nom_sp LIKE cotb00001.nom_sp,
descrip_mov LIKE irtb00005.descrip_mov
END RECORD
DEFINE otros_mov RECORD
num_doc LIKE intb00006.num_doc,
cod_mov LIKE intb00006.cod_mov,
fecha LIKE intb00006.fecha,
descrip_mov LIKE intb00005.descrip_mov,
bodega LIKE intb00006.bodega
END RECORD
DEFINE dm_rep RECORD
departamento LIKE irtb00029.departamento,
maquina LIKE irtb00029.maquina
END RECORD
DEFINE p_fechas DATE
DEFINE bandera smallint
DEFINE nombre_dia ARRAY[7] OF char(10)
DEFINE nombre_mes ARRAY[12] OF char(10)
DEFINE general decimal(12,2)
DEFINE p_bodega SMALLINT
DEFINE mq_rep RECORD LIKE irtb00008.*
DEFINE depto RECORD LIKE adtb00001.*
DEFINE maquinaria RECORD LIKE irtb00009.*
DEFINE motor_e RECORD LIKE irtb00007.*
DEFINE arancel RECORD LIKE cotb00005.*
DEFINE motores RECORD LIKE irtb00005.*
DEFINE especifica RECORD LIKE irtb00006.*
DEFINE maquinas RECORD LIKE irtb00006.*
DEFINE status_m char(1)
DEFINE decide char(1)
DEFINE cant DECIMAL(10,2)
DEFINE tipo_papel smallint
DEFINE balance,existen DECIMAL(12,2)
DEFINE cod_mov_ant LIKE intb00006.cod_mov
DEFINE existe_comp,suplidor1,doc_existe,actual,mat_prima CHAR (1000)
DEFINE opc,opt CHAR(3)
DEFINE optc CHAR(2)
DEFINE medida CHAR (3)
DEFINE fila smallint
DEFINE m_articulos RECORD LIKE irtb00002.*
DEFINE numero_msg LIKE msgtable.cod_msg
DEFINE articulos RECORD LIKE intb00001.*
DEFINE suplidor RECORD LIKE intb00008.*
DEFINE mensajes RECORD {LIKE msgtable.* }
cod_msg smallint,
desc_msg char(60),
us_crea char(9),
fech_crea char(16),
us_mod char(9),
fech_mod char(16)
END RECORD
DEFINE despiece DYNAMIC ARRAY OF RECORD
id_etiqueta SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
lado_1 DEC(12,5),
lado_2 DEC(12,5),
lado_3 DEC(12,5),
cantidad DEC(12,5),
medida DEC(12,5),
secuencia,id_despiece INT,
bodega SMALLINT
END RECORD
DEFINE transacc RECORD LIKE irtb00005.*
DEFINE medidas RECORD LIKE intb00007.*
DEFINE descrip_esp,descrip_ing,descrip1,descrip2,descrip3,descrip4 CHAR(30)
DEFINE c_sustituto RECORD LIKE intb00003.*
DEFINE c_equivalente RECORD LIKE intb00004.*
DEFINE criterio CHAR(1000)
DEFINE selec1,selec CHAR(3000)
DEFINE cod_n_a,cod_grupo_a,cod_tipo_a,cod_sec_a SMALLINT
DEFINE p_act,idx,scr_l,curr SMALLINT
DEFINE opcion CHAR(1)
DEFINE movi2 DYNAMIC ARRAY OF RECORD
cod_n LIKE intb00003.cod_n,
cod_grupo LIKE intb00003.cod_grupo,
cod_tipo LIKE intb00003.cod_tipo,
cod_sec LIKE intb00003.cod_sec,
cantidad_2 LIKE intb00006.cantidad_2,
unidad_med LIKE intb00001.unidad_med,
descrip_esp LIKE intb00001.descrip_esp
END RECORD
DEFINE art ARRAY[200] OF RECORD
cod_n1 SMALLINT,
cod_grupo1 SMALLINT,
cod_tipo1 SMALLINT,
cod_sec1 SMALLINT,
descrip_esp1 CHAR(30),
unidad_med LIKE intb00001.unidad_med,
existencia like irtb00002.existencia,
dia_llegada like irtb00002.dia_llegada ,
precio LIKE cotb00015.precio,
descrip_esp2 CHAR(30),
valor decimal(10,2)
END RECORD
DEFINE csmov1 DYNAMIC ARRAY OF RECORD
num_doc integer,
fecha_2 LIKE intb00006.fecha,
descrip_mov char(70),
entrada DECIMAL(8,2),
salida DECIMAL(8,2),
balance DECIMAL(8,2)
END RECORD
DEFINE csmov RECORD
num_doc LIKE intb00006.num_doc,
fecha_1 LIKE intb00006.fecha,
cantidad_1 LIKE intb00006.cantidad_1,
cantidad_2 LIKE intb00006.cantidad_2,
cod_mov LIKE intb00005.cod_mov,
descrip_mov LIKE irtb00005.descrip_mov
END RECORD
DEFINE datos_cons RECORD
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
fech_in LIKE intb00006.fecha,
fech_fi LIKE intb00006.fecha
END RECORD
DEFINE movi4 ARRAY[100] OF RECORD
codigo CHAR(10),
cantidad_2 LIKE intb00006.cantidad_2,
unidad_med LIKE intb00001.unidad_med ,
descrip_esp LIKE intb00001.descrip_esp,
maquina LIKE irtb00006.maquina
END RECORD
DEFINE movi5 ARRAY[100] OF RECORD
codigo CHAR(10),
cantidad_1 LIKE intb00006.cantidad_1,
cantidad_2 LIKE intb00006.cantidad_2,
diferencia DECIMAL(10,2),
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
maquina LIKE irtb00006.maquina
END RECORD
DEFINE movi3 ARRAY[100] OF RECORD
codigo CHAR(10),
cantidad_1 LIKE intb00006.cantidad_1,
cantidad_2 LIKE intb00006.cantidad_2,
diferencia DECIMAL(10,2),
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med
END RECORD
DEFINE movi8_ant DYNAMIC ARRAY OF RECORD
cod_n LIKE intb00003.cod_n,
cod_grupo LIKE intb00003.cod_grupo,
cod_tipo LIKE intb00003.cod_tipo,
cod_sec LIKE intb00003.cod_sec,
cant_ant1 LIKE irtb00006.cantidad_2
END RECORD
DEFINE movi9 ARRAY[100] OF RECORD
cod_n LIKE intb00003.cod_n,
cod_grupo LIKE intb00003.cod_grupo,
cod_tipo LIKE intb00003.cod_tipo,
cod_sec LIKE intb00003.cod_sec,
cantidad_1 LIKE intb00006.cantidad_1,
cantidad_2 LIKE intb00006.cantidad_2,
unidad_med LIKE intb00001.unidad_med,
descrip_esp LIKE intb00001.descrip_esp,
maquina LIKE irtb00006.maquina
END RECORD
DEFINE movi8 DYNAMIC ARRAY OF RECORD
cod_n LIKE intb00003.cod_n,
cod_grupo LIKE intb00003.cod_grupo,
cod_tipo LIKE intb00003.cod_tipo,
cod_sec LIKE intb00003.cod_sec,
cantidad_2 LIKE irtb00006.cantidad_2,
unidad_med LIKE intb00001.unidad_med,
descrip_esp LIKE intb00001.descrip_esp,
codigo LIKE irtb00009.codigo,
orden_trabajo INT,
existencia FLOAT,
num_emp SMALLINT
END RECORD
DEFINE movi1 ARRAY[100] OF RECORD
cod_n LIKE intb00003.cod_n,
cod_grupo LIKE intb00003.cod_grupo,
cod_tipo LIKE intb00003.cod_tipo,
cod_sec LIKE intb00003.cod_sec,
cantidad_2 LIKE intb00006.cantidad_2,
unidad_med LIKE intb00001.unidad_med,
descrip_esp LIKE intb00001.descrip_esp ,
maquina LIKE irtb00006.maquina
END RECORD
DEFINE movi DYNAMIC ARRAY OF RECORD
cod_n LIKE irtb00006.cod_n,
cod_grupo LIKE irtb00006.cod_grupo,
cod_tipo LIKE irtb00006.cod_tipo,
cod_sec LIKE irtb00006.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
cantidad_1 LIKE irtb00006.cantidad_1,
cantidad_2 LIKE irtb00006.cantidad_2,
maquina LIKE irtb00006.maquina
END RECORD
DEFINE ant_art RECORD
cod_n LIKE cotb00002.cod_n,
cod_grupo LIKE cotb00002.cod_grupo,
cod_tipo LIKE cotb00002.cod_tipo,
cod_sec LIKE cotb00002.cod_sec ,
maquina SMALLINT
END RECORD
DEFINE c_articulos ARRAY[100] OF RECORD
cod_n LIKE cotb00002.cod_n,
cod_grupo LIKE cotb00002.cod_grupo,
cod_tipo LIKE cotb00002.cod_tipo,
cod_sec LIKE cotb00002.cod_sec,
descripcion CHAR(30)
# costo_mp LIKE cotb00002.costo_mp,
# fecha_act LIKE cotb00002.fecha_act
END RECORD
DEFINE consulta_mv ARRAY[200] OF RECORD
num_doc LIKE intb00006.num_doc,
fecha LIKE intb00006.fecha,
nombre char(7),
cantidad_1 LIKE intb00006.cantidad_1,
cantidad_2 LIKE intb00006.cantidad_1,
balance decimal(12,2)
END RECORD
DEFINE c_det_inv ARRAY[200] OF RECORD
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
existencia LIKE irtb00002.existencia
# costo_mp LIKE cotb00002.costo_mp,
# valor DECIMAL(12,2)
END RECORD
DEFINE datos_cs RECORD
cod_n LIKE intb00006.cod_n,
cod_grupo LIKE intb00006.cod_grupo,
cod_tipo LIKE intb00006.cod_tipo,
cod_sec LIKE intb00006.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
fecha_in LIKE intb00006.fecha,
fecha_fi LIKE intb00006.fecha
END RECORD
DEFINE furgon RECORD LIKE cotb00003.*
DEFINE furgonart RECORD LIKE cotb00004.*
DEFINE arancelart RECORD LIKE cotb00006.*
DEFINE otrab SMALLINT
DEFINE comp_fech,comp_fech1 DATE
DEFINE mes_control CHAR(2)
DEFINE mes_calc,dia SMALLINT
DEFINE fecha_c DATE
DEFINE c_ano,a_ano CHAR(4)
END GLOBALS
SCHEMA smarmotech
GLOBALS
DEFINE arr_prod DYNAMIC ARRAY OF RECORD
cod_n INTEGER,
cod_grupo INTEGER,
cod_tipo INTEGER,
cod_sec INTEGER,
descrip_esp CHAR(30),
unidad_med CHAR(5),
existencia FLOAT
END RECORD,
p_irtb57 RECORD
numero_doc INT,
cod_mov SMALLINT,
fecha DATE,
num_oc INT,
orden_trabajo INT,
observacion VARCHAR(200),
tipo_cliente SMALLINT,
sec_cliente INT,
cliente VARCHAR(100),
bodega SMALLINT,
bodega_destino SMALLINT,
estado VARCHAR(50),
ruta_documento ,
url_file STRING,
idstado VARCHAR(60)
END RECORD,
arr_irtb58 DYNAMIC ARRAY OF RECORD
area INT,
cod_n,cod_grupo,cod_tipo,cod_sec INT,
descripcion VARCHAR(100),
unidad_med VARCHAR(4),
cantidad_1,cantidad,cantidad_o1,cantidad1,factor_conv DEC(12,5)
END RECORD,
arr_busqueda DYNAMIC ARRAY OF RECORD
estadp1 VARCHAR(50),
estado_proceso1 VARCHAR(100),
tipo_documento VARCHAR(100),
numeroid INT,
fechadoc DATE,
nombre VARCHAR(100),
observacion VARCHAR(200),
bodega_origen VARCHAR(100),
bodega_destino VARCHAR(100),
cod_mov INT,
bodega1 SMALLINT,
bodega2 SMALLINT
END RECORD,
secuencia INT,
nombreUsuario,email,nombreBodega,nombreBodegaDestino,nombreMov STRING,
cbmovimiento ui.ComboBox
DEFINE
tieneDetalle,requiere VARCHAR(2),
ordenPedidos,existe BOOLEAN,
xestado VARCHAR(50),xtiene VARCHAR(3),tienedespiece BOOLEAN,
total_cantidad,total_medida DEC(12,5),
xtiene VARCHAR(3),
cuentaimp INT
DEFINE consulta,pflag CHAR(1),
USUARIOS, CLAVE CHAR(50),
progreso SMALLINT
DEFINE cmd,imprime,copia CHAR(150),archivo CHAR(80),i,impresor SMALLINT
DEFINE doce,normal,doble,doble_of,negras,negras_off CHAR(3)
DEFINE negrilla_on,negrillas_of,comp_on,comp_off,doble_on,doble_off
CHAR(3),
pprograma CHAR(12),
handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
r_filename,inventario STRING, -- filename of Report Design Document including .4rp extension
r_output,selec_pt,TOEmail,subject,ccemail,PCCEMAIL,cuerpo_correo,procedimiento STRING
DEFINE regi,p_ultimo,curr1 INTEGER
DEFINE p_param,ya CHAR(1), -- G6: existe ya esta definida como BOOLEAN (-4319)
formulario CHAR(100) ,
lj SMALLINT,
p_companias RECORD LIKE companias.*,
nombre_d CHAR(50)
DEFINE chequea RECORD
existe LIKE irtb00002.existencia,
pto LIKE irtb00002.existencia
END RECORD,
preview smallint
DEFINE movimientos RECORD
num_doc LIKE intb00006.num_doc,
cod_mov LIKE intb00006.cod_mov,
fecha LIKE intb00006.fecha,
tipo LIKE cotb00014.tipo,
orden_compra LIKE intb00006.orden_compra,
cod_sp LIKE intb00006.cod_sp,
cod_sp_sec LIKE intb00006.cod_sp_sec,
fact_no LIKE intb00006.fact_no,
conduce_no LIKE intb00006.conduce_no,
sec_de LIKE intb00006.depto_de,
sec_a LIKE intb00006.depto_a
END RECORD
DEFINE ultimo RECORD
cond_recep LIKE intb00006.cond_recep,
uso_tiempo LIKE intb00006.uso_tiempo
END RECORD
DEFINE busca_wd1 ARRAY [100] OF RECORD
codigo LIKE adtb00001.departamento,
nom_dpto LIKE adtb00001.nom_dpto
END RECORD
DEFINE busca_wd2 ARRAY [500] OF RECORD
codigo LIKE irtb00009.codigo,
nombre LIKE irtb00009.nombre
END RECORD
DEFINE datos1 RECORD
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE irtb00005.descrip_mov,
num_doc LIKE intb00006.num_doc,
tipo LIKE irtb00006.tipo,
orden_compra LIKE irtb00006.orden_compra,
cod_sp SMALLINT,
cod_sp_sec SMALLINT,
fecha DATE,
conduce_no VARCHAR(50),
departamento INT,
nom_sp CHAR(30)
END RECORD
DEFINE p_conteo RECORD
fecha LIKE intb00006.fecha,
bodega LIKE intb00006.bodega,
cod_n LIKE intb00006.cod_n,
cod_grupo LIKE intb00006.cod_grupo,
cod_tipo LIKE intb00006.cod_tipo,
cod_sec LIKE intb00006.cod_sec,
cantidad LIKE intb00006.cantidad_2
END RECORD
DEFINE costos RECORD
mes_ini LIKE intb00013.mes_ini,
mes_fin LIKE intb00013.mes_fin,
ano LIKE intb00013.ano,
cod_n LIKE intb00001.cod_N,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
costo_st LIKE intb00013.costo_st,
us_crea LIKE intb00013.us_crea,
fech_crea LIKE intb00013.fech_crea,
us_mod LIKE intb00013.us_mod,
fech_mod LIKE intb00013.fech_mod
END RECORD
DEFINE datos RECORD
num_doc LIKE intb00006.num_doc,
fecha LIKE intb00006.fecha,
depto_de LIKE intb00006.depto_de,
depto_a LIKE intb00006.depto_a,
nom_dpto LIKE adtb00001.nom_dpto,
nom_dpto1 LIKE adtb00001.nom_dpto,
bodega LIKE intb00006.bodega
END RECORD
DEFINE datos_gen RECORD
cod_mov LIKE irtb00006.cod_mov,
num_doc LIKE irtb00006.num_doc,
tipo SMALLINT,
orden_compra LIKE irtb00006.orden_compra,
cod_sp LIKE irtb00006.cod_sp,
cod_sp_sec LIKE irtb00006.cod_sp_sec,
conduce_no LIKE irtb00006.conduce_no,
fact_no LIKE irtb00006.fact_no,
fecha DATE,
sec_a LIKE irtb00006.sec_a,
nom_sp LIKE cotb00001.nom_sp,
descrip_mov LIKE irtb00005.descrip_mov
END RECORD
DEFINE otros_mov RECORD
num_doc LIKE intb00006.num_doc,
cod_mov LIKE intb00006.cod_mov,
fecha LIKE intb00006.fecha,
descrip_mov LIKE intb00005.descrip_mov,
bodega LIKE intb00006.bodega
END RECORD
DEFINE dm_rep RECORD
departamento LIKE irtb00029.departamento,
maquina LIKE irtb00029.maquina
END RECORD
DEFINE p_fechas DATE
DEFINE bandera smallint
DEFINE nombre_dia ARRAY[7] OF char(10)
DEFINE nombre_mes ARRAY[12] OF char(10)
DEFINE general decimal(12,2)
DEFINE p_bodega SMALLINT
DEFINE mq_rep RECORD LIKE irtb00008.*
DEFINE depto RECORD LIKE adtb00001.*
DEFINE maquinaria RECORD LIKE irtb00009.*
DEFINE motor_e RECORD LIKE irtb00007.*
DEFINE arancel RECORD LIKE cotb00005.*
DEFINE motores RECORD LIKE irtb00005.*
DEFINE especifica RECORD LIKE irtb00006.*
DEFINE maquinas RECORD LIKE irtb00006.*
DEFINE status_m char(1)
DEFINE decide char(1)
DEFINE cant DECIMAL(10,2)
DEFINE tipo_papel smallint
DEFINE balance,existen DECIMAL(12,2)
DEFINE cod_mov_ant LIKE intb00006.cod_mov
DEFINE existe_comp,suplidor1,doc_existe,actual,mat_prima CHAR (1000)
DEFINE opc,opt CHAR(3)
DEFINE optc CHAR(2)
DEFINE medida CHAR (3)
DEFINE fila smallint
DEFINE m_articulos RECORD LIKE irtb00002.*
DEFINE numero_msg LIKE msgtable.cod_msg
DEFINE articulos RECORD LIKE intb00001.*
DEFINE suplidor RECORD LIKE intb00008.*
DEFINE mensajes RECORD {LIKE msgtable.* }
cod_msg smallint,
desc_msg char(60),
us_crea char(9),
fech_crea char(16),
us_mod char(9),
fech_mod char(16)
END RECORD
DEFINE despiece DYNAMIC ARRAY OF RECORD
id_etiqueta SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
lado_1 DEC(12,5),
lado_2 DEC(12,5),
lado_3 DEC(12,5),
cantidad DEC(12,5),
medida DEC(12,5),
secuencia,id_despiece INT,
bodega SMALLINT
END RECORD
DEFINE transacc RECORD LIKE irtb00005.*
DEFINE medidas RECORD LIKE intb00007.*
DEFINE descrip_esp,descrip_ing,descrip1,descrip2,descrip3,descrip4 CHAR(30)
DEFINE c_sustituto RECORD LIKE intb00003.*
DEFINE c_equivalente RECORD LIKE intb00004.*
DEFINE criterio CHAR(1000)
DEFINE selec1,selec CHAR(3000)
DEFINE cod_n_a,cod_grupo_a,cod_tipo_a,cod_sec_a SMALLINT
DEFINE p_act,idx,scr_l,curr SMALLINT
DEFINE opcion CHAR(1)
DEFINE movi2 DYNAMIC ARRAY OF RECORD
cod_n LIKE intb00003.cod_n,
cod_grupo LIKE intb00003.cod_grupo,
cod_tipo LIKE intb00003.cod_tipo,
cod_sec LIKE intb00003.cod_sec,
cantidad_2 LIKE intb00006.cantidad_2,
unidad_med LIKE intb00001.unidad_med,
descrip_esp LIKE intb00001.descrip_esp
END RECORD
DEFINE art ARRAY[200] OF RECORD
cod_n1 SMALLINT,
cod_grupo1 SMALLINT,
cod_tipo1 SMALLINT,
cod_sec1 SMALLINT,
descrip_esp1 CHAR(30),
unidad_med LIKE intb00001.unidad_med,
existencia like irtb00002.existencia,
dia_llegada like irtb00002.dia_llegada ,
precio LIKE cotb00015.precio,
descrip_esp2 CHAR(30),
valor decimal(10,2)
END RECORD
DEFINE csmov1 DYNAMIC ARRAY OF RECORD
num_doc integer,
fecha_2 LIKE intb00006.fecha,
descrip_mov char(70),
entrada DECIMAL(8,2),
salida DECIMAL(8,2),
balance DECIMAL(8,2)
END RECORD
DEFINE csmov RECORD
num_doc LIKE intb00006.num_doc,
fecha_1 LIKE intb00006.fecha,
cantidad_1 LIKE intb00006.cantidad_1,
cantidad_2 LIKE intb00006.cantidad_2,
cod_mov LIKE intb00005.cod_mov,
descrip_mov LIKE irtb00005.descrip_mov
END RECORD
DEFINE datos_cons RECORD
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
fech_in LIKE intb00006.fecha,
fech_fi LIKE intb00006.fecha
END RECORD
DEFINE movi4 ARRAY[100] OF RECORD
codigo CHAR(10),
cantidad_2 LIKE intb00006.cantidad_2,
unidad_med LIKE intb00001.unidad_med ,
descrip_esp LIKE intb00001.descrip_esp,
maquina LIKE irtb00006.maquina
END RECORD
DEFINE movi5 ARRAY[100] OF RECORD
codigo CHAR(10),
cantidad_1 LIKE intb00006.cantidad_1,
cantidad_2 LIKE intb00006.cantidad_2,
diferencia DECIMAL(10,2),
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
maquina LIKE irtb00006.maquina
END RECORD
DEFINE movi3 ARRAY[100] OF RECORD
codigo CHAR(10),
cantidad_1 LIKE intb00006.cantidad_1,
cantidad_2 LIKE intb00006.cantidad_2,
diferencia DECIMAL(10,2),
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med
END RECORD
DEFINE movi8_ant DYNAMIC ARRAY OF RECORD
cod_n LIKE intb00003.cod_n,
cod_grupo LIKE intb00003.cod_grupo,
cod_tipo LIKE intb00003.cod_tipo,
cod_sec LIKE intb00003.cod_sec,
cant_ant1 LIKE irtb00006.cantidad_2
END RECORD
DEFINE movi9 ARRAY[100] OF RECORD
cod_n LIKE intb00003.cod_n,
cod_grupo LIKE intb00003.cod_grupo,
cod_tipo LIKE intb00003.cod_tipo,
cod_sec LIKE intb00003.cod_sec,
cantidad_1 LIKE intb00006.cantidad_1,
cantidad_2 LIKE intb00006.cantidad_2,
unidad_med LIKE intb00001.unidad_med,
descrip_esp LIKE intb00001.descrip_esp,
maquina LIKE irtb00006.maquina
END RECORD
DEFINE movi8 DYNAMIC ARRAY OF RECORD
cod_n LIKE intb00003.cod_n,
cod_grupo LIKE intb00003.cod_grupo,
cod_tipo LIKE intb00003.cod_tipo,
cod_sec LIKE intb00003.cod_sec,
cantidad_2 LIKE irtb00006.cantidad_2,
unidad_med LIKE intb00001.unidad_med,
descrip_esp LIKE intb00001.descrip_esp,
codigo LIKE irtb00009.codigo,
orden_trabajo INT,
existencia FLOAT,
num_emp SMALLINT
END RECORD
DEFINE movi1 ARRAY[100] OF RECORD
cod_n LIKE intb00003.cod_n,
cod_grupo LIKE intb00003.cod_grupo,
cod_tipo LIKE intb00003.cod_tipo,
cod_sec LIKE intb00003.cod_sec,
cantidad_2 LIKE intb00006.cantidad_2,
unidad_med LIKE intb00001.unidad_med,
descrip_esp LIKE intb00001.descrip_esp ,
maquina LIKE irtb00006.maquina
END RECORD
DEFINE movi DYNAMIC ARRAY OF RECORD
cod_n LIKE irtb00006.cod_n,
cod_grupo LIKE irtb00006.cod_grupo,
cod_tipo LIKE irtb00006.cod_tipo,
cod_sec LIKE irtb00006.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
cantidad_1 LIKE irtb00006.cantidad_1,
cantidad_2 LIKE irtb00006.cantidad_2,
maquina LIKE irtb00006.maquina
END RECORD
DEFINE ant_art RECORD
cod_n LIKE cotb00002.cod_n,
cod_grupo LIKE cotb00002.cod_grupo,
cod_tipo LIKE cotb00002.cod_tipo,
cod_sec LIKE cotb00002.cod_sec ,
maquina SMALLINT
END RECORD
DEFINE c_articulos ARRAY[100] OF RECORD
cod_n LIKE cotb00002.cod_n,
cod_grupo LIKE cotb00002.cod_grupo,
cod_tipo LIKE cotb00002.cod_tipo,
cod_sec LIKE cotb00002.cod_sec,
descripcion CHAR(30)
# costo_mp LIKE cotb00002.costo_mp,
# fecha_act LIKE cotb00002.fecha_act
END RECORD
DEFINE consulta_mv ARRAY[200] OF RECORD
num_doc LIKE intb00006.num_doc,
fecha LIKE intb00006.fecha,
nombre char(7),
cantidad_1 LIKE intb00006.cantidad_1,
cantidad_2 LIKE intb00006.cantidad_1,
balance decimal(12,2)
END RECORD
DEFINE c_det_inv ARRAY[200] OF RECORD
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
existencia LIKE irtb00002.existencia
# costo_mp LIKE cotb00002.costo_mp,
# valor DECIMAL(12,2)
END RECORD
DEFINE datos_cs RECORD
cod_n LIKE intb00006.cod_n,
cod_grupo LIKE intb00006.cod_grupo,
cod_tipo LIKE intb00006.cod_tipo,
cod_sec LIKE intb00006.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
fecha_in LIKE intb00006.fecha,
fecha_fi LIKE intb00006.fecha
END RECORD
DEFINE furgon RECORD LIKE cotb00003.*
DEFINE furgonart RECORD LIKE cotb00004.*
DEFINE arancelart RECORD LIKE cotb00006.*
DEFINE otrab SMALLINT
DEFINE comp_fech,comp_fech1 DATE
DEFINE mes_control CHAR(2)
DEFINE mes_calc,dia SMALLINT
DEFINE fecha_c DATE
DEFINE c_ano,a_ano CHAR(4)
END GLOBALS
File diff suppressed because it is too large Load Diff
+457 -457
View File
@@ -1,457 +1,457 @@
{
-------------------------------------------------------------------------------
PROGRAMA : IRPRMT004
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla de Costos Estandares
PROGRAMADOR : Ing. Juan Fco. Soto.
FECHA REALIZACION : Marzo 1, 1993.
-------------------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
DEFINE checkapi, answer INT
## Arreglo consulta/modificacion: se navega sobre un arreglo en memoria en vez
## de un SCROLL CURSOR vivo, porque bajo el RDD de SQL Server cualquier otra
## sentencia (los SELECT a mestable, el COMMIT del Escoger, el UPDATE de
## eLiminar) cierra el cursor de servidor y provoca el error -400
## "Fetch attempted on unopen cursor".
DEFINE arr_costos DYNAMIC ARRAY OF RECORD
mes_ini LIKE intb00013.mes_ini,
mes_fin LIKE intb00013.mes_fin,
ano LIKE intb00013.ano,
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
costo_st LIKE intb00013.costo_st,
us_crea LIKE intb00013.us_crea,
fech_crea LIKE intb00013.fech_crea,
us_mod LIKE intb00013.us_mod,
fech_mod LIKE intb00013.fech_mod,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med
END RECORD
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT to "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprmt004()
END MAIN
FUNCTION irprmt004()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 22
OPEN FORM irfmmt004 FROM "irfmmt004"
DISPLAY FORM irfmmt004
DISPLAY "irprmt004" AT 4,3
DISPLAY "Costo Standard " AT 6,31
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Ctrl-C> Cancela Operacion"
CLEAR FORM
LET int_flag = false
CALL irpcad004()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Ctrl-C> Cancela Operacion"
LET int_flag = false
CALL irpcmf004()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION irpcad004()
#WHENEVER ERROR CONTINUE
## Captura los datos que va a contener el registro
INPUT BY NAME costos.mes_ini THRU costos.costo_st
## Verifica que el costo exista en el catalogo de costos. Si existe,
## entonces despliega los datos del registro existente.
AFTER FIELD mes_ini
IF costos.mes_ini IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD mes_ini
ELSE
SELECT descrip INTO descrip1 FROM mestable
WHERE mes = costos.mes_ini and
status_t is null
IF status >= 0 THEN
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD mes_ini
END IF
END IF
DISPLAY BY NAME descrip1
END IF
AFTER FIELD mes_fin
IF costos.mes_fin IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD mes_fin
ELSE
SELECT descrip INTO descrip2 FROM mestable
WHERE mes = costos.mes_fin and
status_t is null
IF status >= 0 THEN
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD mes_fin
END IF
END IF
DISPLAY BY NAME descrip2
END IF
AFTER FIELD ano
IF costos.ano IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD ano
END IF
AFTER FIELD cod_sec
SELECT mes_ini,mes_fin,ano,cod_n,cod_grupo,cod_tipo,cod_sec
FROM irtb00013
WHERE mes_ini = costos.mes_ini AND
mes_fin = costos.mes_fin AND
ano = costos.ano AND
cod_n = costos.cod_n AND
cod_grupo = costos.cod_grupo AND
cod_tipo = costos.cod_tipo AND
cod_sec = costos.cod_sec
IF status != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD mes_ini
END IF
IF ( costos.cod_n = 0 AND costos.cod_grupo = 0 AND
costos.cod_tipo = 0 AND costos.cod_sec = 0 ) THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
ELSE
SELECT a.descrip_esp,a.unidad_med
INTO articulos.descrip_esp,articulos.unidad_med
FROM irtb00002 a
WHERE a.cod_n=costos.cod_n AND a.cod_grupo=costos.cod_grupo AND
a.cod_tipo=costos.cod_tipo AND a.cod_sec=costos.cod_sec AND
a.status_t is null
IF status >= 0 THEN
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END IF
DISPLAY BY NAME articulos.descrip_esp,articulos.unidad_med
END IF
AFTER FIELD costo_st
IF costos.costo_st IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD costo_st
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF costos.costo_st IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD costo_st
ELSE
LET m_articulos.cod_n = costos.cod_n
LET m_articulos.cod_grupo = costos.cod_grupo
LET m_articulos.cod_tipo = costos.cod_tipo
LET m_articulos.cod_sec = costos.cod_sec
LET m_articulos.descrip_esp = articulos.descrip_esp
LET m_articulos.descrip_ing = costos.costo_st
SELECT SUM(cantidad_2) INTO m_articulos.existencia from irtb00006
WHERE cod_n = costos.cod_n and cod_grupo = costos.cod_grupo
and cod_tipo = costos.cod_tipo and cod_sec = costos.cod_sec
AND status_t IS NULL
SELECT exist_min, id_maintainx INTO m_articulos.exist_min, checkapi FROM irtb00002
WHERE cod_n = costos.cod_n and cod_grupo = costos.cod_grupo
and cod_tipo = costos.cod_tipo and cod_sec = costos.cod_sec
AND status_t IS NULL
BEGIN WORK
IF checkapi IS NOT NULL THEN
CALL ApiMaintainR('PATCH',checkapi, m_articulos.*, usuarios) RETURNING answer
IF answer != 1 THEN
DISPLAY "AQUI 6"
ROLLBACK WORK
END IF
END IF
INSERT INTO irtb00013 VALUES (costos.mes_ini,costos.mes_fin,
costos.ano,costos.cod_n,costos.cod_grupo,
costos.cod_tipo,costos.cod_sec,costos.costo_st,
null,USER,getdate(),null, NULL)
LET numero_msg = 1
CALL msg(numero_msg)
COMMIT WORK
LET costos.cod_n = NULL
LET costos.cod_grupo = NULL
LET costos.cod_tipo = NULL
LET costos.cod_sec = NULL
LET costos.costo_st = NULL
NEXT FIELD cod_n
END IF
END INPUT
END FUNCTION
FUNCTION irp_show004(p_idx)
## Copia el registro p_idx del arreglo en memoria a la pantalla.
DEFINE p_idx SMALLINT
LET costos.mes_ini = arr_costos[p_idx].mes_ini
LET costos.mes_fin = arr_costos[p_idx].mes_fin
LET costos.ano = arr_costos[p_idx].ano
LET costos.cod_n = arr_costos[p_idx].cod_n
LET costos.cod_grupo = arr_costos[p_idx].cod_grupo
LET costos.cod_tipo = arr_costos[p_idx].cod_tipo
LET costos.cod_sec = arr_costos[p_idx].cod_sec
LET costos.costo_st = arr_costos[p_idx].costo_st
LET costos.us_crea = arr_costos[p_idx].us_crea
LET costos.fech_crea = arr_costos[p_idx].fech_crea
LET costos.us_mod = arr_costos[p_idx].us_mod
LET costos.fech_mod = arr_costos[p_idx].fech_mod
LET articulos.descrip_esp = arr_costos[p_idx].descrip_esp
LET articulos.unidad_med = arr_costos[p_idx].unidad_med
SELECT descrip INTO descrip1 FROM mestable
WHERE mes = costos.mes_ini and status_t is null
DISPLAY BY NAME descrip1
SELECT descrip INTO descrip2 FROM mestable
WHERE mes = costos.mes_fin and status_t is null
DISPLAY BY NAME descrip2
DISPLAY BY NAME costos.*,articulos.descrip_esp,articulos.unidad_med
END FUNCTION
FUNCTION irpcmf004()
#WHENEVER ERROR CONTINUE
## Aqui se prepara para la captura del criterio de seleccion
DEFINE idx, tot SMALLINT
CONSTRUCT criterio ON c.mes_ini,c.mes_fin,c.ano,
c.cod_n,c.cod_grupo,
c.cod_tipo,c.cod_sec,c.costo_st
FROM mes_ini,mes_fin,ano,
cod_n,cod_grupo,
cod_tipo,cod_sec,costo_st
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC =
"SELECT UNIQUE c.mes_ini,c.mes_fin,c.ano,d.cod_n,d.cod_grupo, ",
" d.cod_tipo,d.cod_sec,c.costo_st,c.us_crea,c.fech_crea, ",
" c.us_mod,c.fech_mod,d.descrip_esp,d.unidad_med ",
"FROM irtb00013 c, irtb00002 d ",
"WHERE c.cod_n=d.cod_n AND c.cod_grupo=d.cod_grupo AND ",
" c.cod_tipo = d.cod_tipo AND c.cod_sec = d.cod_sec AND ",
" c.status_t is null AND d.status_t IS NULL AND ",
criterio clipped," ORDER BY 4,5,6,7"
## Se carga TODO el resultado a memoria de una sola vez y se cierra el cursor.
## Asi la navegacion no depende de un cursor vivo (que SQL Server cierra al
## ejecutar cualquier otra sentencia sobre la conexion).
PREPARE busca FROM selec
DECLARE datos CURSOR FOR busca
CALL arr_costos.clear()
LET tot = 1
FOREACH datos INTO arr_costos[tot].*
LET tot = tot + 1
END FOREACH
LET tot = tot - 1
FREE datos
IF tot = 0 THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
LET idx = 1
CALL irp_show004(idx)
MENU "OPCIONES"
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
IF idx < tot THEN
LET idx = idx + 1
CALL irp_show004(idx)
ELSE
LET numero_msg = 4
CALL msg(numero_msg)
END IF
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
IF idx > 1 THEN
LET idx = idx - 1
CALL irp_show004(idx)
ELSE
LET numero_msg = 5
CALL msg(numero_msg)
END IF
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
LET idx = 1
CALL irp_show004(idx)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
LET idx = tot
CALL irp_show004(idx)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
INPUT BY NAME costos.costo_st,
costos.us_crea,
costos.fech_crea,
costos.us_mod,
costos.fech_mod WITHOUT DEFAULTS
AFTER FIELD costo_st
IF costos.costo_st IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD costo_st
END IF
## Verifica si el usuario presiono la tecla <Ctrl-C>
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET m_articulos.cod_n = costos.cod_n
LET m_articulos.cod_grupo = costos.cod_grupo
LET m_articulos.cod_tipo = costos.cod_tipo
LET m_articulos.cod_sec = costos.cod_sec
LET m_articulos.descrip_esp = articulos.descrip_esp
LET m_articulos.descrip_ing = costos.costo_st
SELECT SUM(cantidad_2) INTO m_articulos.existencia from irtb00006
WHERE cod_n = costos.cod_n and cod_grupo = costos.cod_grupo
and cod_tipo = costos.cod_tipo and cod_sec = costos.cod_sec
AND status_t IS NULL
SELECT exist_min, id_maintainx INTO m_articulos.exist_min, checkapi FROM irtb00002
WHERE cod_n = costos.cod_n and cod_grupo = costos.cod_grupo
and cod_tipo = costos.cod_tipo and cod_sec = costos.cod_sec
AND status_t IS NULL
BEGIN WORK
IF checkapi IS NOT NULL THEN
CALL ApiMaintainR('PATCH',checkapi, m_articulos.*, usuarios) RETURNING answer
IF answer != 1 THEN
DISPLAY "AQUI 6"
ROLLBACK WORK
END IF
END IF
UPDATE irtb00013 SET costo_st = costos.costo_st,
us_mod = USER,
fech_mod = getdate()
WHERE cod_n = costos.cod_n and
cod_grupo = costos.cod_grupo and
cod_tipo = costos.cod_tipo and
cod_sec = costos.cod_sec
## Refleja el nuevo costo en el arreglo en memoria para que la navegacion
## siga mostrando el valor actualizado.
LET arr_costos[idx].costo_st = costos.costo_st
LET arr_costos[idx].us_mod = usuarios
LET arr_costos[idx].fech_mod = TODAY
LET numero_msg = 13
CALL msg(numero_msg)
COMMIT WORK
EXIT INPUT
END INPUT
COMMAND KEY ("L") "eLiminar"
UPDATE irtb00013 SET status_t = "E"
WHERE cod_n = costos.cod_n and
cod_grupo = costos.cod_grupo and
cod_tipo = costos.cod_tipo and
cod_sec = costos.cod_sec
LET numero_msg = 39
CALL msg(numero_msg)
## Quita el registro eliminado del arreglo en memoria y reposiciona.
CALL arr_costos.deleteElement(idx)
LET tot = arr_costos.getLength()
IF tot = 0 THEN
CLEAR FORM
EXIT MENU
END IF
IF idx > tot THEN
LET idx = tot
END IF
CALL irp_show004(idx)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION
{
-------------------------------------------------------------------------------
PROGRAMA : IRPRMT004
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla de Costos Estandares
PROGRAMADOR : Ing. Juan Fco. Soto.
FECHA REALIZACION : Marzo 1, 1993.
-------------------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
DEFINE checkapi, answer INT
## Arreglo consulta/modificacion: se navega sobre un arreglo en memoria en vez
## de un SCROLL CURSOR vivo, porque bajo el RDD de SQL Server cualquier otra
## sentencia (los SELECT a mestable, el COMMIT del Escoger, el UPDATE de
## eLiminar) cierra el cursor de servidor y provoca el error -400
## "Fetch attempted on unopen cursor".
DEFINE arr_costos DYNAMIC ARRAY OF RECORD
mes_ini LIKE intb00013.mes_ini,
mes_fin LIKE intb00013.mes_fin,
ano LIKE intb00013.ano,
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
costo_st LIKE intb00013.costo_st,
us_crea LIKE intb00013.us_crea,
fech_crea LIKE intb00013.fech_crea,
us_mod LIKE intb00013.us_mod,
fech_mod LIKE intb00013.fech_mod,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med
END RECORD
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT to "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprmt004()
END MAIN
FUNCTION irprmt004()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 22
OPEN FORM irfmmt004 FROM "irfmmt004"
DISPLAY FORM irfmmt004
DISPLAY "irprmt004" AT 4,3
DISPLAY "Costo Standard " AT 6,31
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Ctrl-C> Cancela Operacion"
CLEAR FORM
LET int_flag = false
CALL irpcad004()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Ctrl-C> Cancela Operacion"
LET int_flag = false
CALL irpcmf004()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
FUNCTION irpcad004()
#WHENEVER ERROR CONTINUE
## Captura los datos que va a contener el registro
INPUT BY NAME costos.mes_ini THRU costos.costo_st
## Verifica que el costo exista en el catalogo de costos. Si existe,
## entonces despliega los datos del registro existente.
AFTER FIELD mes_ini
IF costos.mes_ini IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD mes_ini
ELSE
SELECT descrip INTO descrip1 FROM mestable
WHERE mes = costos.mes_ini and
status_t is null
IF status >= 0 THEN
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD mes_ini
END IF
END IF
DISPLAY BY NAME descrip1
END IF
AFTER FIELD mes_fin
IF costos.mes_fin IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD mes_fin
ELSE
SELECT descrip INTO descrip2 FROM mestable
WHERE mes = costos.mes_fin and
status_t is null
IF status >= 0 THEN
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD mes_fin
END IF
END IF
DISPLAY BY NAME descrip2
END IF
AFTER FIELD ano
IF costos.ano IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD ano
END IF
AFTER FIELD cod_sec
SELECT mes_ini,mes_fin,ano,cod_n,cod_grupo,cod_tipo,cod_sec
FROM irtb00013
WHERE mes_ini = costos.mes_ini AND
mes_fin = costos.mes_fin AND
ano = costos.ano AND
cod_n = costos.cod_n AND
cod_grupo = costos.cod_grupo AND
cod_tipo = costos.cod_tipo AND
cod_sec = costos.cod_sec
IF status != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD mes_ini
END IF
IF ( costos.cod_n = 0 AND costos.cod_grupo = 0 AND
costos.cod_tipo = 0 AND costos.cod_sec = 0 ) THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_n
ELSE
SELECT a.descrip_esp,a.unidad_med
INTO articulos.descrip_esp,articulos.unidad_med
FROM irtb00002 a
WHERE a.cod_n=costos.cod_n AND a.cod_grupo=costos.cod_grupo AND
a.cod_tipo=costos.cod_tipo AND a.cod_sec=costos.cod_sec AND
a.status_t is null
IF status >= 0 THEN
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END IF
DISPLAY BY NAME articulos.descrip_esp,articulos.unidad_med
END IF
AFTER FIELD costo_st
IF costos.costo_st IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD costo_st
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF costos.costo_st IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD costo_st
ELSE
LET m_articulos.cod_n = costos.cod_n
LET m_articulos.cod_grupo = costos.cod_grupo
LET m_articulos.cod_tipo = costos.cod_tipo
LET m_articulos.cod_sec = costos.cod_sec
LET m_articulos.descrip_esp = articulos.descrip_esp
LET m_articulos.descrip_ing = costos.costo_st
SELECT SUM(cantidad_2) INTO m_articulos.existencia from irtb00006
WHERE cod_n = costos.cod_n and cod_grupo = costos.cod_grupo
and cod_tipo = costos.cod_tipo and cod_sec = costos.cod_sec
AND status_t IS NULL
SELECT exist_min, id_maintainx INTO m_articulos.exist_min, checkapi FROM irtb00002
WHERE cod_n = costos.cod_n and cod_grupo = costos.cod_grupo
and cod_tipo = costos.cod_tipo and cod_sec = costos.cod_sec
AND status_t IS NULL
BEGIN WORK
IF checkapi IS NOT NULL THEN
CALL ApiMaintainR('PATCH',checkapi, m_articulos.*, usuarios) RETURNING answer
IF answer != 1 THEN
DISPLAY "AQUI 6"
ROLLBACK WORK
END IF
END IF
INSERT INTO irtb00013 VALUES (costos.mes_ini,costos.mes_fin,
costos.ano,costos.cod_n,costos.cod_grupo,
costos.cod_tipo,costos.cod_sec,costos.costo_st,
null,USER,getdate(),null, NULL)
LET numero_msg = 1
CALL msg(numero_msg)
COMMIT WORK
LET costos.cod_n = NULL
LET costos.cod_grupo = NULL
LET costos.cod_tipo = NULL
LET costos.cod_sec = NULL
LET costos.costo_st = NULL
NEXT FIELD cod_n
END IF
END INPUT
END FUNCTION
FUNCTION irp_show004(p_idx)
## Copia el registro p_idx del arreglo en memoria a la pantalla.
DEFINE p_idx SMALLINT
LET costos.mes_ini = arr_costos[p_idx].mes_ini
LET costos.mes_fin = arr_costos[p_idx].mes_fin
LET costos.ano = arr_costos[p_idx].ano
LET costos.cod_n = arr_costos[p_idx].cod_n
LET costos.cod_grupo = arr_costos[p_idx].cod_grupo
LET costos.cod_tipo = arr_costos[p_idx].cod_tipo
LET costos.cod_sec = arr_costos[p_idx].cod_sec
LET costos.costo_st = arr_costos[p_idx].costo_st
LET costos.us_crea = arr_costos[p_idx].us_crea
LET costos.fech_crea = arr_costos[p_idx].fech_crea
LET costos.us_mod = arr_costos[p_idx].us_mod
LET costos.fech_mod = arr_costos[p_idx].fech_mod
LET articulos.descrip_esp = arr_costos[p_idx].descrip_esp
LET articulos.unidad_med = arr_costos[p_idx].unidad_med
SELECT descrip INTO descrip1 FROM mestable
WHERE mes = costos.mes_ini and status_t is null
DISPLAY BY NAME descrip1
SELECT descrip INTO descrip2 FROM mestable
WHERE mes = costos.mes_fin and status_t is null
DISPLAY BY NAME descrip2
DISPLAY BY NAME costos.*,articulos.descrip_esp,articulos.unidad_med
END FUNCTION
FUNCTION irpcmf004()
#WHENEVER ERROR CONTINUE
## Aqui se prepara para la captura del criterio de seleccion
DEFINE idx, tot SMALLINT
CONSTRUCT criterio ON c.mes_ini,c.mes_fin,c.ano,
c.cod_n,c.cod_grupo,
c.cod_tipo,c.cod_sec,c.costo_st
FROM mes_ini,mes_fin,ano,
cod_n,cod_grupo,
cod_tipo,cod_sec,costo_st
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC =
"SELECT UNIQUE c.mes_ini,c.mes_fin,c.ano,d.cod_n,d.cod_grupo, ",
" d.cod_tipo,d.cod_sec,c.costo_st,c.us_crea,c.fech_crea, ",
" c.us_mod,c.fech_mod,d.descrip_esp,d.unidad_med ",
"FROM irtb00013 c, irtb00002 d ",
"WHERE c.cod_n=d.cod_n AND c.cod_grupo=d.cod_grupo AND ",
" c.cod_tipo = d.cod_tipo AND c.cod_sec = d.cod_sec AND ",
" c.status_t is null AND d.status_t IS NULL AND ",
criterio clipped," ORDER BY 4,5,6,7"
## Se carga TODO el resultado a memoria de una sola vez y se cierra el cursor.
## Asi la navegacion no depende de un cursor vivo (que SQL Server cierra al
## ejecutar cualquier otra sentencia sobre la conexion).
PREPARE busca FROM selec
DECLARE datos CURSOR FOR busca
CALL arr_costos.clear()
LET tot = 1
FOREACH datos INTO arr_costos[tot].*
LET tot = tot + 1
END FOREACH
LET tot = tot - 1
FREE datos
IF tot = 0 THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
LET idx = 1
CALL irp_show004(idx)
MENU "OPCIONES"
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
IF idx < tot THEN
LET idx = idx + 1
CALL irp_show004(idx)
ELSE
LET numero_msg = 4
CALL msg(numero_msg)
END IF
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
IF idx > 1 THEN
LET idx = idx - 1
CALL irp_show004(idx)
ELSE
LET numero_msg = 5
CALL msg(numero_msg)
END IF
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
LET idx = 1
CALL irp_show004(idx)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
LET idx = tot
CALL irp_show004(idx)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
INPUT BY NAME costos.costo_st,
costos.us_crea,
costos.fech_crea,
costos.us_mod,
costos.fech_mod WITHOUT DEFAULTS
AFTER FIELD costo_st
IF costos.costo_st IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD costo_st
END IF
## Verifica si el usuario presiono la tecla <Ctrl-C>
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET m_articulos.cod_n = costos.cod_n
LET m_articulos.cod_grupo = costos.cod_grupo
LET m_articulos.cod_tipo = costos.cod_tipo
LET m_articulos.cod_sec = costos.cod_sec
LET m_articulos.descrip_esp = articulos.descrip_esp
LET m_articulos.descrip_ing = costos.costo_st
SELECT SUM(cantidad_2) INTO m_articulos.existencia from irtb00006
WHERE cod_n = costos.cod_n and cod_grupo = costos.cod_grupo
and cod_tipo = costos.cod_tipo and cod_sec = costos.cod_sec
AND status_t IS NULL
SELECT exist_min, id_maintainx INTO m_articulos.exist_min, checkapi FROM irtb00002
WHERE cod_n = costos.cod_n and cod_grupo = costos.cod_grupo
and cod_tipo = costos.cod_tipo and cod_sec = costos.cod_sec
AND status_t IS NULL
BEGIN WORK
IF checkapi IS NOT NULL THEN
CALL ApiMaintainR('PATCH',checkapi, m_articulos.*, usuarios) RETURNING answer
IF answer != 1 THEN
DISPLAY "AQUI 6"
ROLLBACK WORK
END IF
END IF
UPDATE irtb00013 SET costo_st = costos.costo_st,
us_mod = USER,
fech_mod = getdate()
WHERE cod_n = costos.cod_n and
cod_grupo = costos.cod_grupo and
cod_tipo = costos.cod_tipo and
cod_sec = costos.cod_sec
## Refleja el nuevo costo en el arreglo en memoria para que la navegacion
## siga mostrando el valor actualizado.
LET arr_costos[idx].costo_st = costos.costo_st
LET arr_costos[idx].us_mod = usuarios
LET arr_costos[idx].fech_mod = TODAY
LET numero_msg = 13
CALL msg(numero_msg)
COMMIT WORK
EXIT INPUT
END INPUT
COMMAND KEY ("L") "eLiminar"
UPDATE irtb00013 SET status_t = "E"
WHERE cod_n = costos.cod_n and
cod_grupo = costos.cod_grupo and
cod_tipo = costos.cod_tipo and
cod_sec = costos.cod_sec
LET numero_msg = 39
CALL msg(numero_msg)
## Quita el registro eliminado del arreglo en memoria y reposiciona.
CALL arr_costos.deleteElement(idx)
LET tot = arr_costos.getLength()
IF tot = 0 THEN
CLEAR FORM
EXIT MENU
END IF
IF idx > tot THEN
LET idx = tot
END IF
CALL irp_show004(idx)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION
+1101 -1101
View File
File diff suppressed because it is too large Load Diff
+8 -8
View File
@@ -13,14 +13,14 @@ GLOBALS "irprgb000.4gl"
xcodigo_externo VARCHAR(60)
DEFINE desc_activo STRING, id_maintain STRING
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT to "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprmt009()
END MAIN
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT to "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprmt009()
END MAIN
FUNCTION irprmt009()
CLEAR SCREEN
File diff suppressed because it is too large Load Diff
+105 -105
View File
@@ -1,106 +1,106 @@
{
PROGRAMA: ipprmt021.4gl
OBJETIVO: AUTORIZAR REQUISICIONES A ALMACENES
DESARROLLADO POR: ING. JUAN SOTO
FECHA : MAYO 5, 2022
}
GLOBALS
"irprgb000.4gl"
DEFINE arr_busqueda DYNAMIC ARRAY OF RECORD
estado VARCHAR(50),
idestado int,
tipo_documento VARCHAR(100),
numeroid INT,
fechadoc DATE,
nombre VARCHAR(100),
observacion,usuario VARCHAR(200),
cod_mov INT ,
us_crea VARCHAR(50)
END RECORD
DEFINE nombreUsuario,email,etiqueta STRING
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT to "smarmotech" USER usuarios USING clave
CALL ipprmt021()
END MAIN
FUNCTION ipprmt021()
OPEN WINDOW w1 WITH FORM "irfmmt021"
DIALOG ATTRIBUTE(UNBUFFERED)
CONSTRUCT criterio ON b.estado,b.idestado FROM estado1,idestado1
BEFORE CONSTRUCT
LET etiqueta = "AUTORIZACIONES REQUISICIONES REPUESTOS"
DISPLAY BY NAME etiqueta
CALL estadosprocesos(2)
CALL arr_busqueda.clear()
ON ACTION buscar ATTRIBUTE(TEXT="Buscar",IMAGE="find")
CALL arr_busqueda.clear()
LET selec =
"SELECT b.estado,b.idestado,CAST(a.cod_mov AS VARCHAR(10))||' '||a.descrip_mov,b.numero_doc,b.fecha,c.nombre,
b.observacion,' ',b.cod_mov,b.us_crea
FROM irtb00005 a,irtb00057 b INNER JOIN irtb00061 d ON b.idestado = d.idestado
LEFT OUTER JOIN vetb00004 c ON c.tipo_cliente = b.tipo_cliente AND
c.sec_cliente = b.sec_cliente
WHERE a.cod_mov = b.cod_mov AND
b.status_t IS NULL AND
", criterio CLIPPED
PREPARE comando FROM selec
DECLARE buscardata CURSOR FOR comando
LET idx = 1
FOREACH buscardata INTO arr_busqueda[idx].*
CALL usuarioSistema(arr_busqueda[idx].us_crea) RETURNING nombreUsuario,email
LET arr_busqueda[idx].usuario = nombreUsuario
LET idx = idx + 1
END FOREACH
IF idx = 1 THEN
CALL msg(3)
CALL arr_busqueda.clear()
END IF
END CONSTRUCT
INPUT ARRAY arr_busqueda FROM sautoriza.* ATTRIBUTE(WITHOUT DEFAULTS)
BEFORE INPUT
CALL estadosprocesos(1)
ON CHANGE estado
UPDATE irtb00057 SET estado = arr_busqueda[arr_curr()].estado,us_mod=usuarios,fech_mod=getdate()
WHERE numero_doc = arr_busqueda[arr_curr()].numeroid AND
cod_mov = arr_busqueda[arr_curr()].cod_mov
ON CHANGE observacion
UPDATE irtb00057 SET us_mod=usuarios,fech_mod=getdate(),
observacion = arr_busqueda[arr_curr()].observacion
WHERE numero_doc = arr_busqueda[arr_curr()].numeroid AND
cod_mov = arr_busqueda[arr_curr()].cod_mov
ON CHANGE idestado
UPDATE irtb00057 SET us_mod=usuarios,fech_mod=getdate(),
idestado = arr_busqueda[arr_curr()].idestado -- G6: estado_proceso no existe en irtb00057 (-207)
WHERE numero_doc = arr_busqueda[arr_curr()].numeroid AND
cod_mov = arr_busqueda[arr_curr()].cod_mov
ON ACTION imprime ATTRIBUTE(TEXT="Imprimir", IMAGE="printer")
CALL impdocumentos(arr_busqueda[arr_curr()].numeroid,arr_busqueda[arr_curr()].cod_mov)
AFTER INPUT
END INPUT
ON ACTION CANCEL ATTRIBUTE(TEXT="Cancelar",IMAGE="quit")
EXIT PROGRAM
END DIALOG
CLOSE WINDOW w1
{
PROGRAMA: ipprmt021.4gl
OBJETIVO: AUTORIZAR REQUISICIONES A ALMACENES
DESARROLLADO POR: ING. JUAN SOTO
FECHA : MAYO 5, 2022
}
GLOBALS
"irprgb000.4gl"
DEFINE arr_busqueda DYNAMIC ARRAY OF RECORD
estado VARCHAR(50),
idestado int,
tipo_documento VARCHAR(100),
numeroid INT,
fechadoc DATE,
nombre VARCHAR(100),
observacion,usuario VARCHAR(200),
cod_mov INT ,
us_crea VARCHAR(50)
END RECORD
DEFINE nombreUsuario,email,etiqueta STRING
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT to "smarmotech" USER usuarios USING clave
CALL ipprmt021()
END MAIN
FUNCTION ipprmt021()
OPEN WINDOW w1 WITH FORM "irfmmt021"
DIALOG ATTRIBUTE(UNBUFFERED)
CONSTRUCT criterio ON b.estado,b.idestado FROM estado1,idestado1
BEFORE CONSTRUCT
LET etiqueta = "AUTORIZACIONES REQUISICIONES REPUESTOS"
DISPLAY BY NAME etiqueta
CALL estadosprocesos(2)
CALL arr_busqueda.clear()
ON ACTION buscar ATTRIBUTE(TEXT="Buscar",IMAGE="find")
CALL arr_busqueda.clear()
LET selec =
"SELECT b.estado,b.idestado,CAST(a.cod_mov AS VARCHAR(10))||' '||a.descrip_mov,b.numero_doc,b.fecha,c.nombre,
b.observacion,' ',b.cod_mov,b.us_crea
FROM irtb00005 a,irtb00057 b INNER JOIN irtb00061 d ON b.idestado = d.idestado
LEFT OUTER JOIN vetb00004 c ON c.tipo_cliente = b.tipo_cliente AND
c.sec_cliente = b.sec_cliente
WHERE a.cod_mov = b.cod_mov AND
b.status_t IS NULL AND
", criterio CLIPPED
PREPARE comando FROM selec
DECLARE buscardata CURSOR FOR comando
LET idx = 1
FOREACH buscardata INTO arr_busqueda[idx].*
CALL usuarioSistema(arr_busqueda[idx].us_crea) RETURNING nombreUsuario,email
LET arr_busqueda[idx].usuario = nombreUsuario
LET idx = idx + 1
END FOREACH
IF idx = 1 THEN
CALL msg(3)
CALL arr_busqueda.clear()
END IF
END CONSTRUCT
INPUT ARRAY arr_busqueda FROM sautoriza.* ATTRIBUTE(WITHOUT DEFAULTS)
BEFORE INPUT
CALL estadosprocesos(1)
ON CHANGE estado
UPDATE irtb00057 SET estado = arr_busqueda[arr_curr()].estado,us_mod=usuarios,fech_mod=getdate()
WHERE numero_doc = arr_busqueda[arr_curr()].numeroid AND
cod_mov = arr_busqueda[arr_curr()].cod_mov
ON CHANGE observacion
UPDATE irtb00057 SET us_mod=usuarios,fech_mod=getdate(),
observacion = arr_busqueda[arr_curr()].observacion
WHERE numero_doc = arr_busqueda[arr_curr()].numeroid AND
cod_mov = arr_busqueda[arr_curr()].cod_mov
ON CHANGE idestado
UPDATE irtb00057 SET us_mod=usuarios,fech_mod=getdate(),
idestado = arr_busqueda[arr_curr()].idestado -- G6: estado_proceso no existe en irtb00057 (-207)
WHERE numero_doc = arr_busqueda[arr_curr()].numeroid AND
cod_mov = arr_busqueda[arr_curr()].cod_mov
ON ACTION imprime ATTRIBUTE(TEXT="Imprimir", IMAGE="printer")
CALL impdocumentos(arr_busqueda[arr_curr()].numeroid,arr_busqueda[arr_curr()].cod_mov)
AFTER INPUT
END INPUT
ON ACTION CANCEL ATTRIBUTE(TEXT="Cancelar",IMAGE="quit")
EXIT PROGRAM
END DIALOG
CLOSE WINDOW w1
END FUNCTION
+1916 -1916
View File
File diff suppressed because it is too large Load Diff
+231 -231
View File
@@ -1,231 +1,231 @@
{
--------------------------------------------------------------------------
PROGRAMA : IRPRMT066
OBJETIVO : Programa Para Anular en Forma Logica Movimientos de
Inventario de Repuestos.
PROGRAMADOR : Juan Soto
FECHA : Diciembre 4, 1996
--------------------------------------------------------------------------
}
GLOBALS
"irprgb000.4gl"
DEFINE anular RECORD
cod_mov SMALLINT,
num_doc INTEGER,
fecha DATE,
cod_sp SMALLINT,
cod_sp_sec SMALLINT
END RECORD
DEFINE descrip_mov CHAR(30)
DEFINE opc1 CHAR(1),
orden_compras INT, answer STRING, APIexistencia DECIMAL(12,2)
MAIN
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL irprmt066()
END MAIN
FUNCTION irprmt066()
DEFINE okED BOOLEAN, refED VARCHAR(25)
DEFINE fecha CHAR(8)
DEFINE hora CHAR(5),
chcodigo CHAR(100)
OPTIONS
ERROR LINE 24,
FORM LINE 4,
COMMENT LINE 22,
PROMPT LINE 23
OPEN WINDOW anular AT 8,4 WITH FORM "irfmwd066" ATTRIBUTE (BORDER,FORM LINE
FIRST + 1,PROMPT LINE LAST)
INPUT BY NAME anular.cod_mov,anular.num_doc ATTRIBUTE (BOLD)
AFTER FIELD cod_mov
IF anular.cod_mov is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
SELECT a.descrip_mov INTO descrip_mov FROM irtb00005 a
WHERE a.cod_mov = anular.cod_mov AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
DISPLAY BY NAME descrip_mov
AFTER FIELD num_doc
IF anular.num_doc is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_doc
END IF
SELECT UNIQUE a.num_doc FROM irtb00006 a
WHERE a.cod_mov = anular.cod_mov AND a.num_doc = anular.num_doc AND
a.status_t IS NULL
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
SELECT MAX(a.fecha),MAX(a.cod_sp),MAX(a.cod_sp_sec),MAX(a.orden_compra)
INTO anular.fecha,anular.cod_sp,anular.cod_sp_sec,orden_compras
FROM irtb00006 a
WHERE a.cod_mov = anular.cod_mov AND a.num_doc = anular.num_doc AND
a.status_t IS NULL
DISPLAY BY NAME anular.fecha,anular.cod_sp,anular.cod_sp_sec,orden_compras
LET p_fechas = anular.fecha USING "dd/mm/yyyy"
LET bandera = 0
CALL prd(p_fechas,usuarios) RETURNING bandera
IF bandera = 1 THEN
CALL fgl_winmessage("ERROR","NO PUEDE ANULAR DOCUMENTO, ESTA FUERA DE CORTE","STOP")
EXIT INPUT
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLOSE WINDOW anular
RETURN
END IF
PROMPT "Quiere Proceder Anulacion de Este Dcto. (S/N)? " FOR CHAR opc1
LET opc1 = upshift(opc1)
IF opc1 = "S" THEN
SELECT a.status_mov INTO status_m FROM irtb00005 a
WHERE a.cod_mov = anular.cod_mov
DECLARE busca CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad_2
FROM irtb00006 a
WHERE a.num_doc=anular.num_doc and
a.cod_mov=anular.cod_mov
# a.fecha > "01012008"
LET decide = "N"
LET idx = 1
FOREACH busca INTO movi2[idx].cod_n,movi2[idx].cod_grupo,
movi2[idx].cod_tipo,movi2[idx].cod_sec,
movi2[idx].cantidad_2
IF status_m = "1" THEN
SELECT SUM(a.cantidad_2) INTO chequea.existe FROM irtb00006 a
WHERE a.cod_n = movi2[idx].cod_n and
a.cod_grupo = movi2[idx].cod_grupo and
a.cod_tipo=movi2[idx].cod_tipo and
a.cod_sec = movi2[idx].cod_sec and
a.status_t is null
IF chequea.existe IS NULL THEN
LET chequea.existe = 0
END IF
LET chequea.existe = chequea.existe - movi2[idx].cantidad_2
IF chequea.existe < 0 THEN
LET chcodigo = "SI ANULA ESTE DOCUMENTO ESTE CODIGO SERA NEGATIVO, ANULACION ABORTADA ",
movi2[idx].cod_n," ",movi2[idx].cod_grupo," ",
movi2[idx].cod_tipo," ",movi2[idx].cod_sec
CALL fgl_winmessage("ERROR",chcodigo,"stop")
LET bandera = 1
EXIT FOREACH
END IF
END IF
LET idx = idx + 1
END FOREACH
IF bandera = 1 THEN
GOTO salir
END IF
BEGIN WORK
UPDATE irtb00006 set status_t = "E",
us_mod = SUSER_SNAME(),
fech_mod = GETDATE()
WHERE cod_mov = anular.cod_mov AND
num_doc = anular.num_doc
#-> ANULAR TAMBIEN EL ASIENTO AL MAYOR DEL DOCUMENTO.
# Si el movimiento se anula y el asiento queda vivo, el mayor queda inflado.
# Aqui no se filtra por bodega porque el UPDATE de arriba tampoco lo hace.
CALL anulaEntradaInventario(usuarios, 'R', anular.num_doc, anular.cod_mov, NULL)
RETURNING okED, refED
IF NOT okED THEN
ROLLBACK WORK
CALL msgmodal(1695)
GOTO salir
END IF
FOR idx = 1 TO movi2.getLength() - 1
INITIALIZE answer TO NULL
select id_maintainX INTO answer from irtb00002 WHERE
cod_n = movi2[idx].cod_n AND cod_grupo = movi2[idx].cod_grupo
AND cod_tipo = movi2[idx].cod_tipo AND cod_sec = movi2[idx].cod_sec
DISPLAY answer
IF answer IS NULL THEN
-- G6: sin id MaintainX no hay nada que sincronizar; antes hacia ROLLBACK
-- (deshacia la anulacion) y luego el COMMIT caia -255 Not in transaction
CONTINUE FOR
ELSE
select sum(cantidad_2) INTO APIexistencia from irtb00006
WHERE cod_n = movi2[idx].cod_n and cod_grupo = movi2[idx].cod_grupo
and cod_tipo = movi2[idx].cod_tipo and cod_sec = movi2[idx].cod_sec
AND status_t IS NULL
LET m_articulos.cod_n = movi2[idx].cod_n
LET m_articulos.cod_grupo = movi2[idx].cod_grupo
LET m_articulos.cod_tipo = movi2[idx].cod_tipo
LET m_articulos.cod_sec = movi2[idx].cod_sec
LET m_articulos.descrip_esp = movi2[idx].descrip_esp
LET m_articulos.existencia = APIexistencia
LET m_articulos.exist_min = 0
CALL ApiMaintainR('PATCH',answer, m_articulos.*, usuarios) RETURNING answer
IF answer != 1 THEN
ROLLBACK WORK -- G6: fallo MaintainX: no seguir al COMMIT
CALL fgl_winmessage("ERROR","NO SE PUDO ACTUALIZAR MAINTAINX, ANULACION CANCELADA","stop")
GOTO salir
ELSE
DISPLAY "SUCCESS"
END IF
END IF
END FOR
IF orden_compras IS NOT NULL THEN
UPDATE cotb00014 SET cierre = 'N',us_mod = SUSER_SNAME(),
fech_mod = getdate()
WHERE num_oc = orden_compras
END IF
COMMIT WORK
LET numero_msg = 39
CALL msg(numero_msg)
END IF
LABEL salir:
CLOSE WINDOW anular
END FUNCTION
{
--------------------------------------------------------------------------
PROGRAMA : IRPRMT066
OBJETIVO : Programa Para Anular en Forma Logica Movimientos de
Inventario de Repuestos.
PROGRAMADOR : Juan Soto
FECHA : Diciembre 4, 1996
--------------------------------------------------------------------------
}
GLOBALS
"irprgb000.4gl"
DEFINE anular RECORD
cod_mov SMALLINT,
num_doc INTEGER,
fecha DATE,
cod_sp SMALLINT,
cod_sp_sec SMALLINT
END RECORD
DEFINE descrip_mov CHAR(30)
DEFINE opc1 CHAR(1),
orden_compras INT, answer STRING, APIexistencia DECIMAL(12,2)
MAIN
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL irprmt066()
END MAIN
FUNCTION irprmt066()
DEFINE okED BOOLEAN, refED VARCHAR(25)
DEFINE fecha CHAR(8)
DEFINE hora CHAR(5),
chcodigo CHAR(100)
OPTIONS
ERROR LINE 24,
FORM LINE 4,
COMMENT LINE 22,
PROMPT LINE 23
OPEN WINDOW anular AT 8,4 WITH FORM "irfmwd066" ATTRIBUTE (BORDER,FORM LINE
FIRST + 1,PROMPT LINE LAST)
INPUT BY NAME anular.cod_mov,anular.num_doc ATTRIBUTE (BOLD)
AFTER FIELD cod_mov
IF anular.cod_mov is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
SELECT a.descrip_mov INTO descrip_mov FROM irtb00005 a
WHERE a.cod_mov = anular.cod_mov AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
DISPLAY BY NAME descrip_mov
AFTER FIELD num_doc
IF anular.num_doc is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_doc
END IF
SELECT UNIQUE a.num_doc FROM irtb00006 a
WHERE a.cod_mov = anular.cod_mov AND a.num_doc = anular.num_doc AND
a.status_t IS NULL
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
SELECT MAX(a.fecha),MAX(a.cod_sp),MAX(a.cod_sp_sec),MAX(a.orden_compra)
INTO anular.fecha,anular.cod_sp,anular.cod_sp_sec,orden_compras
FROM irtb00006 a
WHERE a.cod_mov = anular.cod_mov AND a.num_doc = anular.num_doc AND
a.status_t IS NULL
DISPLAY BY NAME anular.fecha,anular.cod_sp,anular.cod_sp_sec,orden_compras
LET p_fechas = anular.fecha USING "dd/mm/yyyy"
LET bandera = 0
CALL prd(p_fechas,usuarios) RETURNING bandera
IF bandera = 1 THEN
CALL fgl_winmessage("ERROR","NO PUEDE ANULAR DOCUMENTO, ESTA FUERA DE CORTE","STOP")
EXIT INPUT
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLOSE WINDOW anular
RETURN
END IF
PROMPT "Quiere Proceder Anulacion de Este Dcto. (S/N)? " FOR CHAR opc1
LET opc1 = upshift(opc1)
IF opc1 = "S" THEN
SELECT a.status_mov INTO status_m FROM irtb00005 a
WHERE a.cod_mov = anular.cod_mov
DECLARE busca CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad_2
FROM irtb00006 a
WHERE a.num_doc=anular.num_doc and
a.cod_mov=anular.cod_mov
# a.fecha > "01012008"
LET decide = "N"
LET idx = 1
FOREACH busca INTO movi2[idx].cod_n,movi2[idx].cod_grupo,
movi2[idx].cod_tipo,movi2[idx].cod_sec,
movi2[idx].cantidad_2
IF status_m = "1" THEN
SELECT SUM(a.cantidad_2) INTO chequea.existe FROM irtb00006 a
WHERE a.cod_n = movi2[idx].cod_n and
a.cod_grupo = movi2[idx].cod_grupo and
a.cod_tipo=movi2[idx].cod_tipo and
a.cod_sec = movi2[idx].cod_sec and
a.status_t is null
IF chequea.existe IS NULL THEN
LET chequea.existe = 0
END IF
LET chequea.existe = chequea.existe - movi2[idx].cantidad_2
IF chequea.existe < 0 THEN
LET chcodigo = "SI ANULA ESTE DOCUMENTO ESTE CODIGO SERA NEGATIVO, ANULACION ABORTADA ",
movi2[idx].cod_n," ",movi2[idx].cod_grupo," ",
movi2[idx].cod_tipo," ",movi2[idx].cod_sec
CALL fgl_winmessage("ERROR",chcodigo,"stop")
LET bandera = 1
EXIT FOREACH
END IF
END IF
LET idx = idx + 1
END FOREACH
IF bandera = 1 THEN
GOTO salir
END IF
BEGIN WORK
UPDATE irtb00006 set status_t = "E",
us_mod = SUSER_SNAME(),
fech_mod = GETDATE()
WHERE cod_mov = anular.cod_mov AND
num_doc = anular.num_doc
#-> ANULAR TAMBIEN EL ASIENTO AL MAYOR DEL DOCUMENTO.
# Si el movimiento se anula y el asiento queda vivo, el mayor queda inflado.
# Aqui no se filtra por bodega porque el UPDATE de arriba tampoco lo hace.
CALL anulaEntradaInventario(usuarios, 'R', anular.num_doc, anular.cod_mov, NULL)
RETURNING okED, refED
IF NOT okED THEN
ROLLBACK WORK
CALL msgmodal(1695)
GOTO salir
END IF
FOR idx = 1 TO movi2.getLength() - 1
INITIALIZE answer TO NULL
select id_maintainX INTO answer from irtb00002 WHERE
cod_n = movi2[idx].cod_n AND cod_grupo = movi2[idx].cod_grupo
AND cod_tipo = movi2[idx].cod_tipo AND cod_sec = movi2[idx].cod_sec
DISPLAY answer
IF answer IS NULL THEN
-- G6: sin id MaintainX no hay nada que sincronizar; antes hacia ROLLBACK
-- (deshacia la anulacion) y luego el COMMIT caia -255 Not in transaction
CONTINUE FOR
ELSE
select sum(cantidad_2) INTO APIexistencia from irtb00006
WHERE cod_n = movi2[idx].cod_n and cod_grupo = movi2[idx].cod_grupo
and cod_tipo = movi2[idx].cod_tipo and cod_sec = movi2[idx].cod_sec
AND status_t IS NULL
LET m_articulos.cod_n = movi2[idx].cod_n
LET m_articulos.cod_grupo = movi2[idx].cod_grupo
LET m_articulos.cod_tipo = movi2[idx].cod_tipo
LET m_articulos.cod_sec = movi2[idx].cod_sec
LET m_articulos.descrip_esp = movi2[idx].descrip_esp
LET m_articulos.existencia = APIexistencia
LET m_articulos.exist_min = 0
CALL ApiMaintainR('PATCH',answer, m_articulos.*, usuarios) RETURNING answer
IF answer != 1 THEN
ROLLBACK WORK -- G6: fallo MaintainX: no seguir al COMMIT
CALL fgl_winmessage("ERROR","NO SE PUDO ACTUALIZAR MAINTAINX, ANULACION CANCELADA","stop")
GOTO salir
ELSE
DISPLAY "SUCCESS"
END IF
END IF
END FOR
IF orden_compras IS NOT NULL THEN
UPDATE cotb00014 SET cierre = 'N',us_mod = SUSER_SNAME(),
fech_mod = getdate()
WHERE num_oc = orden_compras
END IF
COMMIT WORK
LET numero_msg = 39
CALL msg(numero_msg)
END IF
LABEL salir:
CLOSE WINDOW anular
END FUNCTION
+283 -283
View File
@@ -1,283 +1,283 @@
{
-------------------------------------------------------------------------------
PROGRAMA : IRPRRP002
OBJETIVO : CATALOGO DE REPUESTOS.
PROGRAMADOR : Ing. Juan Fco. Soto.
FECHA REALIZACION : Enero 29, 1993.
-------------------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
DEFINE fecha1 DATE
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprrp002()
END MAIN
FUNCTION irprrp002()
DEFINE sel_exist CHAR(300)
DEFINE salir1,salir CHAR(1)
DEFINE idx1,idx SMALLINT
DEFINE hoy DATE
DEFINE dat_exist RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
existencia SMALLINT
END RECORD
DEFINE materia RECORD
cod_n LIKE intb00002.cod_n,
cod_grupo LIKE intb00002.cod_grupo,
cod_tipo LIKE intb00002.cod_tipo,
cod_sec LIKE intb00002.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
descrip_ing LIKE intb00001.descrip_ing,
dia_llegada LIKE intb00002.dia_llegada,
unidad_med LIKE intb00001.unidad_med,
descripcion LIKE intb00001.descrip_esp,
codigo LIKE irtb00010.codigo,
existencia LIKE irtb00002.existencia
END RECORD,
cod smallint
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM irfmrp02 FROM "irfmrp002"
DISPLAY FORM irfmrp02
CALL pantalla()
DISPLAY "irprrp002" AT 4,3
DISPLAY "Catalogo de Repuestos " AT 6,28
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
INPUT BY NAME decide,fecha1
BEFORE FIELD fecha1
LET fecha1 = TODAY
DISPLAY BY NAME fecha1
AFTER FIELD fecha1
IF fecha1 IS NULL THEN
LET numero_msg = 2
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
CONSTRUCT criterio ON b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec
FROM cod_n,cod_grupo,cod_tipo,cod_sec
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
START REPORT maestra TO archivo
IF decide = "A" THEN
LET SELEC =
"SELECT UNIQUE b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec, ",
" b.descrip_esp,b.descrip_ing,b.dia_llegada,b.unidad_med, ",
" c.nombre,c.codigo ",
" FROM irtb00002 b, OUTER irtb00010 c ",
" WHERE ",criterio clipped,
" AND c.codigo = b.cod_tipo ",
"ORDER BY 10,5"
ELSE
LET SELEC =
"SELECT UNIQUE b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec, ",
" b.descrip_esp,b.descrip_ing,b.dia_llegada,b.unidad_med, ",
" c.nombre,c.codigo ",
" FROM irtb00002 b, OUTER irtb00010 c ",
" WHERE ",criterio clipped,
" AND c.codigo = b.cod_tipo AND b.status_t IS NULL ",
"ORDER BY 10,1,2,3,4 "
END IF
LET selec1 = "SELECT COUNT(*) FROM irtb00002 b,irtb00010 c ",
"WHERE ",criterio clipped,
" AND c.codigo = b.cod_tipo AND b.status_t IS NULL"
PREPARE comando1 FROM selec1
DECLARE busca1 CURSOR FOR comando1
OPEN busca1
FETCH busca1 INTO regi
DISPLAY "<< Buscando Informacion ... Espere Por Favor >>" AT 17,14
ATTRIBUTE (BOLD)
PREPARE busca FROM selec
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DECLARE accion CURSOR FOR busca
DISPLAY " " AT 17,14
LET p_param = "S"
FOREACH accion INTO materia.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
OUTPUT TO REPORT maestra(materia.*)
END FOREACH
FINISH REPORT maestra
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%"
END FUNCTION
REPORT maestra(x)
DEFINE x RECORD
cod_n LIKE intb00002.cod_n,
cod_grupo LIKE intb00002.cod_grupo,
cod_tipo LIKE intb00002.cod_tipo,
cod_sec LIKE intb00002.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
descrip_ing LIKE intb00001.descrip_ing,
dia_llegada LIKE intb00002.dia_llegada,
unidad_med LIKE intb00001.unidad_med,
descripcion LIKE intb00001.descrip_esp,
codigo LIKE irtb00010.codigo,
existencia LIKE irtb00002.existencia
END RECORD
DEFINE l smallint
DEFINE varia CHAR(20)
DEFINE descripcion CHAR(60)
DEFINE primera CHAR(1)
DEFINE doble_on CHAR(2)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(2)
DEFINE negrillas_off CHAR(2)
DEFINE comp_on CHAR(2)
DEFINE comp_off CHAR(2)
DEFINE normal CHAR(2)
DEFINE doce CHAR(2)
DEFINE hora CHAR(5)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
FORMAT
PAGE HEADER
LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET hora = time
PRINT COLUMN 3, comp_off,negrillas_on
PRINT COLUMN 1, "irprrp002",
COLUMN 31, p_companias.nombre CLIPPED, -- antes "E U R O S T O N E" fijo
COLUMN 75, "Pag. ",pageno using "###"
PRINT COLUMN 17, " Sistema de Inventario de Repuestos ",
COLUMN 75, today using "dd/mm/yyyy"
PRINT COLUMN 17, " Catalogo de Repuestos ",
COLUMN 78, hora
IF decide = "N" THEN
LET varia = " N u m e r i c o"
ELSE
LET varia = " A l f a b e t i c o"
END IF
LET l = (80 - LENGTH(varia))/2
LET l = l - 8
PRINT COLUMN l+2, varia clipped," AL ",fecha1 USING "dd/mm/yyyy"
PRINT COLUMN 1, comp_on
PRINT COLUMN 1, "----------------------------------------------------",
"----------------------------------------------------" ,
"----------------------------------------"
PRINT COLUMN 99, "Dia de",
COLUMN 109, "Existencia"
PRINT COLUMN 1, "codigo",
COLUMN 15, "Descripcion",
COLUMN 91, "Unidad",
COLUMN 99, "Llegada",
COLUMN 109, "S/Mvto."
PRINT COLUMN 1, "----------------------------------------------------",
"----------------------------------------------------" ,
"----------------------------------------"
BEFORE GROUP OF x.codigo
SKIP 1 LINE
PRINT COLUMN 2, negrillas_on,x.descripcion CLIPPED,negrillas_off
SKIP 1 LINE
ON EVERY ROW
SELECT SUM(a.cantidad_2) INTO x.existencia
FROM irtb00006 a
WHERE a.cod_n = x.cod_n and a.cod_grupo = x.cod_grupo and
a.cod_tipo = x.cod_tipo and a.cod_sec = x.cod_sec and
a.status_t is null AND a.fecha <= fecha1
IF x.existencia is null THEN
LET x.existencia = 0
END IF
PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&&","-",
x.cod_tipo USING "&&","-",x.cod_sec USING "&&&&"," ", -- &&& daba *** con sec >= 1000
x.descrip_esp CLIPPED," ",x.descrip_ing,
COLUMN 91, x.unidad_med,
COLUMN 100, x.dia_llegada using "###",
COLUMN 107, x.existencia using "---,---.##"
AFTER GROUP OF x.cod_tipo
SKIP 1 LINE
PRINT COLUMN 3, "Total del grupo = ",
GROUP count(*) USING "####"
SKIP 1 LINE
ON LAST ROW
SKIP 1 LINE
PRINT COLUMN 3, "Total de Registros Impresos = ", count(*) USING "####"
PRINT COLUMN 1, "====================================================",
"====================================================" ,
"==========================="
PRINT COLUMN 3, comp_off
END REPORT
{
-------------------------------------------------------------------------------
PROGRAMA : IRPRRP002
OBJETIVO : CATALOGO DE REPUESTOS.
PROGRAMADOR : Ing. Juan Fco. Soto.
FECHA REALIZACION : Enero 29, 1993.
-------------------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
DEFINE fecha1 DATE
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprrp002()
END MAIN
FUNCTION irprrp002()
DEFINE sel_exist CHAR(300)
DEFINE salir1,salir CHAR(1)
DEFINE idx1,idx SMALLINT
DEFINE hoy DATE
DEFINE dat_exist RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
existencia SMALLINT
END RECORD
DEFINE materia RECORD
cod_n LIKE intb00002.cod_n,
cod_grupo LIKE intb00002.cod_grupo,
cod_tipo LIKE intb00002.cod_tipo,
cod_sec LIKE intb00002.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
descrip_ing LIKE intb00001.descrip_ing,
dia_llegada LIKE intb00002.dia_llegada,
unidad_med LIKE intb00001.unidad_med,
descripcion LIKE intb00001.descrip_esp,
codigo LIKE irtb00010.codigo,
existencia LIKE irtb00002.existencia
END RECORD,
cod smallint
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM irfmrp02 FROM "irfmrp002"
DISPLAY FORM irfmrp02
CALL pantalla()
DISPLAY "irprrp002" AT 4,3
DISPLAY "Catalogo de Repuestos " AT 6,28
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
INPUT BY NAME decide,fecha1
BEFORE FIELD fecha1
LET fecha1 = TODAY
DISPLAY BY NAME fecha1
AFTER FIELD fecha1
IF fecha1 IS NULL THEN
LET numero_msg = 2
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
CONSTRUCT criterio ON b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec
FROM cod_n,cod_grupo,cod_tipo,cod_sec
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
START REPORT maestra TO archivo
IF decide = "A" THEN
LET SELEC =
"SELECT UNIQUE b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec, ",
" b.descrip_esp,b.descrip_ing,b.dia_llegada,b.unidad_med, ",
" c.nombre,c.codigo ",
" FROM irtb00002 b, OUTER irtb00010 c ",
" WHERE ",criterio clipped,
" AND c.codigo = b.cod_tipo ",
"ORDER BY 10,5"
ELSE
LET SELEC =
"SELECT UNIQUE b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec, ",
" b.descrip_esp,b.descrip_ing,b.dia_llegada,b.unidad_med, ",
" c.nombre,c.codigo ",
" FROM irtb00002 b, OUTER irtb00010 c ",
" WHERE ",criterio clipped,
" AND c.codigo = b.cod_tipo AND b.status_t IS NULL ",
"ORDER BY 10,1,2,3,4 "
END IF
LET selec1 = "SELECT COUNT(*) FROM irtb00002 b,irtb00010 c ",
"WHERE ",criterio clipped,
" AND c.codigo = b.cod_tipo AND b.status_t IS NULL"
PREPARE comando1 FROM selec1
DECLARE busca1 CURSOR FOR comando1
OPEN busca1
FETCH busca1 INTO regi
DISPLAY "<< Buscando Informacion ... Espere Por Favor >>" AT 17,14
ATTRIBUTE (BOLD)
PREPARE busca FROM selec
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DECLARE accion CURSOR FOR busca
DISPLAY " " AT 17,14
LET p_param = "S"
FOREACH accion INTO materia.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
OUTPUT TO REPORT maestra(materia.*)
END FOREACH
FINISH REPORT maestra
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%"
END FUNCTION
REPORT maestra(x)
DEFINE x RECORD
cod_n LIKE intb00002.cod_n,
cod_grupo LIKE intb00002.cod_grupo,
cod_tipo LIKE intb00002.cod_tipo,
cod_sec LIKE intb00002.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
descrip_ing LIKE intb00001.descrip_ing,
dia_llegada LIKE intb00002.dia_llegada,
unidad_med LIKE intb00001.unidad_med,
descripcion LIKE intb00001.descrip_esp,
codigo LIKE irtb00010.codigo,
existencia LIKE irtb00002.existencia
END RECORD
DEFINE l smallint
DEFINE varia CHAR(20)
DEFINE descripcion CHAR(60)
DEFINE primera CHAR(1)
DEFINE doble_on CHAR(2)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(2)
DEFINE negrillas_off CHAR(2)
DEFINE comp_on CHAR(2)
DEFINE comp_off CHAR(2)
DEFINE normal CHAR(2)
DEFINE doce CHAR(2)
DEFINE hora CHAR(5)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
FORMAT
PAGE HEADER
LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET hora = time
PRINT COLUMN 3, comp_off,negrillas_on
PRINT COLUMN 1, "irprrp002",
COLUMN 31, p_companias.nombre CLIPPED, -- antes "E U R O S T O N E" fijo
COLUMN 75, "Pag. ",pageno using "###"
PRINT COLUMN 17, " Sistema de Inventario de Repuestos ",
COLUMN 75, today using "dd/mm/yyyy"
PRINT COLUMN 17, " Catalogo de Repuestos ",
COLUMN 78, hora
IF decide = "N" THEN
LET varia = " N u m e r i c o"
ELSE
LET varia = " A l f a b e t i c o"
END IF
LET l = (80 - LENGTH(varia))/2
LET l = l - 8
PRINT COLUMN l+2, varia clipped," AL ",fecha1 USING "dd/mm/yyyy"
PRINT COLUMN 1, comp_on
PRINT COLUMN 1, "----------------------------------------------------",
"----------------------------------------------------" ,
"----------------------------------------"
PRINT COLUMN 99, "Dia de",
COLUMN 109, "Existencia"
PRINT COLUMN 1, "codigo",
COLUMN 15, "Descripcion",
COLUMN 91, "Unidad",
COLUMN 99, "Llegada",
COLUMN 109, "S/Mvto."
PRINT COLUMN 1, "----------------------------------------------------",
"----------------------------------------------------" ,
"----------------------------------------"
BEFORE GROUP OF x.codigo
SKIP 1 LINE
PRINT COLUMN 2, negrillas_on,x.descripcion CLIPPED,negrillas_off
SKIP 1 LINE
ON EVERY ROW
SELECT SUM(a.cantidad_2) INTO x.existencia
FROM irtb00006 a
WHERE a.cod_n = x.cod_n and a.cod_grupo = x.cod_grupo and
a.cod_tipo = x.cod_tipo and a.cod_sec = x.cod_sec and
a.status_t is null AND a.fecha <= fecha1
IF x.existencia is null THEN
LET x.existencia = 0
END IF
PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&&","-",
x.cod_tipo USING "&&","-",x.cod_sec USING "&&&&"," ", -- &&& daba *** con sec >= 1000
x.descrip_esp CLIPPED," ",x.descrip_ing,
COLUMN 91, x.unidad_med,
COLUMN 100, x.dia_llegada using "###",
COLUMN 107, x.existencia using "---,---.##"
AFTER GROUP OF x.cod_tipo
SKIP 1 LINE
PRINT COLUMN 3, "Total del grupo = ",
GROUP count(*) USING "####"
SKIP 1 LINE
ON LAST ROW
SKIP 1 LINE
PRINT COLUMN 3, "Total de Registros Impresos = ", count(*) USING "####"
PRINT COLUMN 1, "====================================================",
"====================================================" ,
"==========================="
PRINT COLUMN 3, comp_off
END REPORT
+314 -314
View File
@@ -1,314 +1,314 @@
{
-------------------------------------------------------------------------------
PROGRAMA : IRPRRP003
OBJETIVO : REPORTE DE MOVIMIENTOS APARTIR DE UN RANGO DE FECHA.
EL REPORTE SE PUEDE LISTAR TANTO PARA UN CODIGO COMO
PARA UN RANGO DE CODIGO O TODOS LOS CODIGOS
PROGRAMADOR : Ing. Juan Fco. Soto
FECHA REALIZACION : Marzo 1, 1993.
-------------------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
MAIN
DEFER INTERRUPT
CALL STARTLOG("irprrp03.log")
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL irprrp03()
END MAIN
FUNCTION irprrp03()
# Estas variables son tando de control de indice de busqueda como de control de
# cambio de codigo y termino de loops
DEFINE idx_b SMALLINT
DEFINE cambio,salir,salir1 CHAR(1)
# Variable que contiene los movimientos del rango para cada codigo
DEFINE transacc RECORD
cod_n LIKE irtb00006.cod_n,
cod_grupo LIKE irtb00006.cod_grupo,
cod_tipo LIKE irtb00006.cod_tipo,
cod_sec LIKE irtb00006.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
num_doc LIKE irtb00006.num_doc,
fecha CHAR(10),
cantidad_2 LIKE irtb00006.cantidad_2,
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE irtb00005.descrip_mov,
codigo CHAR(8),
balance_in DECIMAL(12,2)
END RECORD
# Variable control de validacion de cambio de codigo
DEFINE codigo_ant RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT
END RECORD
# Variable para los balances iniciales de todos los codigos
DEFINE balances RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
balance LIKE irtb00006.cantidad_2
END RECORD
# Variable para el select de los balances iniciales
DEFINE select_balan CHAR(1000)
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM irfmrp03 FROM "irfmrp003"
DISPLAY FORM irfmrp03
# Rutina para mensaje de papel en la pantalla
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
LET int_flag = false
# Captura de rango de fecha
INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi
# Control interrupcion del programa
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
CLEAR SCREEN
RETURN
END IF
# Control para imprimir los movimientos pertenecientes a un codigo o
# movimientos para varios codigos
CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
FROM cod_n,cod_grupo,cod_tipo,cod_sec
# Concatenacion para la configuracion del select de busqueda de los balances
# Iniciales
LET selec =
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,b.unidad_med, ",
" a.num_doc,CONVERT(CHAR(10),a.fecha,103),a.cantidad_2,a.cod_mov,c.descrip_mov,'1' ",
"FROM irtb00006 a, irtb00002 b, irtb00005 c ",
"WHERE ",criterio clipped," AND 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 c.cod_mov=a.cod_mov ",
-- antes CONVERT(CHAR(10),a.fecha,103) BETWEEN 'dd/mm/yyyy' AND ...: comparaba TEXTO y traia
-- movimientos de cualquier ano cuyo dd/mm cayera en el rango -> fecha real con parametros
"AND b.status_t is NULL AND a.fecha BETWEEN ? AND ? AND a.status_t IS NULL ",
"ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.fecha"
# Abrir el archivo del spool para la impresion
DISPLAY "<< Estoy Buscando los Movimientos >>"
AT 17,14 ATTRIBUTE (REVERSE,BOLD)
DISPLAY selec
PREPARE busca FROM selec
DECLARE accion CURSOR FOR busca
LET selec1 =
"SELECT COUNT(*) FROM irtb00006 a, irtb00002 b, irtb00005 c ",
"WHERE ",criterio clipped," AND 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 c.cod_mov=a.cod_mov ",
"AND b.status_t is NULL AND a.fecha BETWEEN ? AND ? AND a.status_t IS NULL "
PREPARE comando1 FROM selec1
DECLARE busca1 CURSOR FOR comando1
OPEN busca1 USING datos_cons.fech_in, datos_cons.fech_fi
FETCH busca1 INTO regi
LET p_param = "S"
{ CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
}
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING HANDLER
START REPORT reporte3 TO XML HANDLER handler
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 17,14 ATTRIBUTE (REVERSE,BOLD)
# Loop para la busqueda de los movimientos de los codigos especificados
FOREACH accion USING datos_cons.fech_in, datos_cons.fech_fi INTO transacc.*
CALL termometro(regi,p_param)
LET p_param = "N"
LET transacc.codigo = transacc.cod_n USING "&",
transacc.cod_grupo USING "&",
transacc.cod_tipo USING "&&",
transacc.cod_sec USING "&&&&" -- &&& = *** con sec >= 1000: mezclaba articulos en un grupo
LET transacc.balance_in = 0
IF transacc.balance_in IS NULL THEN
LET transacc.balance_in = 0
END IF
DISPLAY "ESTOY ENVIANDO "
OUTPUT TO REPORT reporte3(transacc.*)
END FOREACH
FINISH REPORT reporte3
#RUN imprime
END FUNCTION
# Rutina generadora del reporte
REPORT reporte3(x)
# Record para validacion de los valores de la funcion matriz
DEFINE x RECORD
cod_n LIKE irtb00006.cod_n,
cod_grupo LIKE irtb00006.cod_grupo,
cod_tipo LIKE irtb00006.cod_tipo,
cod_sec LIKE irtb00006.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
num_doc LIKE irtb00006.num_doc,
fecha CHAR(10),
cantidad_2 LIKE irtb00006.cantidad_2,
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE irtb00005.descrip_mov,
codigo CHAR(8),
balance_in DECIMAL(12,2)
END RECORD
# Variables para control de nombre y caracteres ASCII
DEFINE doble_on CHAR(2),
doble_off CHAR(2),
negrillas_on CHAR(2),
negrillas_off CHAR(2),
comprimido_on CHAR(2),
comprimido_off,doce CHAR(3),
hora CHAR(5),
# Calculo para el reporte
canti DECIMAL(12,2),
entrada,salida DECIMAL(12,2)
OUTPUT
LEFT MARGIN 0
RIGHT MARGIN 170 -- el balance se imprime hasta la col. 166; con el default (132) GRE lo cortaba
ORDER BY x.codigo
FORMAT
PAGE HEADER
# Validacion de los caracteres ASCII
{ LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET comprimido_on = ASCII 15
LET comprimido_off = ASCII 18
LET doce = ASCII 27, ASCII 77}
LET hora = time
# Impresion del encabezado de la compania y demas letreros
PRINT COLUMN 1, ASCII 27,ASCII 80
PRINT COLUMN 1, "irprrp003",
COLUMN 17, p_companias.nombre,
COLUMN 75, "Pag. ",pageno using "###"
PRINT COLUMN 17, " Sistema de Inventario de Repuestos ",
COLUMN 75, today using "dd/mm/yyyy"
PRINT COLUMN 17, " Movimientos de Repuestos ",
COLUMN 78, hora
SKIP 2 LINES
#--------------------------------------------------------------------------
# Encabezados de detalles
PRINT COLUMN 1, "Desde ",datos_cons.fech_in using "dd/mm/yyyy",
COLUMN 18, "Hasta ",datos_cons.fech_fi using "dd/mm/yyyy"
PRINT doce,comprimido_on
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------------------",
"---------------"
PRINT COLUMN 124, "C a n t i d a d"
PRINT COLUMN 1, "Codigo ",
COLUMN 15, "Descripcion",
COLUMN 45, "Unidad",
COLUMN 52, "Documento",
COLUMN 63, "fecha",
COLUMN 74, "Movimiento",
COLUMN 121, "Entrada",
COLUMN 136, "Salida",
COLUMN 159, "Balance"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------------------",
"---------------"
# Control para la impresion del codigo del repuesto una sola vez
BEFORE GROUP OF x.codigo
SKIP 1 LINE
LET x.balance_in = 0
LET canti = 0
SELECT SUM(a.cantidad_2) INTO x.balance_in FROM irtb00006 a
WHERE a.status_t IS NULL AND a.cod_n = x.cod_n AND
a.cod_grupo = x.cod_grupo AND a.cod_tipo = x.cod_tipo AND
a.cod_sec = x.cod_sec AND a.fecha < datos_cons.fech_in
IF x.balance_in is null THEN
LET x.balance_in = 0
END IF
PRINT COLUMN 1, x.cod_n USING "&","-",
COLUMN 3, x.cod_grupo USING "&","-",
COLUMN 5, x.cod_tipo USING "&&","-",
COLUMN 8, x.cod_sec USING "&&&&",
COLUMN 15, x.descrip_esp,
COLUMN 45, x.unidad_med,
COLUMN 132, "Inicial ---> ",
x.balance_in using "---,---,---.##"
LET canti = x.balance_in
# Impresion de los movimientos con sus respctivas descripcion y
# cantidades afectadas
ON EVERY ROW
# Control para impresion del balance inicial una sola vez
# IF primera = "S" THEN
#----------------------------------------------------------------------------
LET canti = canti + x.cantidad_2
IF x.cantidad_2 > 0 THEN
LET salida = null
LET entrada = x.cantidad_2
ELSE
LET entrada = null
LET salida = x.cantidad_2
END IF
PRINT COLUMN 53, x.num_doc USING "&&&&&&",
COLUMN 63, x.fecha ,
COLUMN 74, x.descrip_mov,
COLUMN 111, entrada USING "---,---,---.##",
COLUMN 127, salida USING "---,---,---.##",
COLUMN 152, canti using "---,---,---.##"
ON LAST ROW
PRINT comprimido_off
END REPORT
{
-------------------------------------------------------------------------------
PROGRAMA : IRPRRP003
OBJETIVO : REPORTE DE MOVIMIENTOS APARTIR DE UN RANGO DE FECHA.
EL REPORTE SE PUEDE LISTAR TANTO PARA UN CODIGO COMO
PARA UN RANGO DE CODIGO O TODOS LOS CODIGOS
PROGRAMADOR : Ing. Juan Fco. Soto
FECHA REALIZACION : Marzo 1, 1993.
-------------------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
MAIN
DEFER INTERRUPT
CALL STARTLOG("irprrp03.log")
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL irprrp03()
END MAIN
FUNCTION irprrp03()
# Estas variables son tando de control de indice de busqueda como de control de
# cambio de codigo y termino de loops
DEFINE idx_b SMALLINT
DEFINE cambio,salir,salir1 CHAR(1)
# Variable que contiene los movimientos del rango para cada codigo
DEFINE transacc RECORD
cod_n LIKE irtb00006.cod_n,
cod_grupo LIKE irtb00006.cod_grupo,
cod_tipo LIKE irtb00006.cod_tipo,
cod_sec LIKE irtb00006.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
num_doc LIKE irtb00006.num_doc,
fecha CHAR(10),
cantidad_2 LIKE irtb00006.cantidad_2,
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE irtb00005.descrip_mov,
codigo CHAR(8),
balance_in DECIMAL(12,2)
END RECORD
# Variable control de validacion de cambio de codigo
DEFINE codigo_ant RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT
END RECORD
# Variable para los balances iniciales de todos los codigos
DEFINE balances RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
balance LIKE irtb00006.cantidad_2
END RECORD
# Variable para el select de los balances iniciales
DEFINE select_balan CHAR(1000)
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM irfmrp03 FROM "irfmrp003"
DISPLAY FORM irfmrp03
# Rutina para mensaje de papel en la pantalla
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
LET int_flag = false
# Captura de rango de fecha
INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi
# Control interrupcion del programa
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
CLEAR SCREEN
RETURN
END IF
# Control para imprimir los movimientos pertenecientes a un codigo o
# movimientos para varios codigos
CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
FROM cod_n,cod_grupo,cod_tipo,cod_sec
# Concatenacion para la configuracion del select de busqueda de los balances
# Iniciales
LET selec =
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,b.unidad_med, ",
" a.num_doc,CONVERT(CHAR(10),a.fecha,103),a.cantidad_2,a.cod_mov,c.descrip_mov,'1' ",
"FROM irtb00006 a, irtb00002 b, irtb00005 c ",
"WHERE ",criterio clipped," AND 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 c.cod_mov=a.cod_mov ",
-- antes CONVERT(CHAR(10),a.fecha,103) BETWEEN 'dd/mm/yyyy' AND ...: comparaba TEXTO y traia
-- movimientos de cualquier ano cuyo dd/mm cayera en el rango -> fecha real con parametros
"AND b.status_t is NULL AND a.fecha BETWEEN ? AND ? AND a.status_t IS NULL ",
"ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.fecha"
# Abrir el archivo del spool para la impresion
DISPLAY "<< Estoy Buscando los Movimientos >>"
AT 17,14 ATTRIBUTE (REVERSE,BOLD)
DISPLAY selec
PREPARE busca FROM selec
DECLARE accion CURSOR FOR busca
LET selec1 =
"SELECT COUNT(*) FROM irtb00006 a, irtb00002 b, irtb00005 c ",
"WHERE ",criterio clipped," AND 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 c.cod_mov=a.cod_mov ",
"AND b.status_t is NULL AND a.fecha BETWEEN ? AND ? AND a.status_t IS NULL "
PREPARE comando1 FROM selec1
DECLARE busca1 CURSOR FOR comando1
OPEN busca1 USING datos_cons.fech_in, datos_cons.fech_fi
FETCH busca1 INTO regi
LET p_param = "S"
{ CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
}
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING HANDLER
START REPORT reporte3 TO XML HANDLER handler
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 17,14 ATTRIBUTE (REVERSE,BOLD)
# Loop para la busqueda de los movimientos de los codigos especificados
FOREACH accion USING datos_cons.fech_in, datos_cons.fech_fi INTO transacc.*
CALL termometro(regi,p_param)
LET p_param = "N"
LET transacc.codigo = transacc.cod_n USING "&",
transacc.cod_grupo USING "&",
transacc.cod_tipo USING "&&",
transacc.cod_sec USING "&&&&" -- &&& = *** con sec >= 1000: mezclaba articulos en un grupo
LET transacc.balance_in = 0
IF transacc.balance_in IS NULL THEN
LET transacc.balance_in = 0
END IF
DISPLAY "ESTOY ENVIANDO "
OUTPUT TO REPORT reporte3(transacc.*)
END FOREACH
FINISH REPORT reporte3
#RUN imprime
END FUNCTION
# Rutina generadora del reporte
REPORT reporte3(x)
# Record para validacion de los valores de la funcion matriz
DEFINE x RECORD
cod_n LIKE irtb00006.cod_n,
cod_grupo LIKE irtb00006.cod_grupo,
cod_tipo LIKE irtb00006.cod_tipo,
cod_sec LIKE irtb00006.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
num_doc LIKE irtb00006.num_doc,
fecha CHAR(10),
cantidad_2 LIKE irtb00006.cantidad_2,
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE irtb00005.descrip_mov,
codigo CHAR(8),
balance_in DECIMAL(12,2)
END RECORD
# Variables para control de nombre y caracteres ASCII
DEFINE doble_on CHAR(2),
doble_off CHAR(2),
negrillas_on CHAR(2),
negrillas_off CHAR(2),
comprimido_on CHAR(2),
comprimido_off,doce CHAR(3),
hora CHAR(5),
# Calculo para el reporte
canti DECIMAL(12,2),
entrada,salida DECIMAL(12,2)
OUTPUT
LEFT MARGIN 0
RIGHT MARGIN 170 -- el balance se imprime hasta la col. 166; con el default (132) GRE lo cortaba
ORDER BY x.codigo
FORMAT
PAGE HEADER
# Validacion de los caracteres ASCII
{ LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET comprimido_on = ASCII 15
LET comprimido_off = ASCII 18
LET doce = ASCII 27, ASCII 77}
LET hora = time
# Impresion del encabezado de la compania y demas letreros
PRINT COLUMN 1, ASCII 27,ASCII 80
PRINT COLUMN 1, "irprrp003",
COLUMN 17, p_companias.nombre,
COLUMN 75, "Pag. ",pageno using "###"
PRINT COLUMN 17, " Sistema de Inventario de Repuestos ",
COLUMN 75, today using "dd/mm/yyyy"
PRINT COLUMN 17, " Movimientos de Repuestos ",
COLUMN 78, hora
SKIP 2 LINES
#--------------------------------------------------------------------------
# Encabezados de detalles
PRINT COLUMN 1, "Desde ",datos_cons.fech_in using "dd/mm/yyyy",
COLUMN 18, "Hasta ",datos_cons.fech_fi using "dd/mm/yyyy"
PRINT doce,comprimido_on
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------------------",
"---------------"
PRINT COLUMN 124, "C a n t i d a d"
PRINT COLUMN 1, "Codigo ",
COLUMN 15, "Descripcion",
COLUMN 45, "Unidad",
COLUMN 52, "Documento",
COLUMN 63, "fecha",
COLUMN 74, "Movimiento",
COLUMN 121, "Entrada",
COLUMN 136, "Salida",
COLUMN 159, "Balance"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------------------",
"---------------"
# Control para la impresion del codigo del repuesto una sola vez
BEFORE GROUP OF x.codigo
SKIP 1 LINE
LET x.balance_in = 0
LET canti = 0
SELECT SUM(a.cantidad_2) INTO x.balance_in FROM irtb00006 a
WHERE a.status_t IS NULL AND a.cod_n = x.cod_n AND
a.cod_grupo = x.cod_grupo AND a.cod_tipo = x.cod_tipo AND
a.cod_sec = x.cod_sec AND a.fecha < datos_cons.fech_in
IF x.balance_in is null THEN
LET x.balance_in = 0
END IF
PRINT COLUMN 1, x.cod_n USING "&","-",
COLUMN 3, x.cod_grupo USING "&","-",
COLUMN 5, x.cod_tipo USING "&&","-",
COLUMN 8, x.cod_sec USING "&&&&",
COLUMN 15, x.descrip_esp,
COLUMN 45, x.unidad_med,
COLUMN 132, "Inicial ---> ",
x.balance_in using "---,---,---.##"
LET canti = x.balance_in
# Impresion de los movimientos con sus respctivas descripcion y
# cantidades afectadas
ON EVERY ROW
# Control para impresion del balance inicial una sola vez
# IF primera = "S" THEN
#----------------------------------------------------------------------------
LET canti = canti + x.cantidad_2
IF x.cantidad_2 > 0 THEN
LET salida = null
LET entrada = x.cantidad_2
ELSE
LET entrada = null
LET salida = x.cantidad_2
END IF
PRINT COLUMN 53, x.num_doc USING "&&&&&&",
COLUMN 63, x.fecha ,
COLUMN 74, x.descrip_mov,
COLUMN 111, entrada USING "---,---,---.##",
COLUMN 127, salida USING "---,---,---.##",
COLUMN 152, canti using "---,---,---.##"
ON LAST ROW
PRINT comprimido_off
END REPORT
+263 -263
View File
@@ -1,263 +1,263 @@
{
-------------------------------------------------------------------------------
PROGRAMA : IRPRRP005
OBJETIVO : REPORTE EXISTENCIAS
PROGRAMADOR : Ing. Juan Fco. Soto.
FECHA REALIZACION : Marzo 1, 1993.
Modificado por : Johnny Soto
Fecha Modificacion : 22 Enero 1995
-------------------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
DEFINE ano_c CHAR(4),
p_mes INTEGER,
nomb1 CHAR(12),
t_existe,t_valor DECIMAL(12,2),
opt5 CHAR(1)
MAIN
DEFER INTERRUPT
CALL arg_val(1) RETURNING usuarios
CALL arg_val(2) RETURNING Clave
CALL arg_val(3) RETURNING impresor
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprrp005()
END MAIN
FUNCTION irprrp005()
DEFINE mes CHAR(2)
DEFINE idx_ant,idx_cos,idx_act SMALLINT
DEFINE salir,primera CHAR(1)
DEFINE balance_in DECIMAL(12,2)
DEFINE existe RECORD
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
codigo LIKE irtb00010.codigo,
nombre LIKE irtb00010.nombre,
existe_act DECIMAL(10,2),
costo LIKE intb00013.costo_st
END RECORD
DEFINE select_cost,select_act,select_ant CHAR(1000)
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM infmrp005 FROM "irfmrp005"
DISPLAY FORM infmrp005
INPUT BY NAME datos_cons.fech_fi
AFTER FIELD fech_fi
IF datos_cons.fech_fi IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_fi
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
EXIT INPUT
END INPUT
CONSTRUCT criterio ON d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_sec
FROM cod_n,cod_grupo,cod_tipo,cod_sec
LET select_cost =
"SELECT d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_sec,d.descrip_esp, ",
" d.unidad_med,a.codigo,a.nombre ",
"FROM irtb00002 d,irtb00010 a ",
"WHERE ",criterio CLIPPED," AND d.status_t is null ",
" AND d.cod_tipo = a.codigo ",
" ORDER BY a.codigo,d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_Sec "
DISPLAY "<< Estoy Buscando Los Costos Actuales >>"
AT 17,14 ATTRIBUTE (REVERSE,BOLD)
CALL seleccionarsalida() RETURNING r_output
LET handler = configureOutput(r_output)
START REPORT reporte_5 TO XML HANDLER handler
PREPARE busca_costo FROM select_cost
DECLARE material_costo SCROLL CURSOR FOR busca_costo
OPEN material_costo
FOREACH material_costo INTO existe.*
LET existe.existe_act = 0
LET existe.costo = 0
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET p_param = "N"
LET ano_c = YEAR(datos_cons.fech_fi)
SELECT MAX(a.mes_fin) INTO p_mes
FROM irtb00013 a
WHERE (a.cod_n = existe.cod_n and a.cod_grupo = existe.cod_grupo and
a.cod_tipo = existe.cod_tipo and a.cod_sec = existe.cod_sec) and
(a.ano = ano_c) and a.status_t is null
SELECT a.costo_st INTO existe.costo FROM irtb00013 a
WHERE (a.cod_n = existe.cod_n and a.cod_grupo = existe.cod_grupo and
a.cod_tipo = existe.cod_tipo and a.cod_sec = existe.cod_sec) and
(a.ano = ano_c and a.mes_fin = p_mes) and a.status_t is null
IF existe.costo IS NULL THEN
LET existe.costo = 0
END IF
SELECT SUM(a.cantidad_2) INTO existe.existe_act
FROM irtb00006 a
WHERE a.cod_n = existe.cod_n and a.cod_grupo = existe.cod_grupo and
a.cod_tipo = existe.cod_tipo and a.cod_sec = existe.cod_sec and
a.fecha <= datos_cons.fech_fi and a.status_t is null
IF existe.existe_act IS NULL THEN
LET existe.existe_act = 0
END IF
OUTPUT TO REPORT reporte_5(existe.*)
END FOREACH
FINISH REPORT reporte_5
END FUNCTION
REPORT reporte_5(x)
DEFINE x RECORD
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
codigo LIKE irtb00010.codigo,
nombre LIKE irtb00010.nombre,
existe_act DECIMAL(10,2),
costo LIKE intb00013.costo_st
END RECORD,
no_reg SMALLINT
DEFINE total_c,total_p DECIMAL (12,2)
DEFINE doble_on CHAR(2)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(2)
DEFINE negrillas_off CHAR(2)
DEFINE comp_on CHAR(3)
DEFINE comp_off CHAR(2)
DEFINE doce CHAR(3)
DEFINE hora CHAR(5)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
PAGE LENGTH 150
FORMAT
PAGE HEADER
LET hora = time
PRINT COLUMN 1, doce
PRINT COLUMN 1, "irprrp005",
COLUMN 24, " M A R M O T E C H S. A.",
COLUMN 89, "Pag. ",pageno using "###"
PRINT COLUMN 1,
COLUMN 24, " Sistema de Inventario de Repuestos",
COLUMN 89, today using "dd/mm/yyyy"
PRINT COLUMN 24, " Valorizacion Inventario Al ",datos_cons.fech_fi
USING "dd/mm/yyyy",
COLUMN 92, hora
SKIP 1 LINES
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"----------------------------------------"
PRINT COLUMN 96, "Costo"
PRINT COLUMN 1, "Codigo",
COLUMN 12, "Descripcion",
COLUMN 82, "Existencia",
COLUMN 96, "Standard",
COLUMN 115, "Total"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"----------------------------------------"
IF t_existe is null THEN
LET t_existe = 0
END IF
IF t_valor is null THEN
LET t_valor = 0
END IF
SKIP 1 LINE
BEFORE GROUP OF x.codigo
SKIP 1 LINE
PRINT negrillas_on, x.nombre,negrillas_off
SKIP 1 LINE
ON EVERY ROW
IF x.existe_act <> 0 THEN
IF no_reg is null THEN
LET no_reg = 0
END IF
PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&&&","-",
x.cod_tipo USING "&&&","-",x.cod_sec USING "&&&&&&",
" ",x.descrip_esp WORDWRAP RIGHT MARGIN 70 , ' ', x.unidad_med CLIPPED,
COLUMN 79, x.existe_act USING "---,---,---.##",
COLUMN 94, x.costo USING "#,###,###.####",
COLUMN 109, x.existe_act * x.costo USING "---,---,---.##"
LET no_reg = no_reg + 1
LET t_existe = t_existe + x.existe_act
END IF
ON LAST ROW
LET t_valor = SUM(x.existe_act * x.costo)
PRINT COLUMN 109, "--------------"
PRINT COLUMN 109, t_valor USING "(((,(((,(##.##)"
PRINT COLUMN 1, "==================================================",
"==================================================",
"========="
PRINT COLUMN 4, "Total Registros Impresos =", no_reg USING "<<<<"
PRINT COLUMN 1, "==================================================",
"==================================================",
"========="
PRINT COLUMN 4, comp_off
END REPORT
{
-------------------------------------------------------------------------------
PROGRAMA : IRPRRP005
OBJETIVO : REPORTE EXISTENCIAS
PROGRAMADOR : Ing. Juan Fco. Soto.
FECHA REALIZACION : Marzo 1, 1993.
Modificado por : Johnny Soto
Fecha Modificacion : 22 Enero 1995
-------------------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
DEFINE ano_c CHAR(4),
p_mes INTEGER,
nomb1 CHAR(12),
t_existe,t_valor DECIMAL(12,2),
opt5 CHAR(1)
MAIN
DEFER INTERRUPT
CALL arg_val(1) RETURNING usuarios
CALL arg_val(2) RETURNING Clave
CALL arg_val(3) RETURNING impresor
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprrp005()
END MAIN
FUNCTION irprrp005()
DEFINE mes CHAR(2)
DEFINE idx_ant,idx_cos,idx_act SMALLINT
DEFINE salir,primera CHAR(1)
DEFINE balance_in DECIMAL(12,2)
DEFINE existe RECORD
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
codigo LIKE irtb00010.codigo,
nombre LIKE irtb00010.nombre,
existe_act DECIMAL(10,2),
costo LIKE intb00013.costo_st
END RECORD
DEFINE select_cost,select_act,select_ant CHAR(1000)
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM infmrp005 FROM "irfmrp005"
DISPLAY FORM infmrp005
INPUT BY NAME datos_cons.fech_fi
AFTER FIELD fech_fi
IF datos_cons.fech_fi IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_fi
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
EXIT INPUT
END INPUT
CONSTRUCT criterio ON d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_sec
FROM cod_n,cod_grupo,cod_tipo,cod_sec
LET select_cost =
"SELECT d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_sec,d.descrip_esp, ",
" d.unidad_med,a.codigo,a.nombre ",
"FROM irtb00002 d,irtb00010 a ",
"WHERE ",criterio CLIPPED," AND d.status_t is null ",
" AND d.cod_tipo = a.codigo ",
" ORDER BY a.codigo,d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_Sec "
DISPLAY "<< Estoy Buscando Los Costos Actuales >>"
AT 17,14 ATTRIBUTE (REVERSE,BOLD)
CALL seleccionarsalida() RETURNING r_output
LET handler = configureOutput(r_output)
START REPORT reporte_5 TO XML HANDLER handler
PREPARE busca_costo FROM select_cost
DECLARE material_costo SCROLL CURSOR FOR busca_costo
OPEN material_costo
FOREACH material_costo INTO existe.*
LET existe.existe_act = 0
LET existe.costo = 0
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET p_param = "N"
LET ano_c = YEAR(datos_cons.fech_fi)
SELECT MAX(a.mes_fin) INTO p_mes
FROM irtb00013 a
WHERE (a.cod_n = existe.cod_n and a.cod_grupo = existe.cod_grupo and
a.cod_tipo = existe.cod_tipo and a.cod_sec = existe.cod_sec) and
(a.ano = ano_c) and a.status_t is null
SELECT a.costo_st INTO existe.costo FROM irtb00013 a
WHERE (a.cod_n = existe.cod_n and a.cod_grupo = existe.cod_grupo and
a.cod_tipo = existe.cod_tipo and a.cod_sec = existe.cod_sec) and
(a.ano = ano_c and a.mes_fin = p_mes) and a.status_t is null
IF existe.costo IS NULL THEN
LET existe.costo = 0
END IF
SELECT SUM(a.cantidad_2) INTO existe.existe_act
FROM irtb00006 a
WHERE a.cod_n = existe.cod_n and a.cod_grupo = existe.cod_grupo and
a.cod_tipo = existe.cod_tipo and a.cod_sec = existe.cod_sec and
a.fecha <= datos_cons.fech_fi and a.status_t is null
IF existe.existe_act IS NULL THEN
LET existe.existe_act = 0
END IF
OUTPUT TO REPORT reporte_5(existe.*)
END FOREACH
FINISH REPORT reporte_5
END FUNCTION
REPORT reporte_5(x)
DEFINE x RECORD
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
codigo LIKE irtb00010.codigo,
nombre LIKE irtb00010.nombre,
existe_act DECIMAL(10,2),
costo LIKE intb00013.costo_st
END RECORD,
no_reg SMALLINT
DEFINE total_c,total_p DECIMAL (12,2)
DEFINE doble_on CHAR(2)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(2)
DEFINE negrillas_off CHAR(2)
DEFINE comp_on CHAR(3)
DEFINE comp_off CHAR(2)
DEFINE doce CHAR(3)
DEFINE hora CHAR(5)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
PAGE LENGTH 150
FORMAT
PAGE HEADER
LET hora = time
PRINT COLUMN 1, doce
PRINT COLUMN 1, "irprrp005",
COLUMN 24, " M A R M O T E C H S. A.",
COLUMN 89, "Pag. ",pageno using "###"
PRINT COLUMN 1,
COLUMN 24, " Sistema de Inventario de Repuestos",
COLUMN 89, today using "dd/mm/yyyy"
PRINT COLUMN 24, " Valorizacion Inventario Al ",datos_cons.fech_fi
USING "dd/mm/yyyy",
COLUMN 92, hora
SKIP 1 LINES
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"----------------------------------------"
PRINT COLUMN 96, "Costo"
PRINT COLUMN 1, "Codigo",
COLUMN 12, "Descripcion",
COLUMN 82, "Existencia",
COLUMN 96, "Standard",
COLUMN 115, "Total"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------",
"----------------------------------------"
IF t_existe is null THEN
LET t_existe = 0
END IF
IF t_valor is null THEN
LET t_valor = 0
END IF
SKIP 1 LINE
BEFORE GROUP OF x.codigo
SKIP 1 LINE
PRINT negrillas_on, x.nombre,negrillas_off
SKIP 1 LINE
ON EVERY ROW
IF x.existe_act <> 0 THEN
IF no_reg is null THEN
LET no_reg = 0
END IF
PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&&&","-",
x.cod_tipo USING "&&&","-",x.cod_sec USING "&&&&&&",
" ",x.descrip_esp WORDWRAP RIGHT MARGIN 70 , ' ', x.unidad_med CLIPPED,
COLUMN 79, x.existe_act USING "---,---,---.##",
COLUMN 94, x.costo USING "#,###,###.####",
COLUMN 109, x.existe_act * x.costo USING "---,---,---.##"
LET no_reg = no_reg + 1
LET t_existe = t_existe + x.existe_act
END IF
ON LAST ROW
LET t_valor = SUM(x.existe_act * x.costo)
PRINT COLUMN 109, "--------------"
PRINT COLUMN 109, t_valor USING "(((,(((,(##.##)"
PRINT COLUMN 1, "==================================================",
"==================================================",
"========="
PRINT COLUMN 4, "Total Registros Impresos =", no_reg USING "<<<<"
PRINT COLUMN 1, "==================================================",
"==================================================",
"========="
PRINT COLUMN 4, comp_off
END REPORT
+204 -204
View File
@@ -1,204 +1,204 @@
{
-------------------------------------------------------------------------------
PROGRAMA : IRPRRP006
OBJETIVO : CATALOGO DE REPUESTOS CON EXISTENCIAS
PROGRAMADOR : Ing. Juan Fco. Soto.
FECHA REALIZACION : Mayo 18, 1993.
-------------------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
DEFINE existencia VARCHAR(2)
MAIN
DEFER INTERRUPT
CALL arg_val(1) RETURNING usuarios
CALL arg_val(2) RETURNING clave
CALL arg_val(3) RETURNING impresor
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprrp006()
END MAIN
FUNCTION irprrp006()
DEFINE idx SMALLINT
DEFINE materia RECORD
cod_n LIKE intb00002.cod_n,
cod_grupo LIKE intb00002.cod_grupo,
cod_tipo LIKE intb00002.cod_tipo,
cod_sec LIKE intb00002.cod_sec,
descrip_esp LIKE irtb00002.descrip_esp,
descrip_ing LIKE irtb00002.descrip_ing,
unidad_med LIKE irtb00002.unidad_med,
exist_min FLOAT,
existencia LIKE irtb00002.existencia
END RECORD,
cod smallint
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM irfmrp006 FROM "irfmrp006"
DISPLAY FORM irfmrp006
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
INPUT BY NAME decide,existencia
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
CONSTRUCT criterio ON b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec
FROM cod_n,cod_grupo,cod_tipo,cod_sec
IF decide = "A" THEN
LET SELEC =
"SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.descrip_esp, ",
" b.descrip_ing,b.unidad_med,b.exist_min,ISNULL(sum(c.cantidad_2),0) ",
"FROM irtb00002 b,irtb00006 c ",
"WHERE ",criterio CLIPPED,
" AND (b.cod_n = c.cod_n AND b.cod_Grupo = c.cod_Grupo AND b.cod_tipo = c.cod_tipo AND b.cod_sec = c.cod_sec) ",
" AND c.status_t IS NULL " ,
" AND b.status_t IS NULL ",
"GROUP BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.exist_min,b.descrip_esp,b.descrip_ing,b.unidad_med ",
"ORDER BY b.descrip_esp"
ELSE
LET SELEC =
"SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.descrip_esp, ",
" b.descrip_ing,b.unidad_med,b.exist_min,ISNULL(sum(c.cantidad_2),0) ",
"FROM irtb00002 b,irtb00006 c ",
"WHERE ",criterio CLIPPED,
" AND (b.cod_n = c.cod_n AND b.cod_Grupo = c.cod_Grupo AND b.cod_tipo = c.cod_tipo AND b.cod_sec = c.cod_sec) ",
" AND c.status_t IS NULL " ,
" AND b.status_t IS NULL ",
"GROUP BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.exist_min,b.descrip_esp,b.descrip_ing,b.unidad_med ",
"ORDER BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec "
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
PREPARE busca FROM selec
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DECLARE accion SCROLL CURSOR FOR busca
OPEN accion
LET idx = 1
LET p_param = "S"
WHILE status != notfound
FETCH ABSOLUTE idx accion INTO materia.*
IF status = NOTFOUND THEN
EXIT WHILE
END IF
IF idx = 1 THEN
LET r_filename = 'irprrp006.4rp'
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview=1
CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
CALL fgl_report_configurexlsxdevice(null,null,null,false,false,null,1)
LET handler = fgl_report_commitCurrentSettings() -- commit changes
END IF
START REPORT p_cero TO XML HANDLER handler
END IF
LET idx = idx + 1
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
LET p_param = "N"
IF existencia = 'SI' THEN
IF materia.existencia =0 OR materia.existencia IS NULL THEN
CONTINUE WHILE
END IF
END IF
OUTPUT TO REPORT p_cero(materia.*)
END WHILE
IF idx > 1 THEN
FINISH REPORT p_cero
ELSE
CALL fgl_winmessage("INFO","NO EXISTEN INFORMACIONES CON ESTOS PARAMETROS","INFO")
END IF
END FUNCTION
REPORT p_cero(x)
DEFINE x RECORD
cod_n LIKE intb00002.cod_n,
cod_grupo LIKE intb00002.cod_grupo,
cod_tipo LIKE intb00002.cod_tipo,
cod_sec LIKE intb00002.cod_sec,
descrip_esp LIKE irtb00002.descrip_esp,
descrip_ing LIKE irtb00002.descrip_ing,
unidad_med LIKE irtb00002.unidad_med,
exist_min FLOAT,
existencia LIKE irtb00002.existencia
END RECORD
DEFINE dia_l,l smallint
DEFINE varia CHAR(20)
DEFINE descripcion CHAR(60)
DEFINE primera CHAR(1)
DEFINE hora CHAR(5),
codigo VARCHAR(25),
cantidad_registros INT
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
FORMAT
PAGE HEADER
LET hora = TIME
IF decide = "N" THEN
LET varia = "N u m e r i c o"
ELSE
LET varia = "A l f a b e t i c o"
END IF
PRINTX hora,p_companias.nombre,varia
ON EVERY ROW
LET codigo = x.cod_n USING "&","-",x.cod_grupo USING "&&","-",x.cod_tipo USING "&&&","-",
x.cod_sec USING "&&&&"
PRINTX x.*,p_companias.nombre,codigo
ON LAST ROW
LET cantidad_registros= count(*)
PRINTX cantidad_registros
END REPORT
{
-------------------------------------------------------------------------------
PROGRAMA : IRPRRP006
OBJETIVO : CATALOGO DE REPUESTOS CON EXISTENCIAS
PROGRAMADOR : Ing. Juan Fco. Soto.
FECHA REALIZACION : Mayo 18, 1993.
-------------------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
DEFINE existencia VARCHAR(2)
MAIN
DEFER INTERRUPT
CALL arg_val(1) RETURNING usuarios
CALL arg_val(2) RETURNING clave
CALL arg_val(3) RETURNING impresor
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprrp006()
END MAIN
FUNCTION irprrp006()
DEFINE idx SMALLINT
DEFINE materia RECORD
cod_n LIKE intb00002.cod_n,
cod_grupo LIKE intb00002.cod_grupo,
cod_tipo LIKE intb00002.cod_tipo,
cod_sec LIKE intb00002.cod_sec,
descrip_esp LIKE irtb00002.descrip_esp,
descrip_ing LIKE irtb00002.descrip_ing,
unidad_med LIKE irtb00002.unidad_med,
exist_min FLOAT,
existencia LIKE irtb00002.existencia
END RECORD,
cod smallint
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM irfmrp006 FROM "irfmrp006"
DISPLAY FORM irfmrp006
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
INPUT BY NAME decide,existencia
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
CONSTRUCT criterio ON b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec
FROM cod_n,cod_grupo,cod_tipo,cod_sec
IF decide = "A" THEN
LET SELEC =
"SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.descrip_esp, ",
" b.descrip_ing,b.unidad_med,b.exist_min,ISNULL(sum(c.cantidad_2),0) ",
"FROM irtb00002 b,irtb00006 c ",
"WHERE ",criterio CLIPPED,
" AND (b.cod_n = c.cod_n AND b.cod_Grupo = c.cod_Grupo AND b.cod_tipo = c.cod_tipo AND b.cod_sec = c.cod_sec) ",
" AND c.status_t IS NULL " ,
" AND b.status_t IS NULL ",
"GROUP BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.exist_min,b.descrip_esp,b.descrip_ing,b.unidad_med ",
"ORDER BY b.descrip_esp"
ELSE
LET SELEC =
"SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.descrip_esp, ",
" b.descrip_ing,b.unidad_med,b.exist_min,ISNULL(sum(c.cantidad_2),0) ",
"FROM irtb00002 b,irtb00006 c ",
"WHERE ",criterio CLIPPED,
" AND (b.cod_n = c.cod_n AND b.cod_Grupo = c.cod_Grupo AND b.cod_tipo = c.cod_tipo AND b.cod_sec = c.cod_sec) ",
" AND c.status_t IS NULL " ,
" AND b.status_t IS NULL ",
"GROUP BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.exist_min,b.descrip_esp,b.descrip_ing,b.unidad_med ",
"ORDER BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec "
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
PREPARE busca FROM selec
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DECLARE accion SCROLL CURSOR FOR busca
OPEN accion
LET idx = 1
LET p_param = "S"
WHILE status != notfound
FETCH ABSOLUTE idx accion INTO materia.*
IF status = NOTFOUND THEN
EXIT WHILE
END IF
IF idx = 1 THEN
LET r_filename = 'irprrp006.4rp'
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview=1
CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
CALL fgl_report_configurexlsxdevice(null,null,null,false,false,null,1)
LET handler = fgl_report_commitCurrentSettings() -- commit changes
END IF
START REPORT p_cero TO XML HANDLER handler
END IF
LET idx = idx + 1
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
LET p_param = "N"
IF existencia = 'SI' THEN
IF materia.existencia =0 OR materia.existencia IS NULL THEN
CONTINUE WHILE
END IF
END IF
OUTPUT TO REPORT p_cero(materia.*)
END WHILE
IF idx > 1 THEN
FINISH REPORT p_cero
ELSE
CALL fgl_winmessage("INFO","NO EXISTEN INFORMACIONES CON ESTOS PARAMETROS","INFO")
END IF
END FUNCTION
REPORT p_cero(x)
DEFINE x RECORD
cod_n LIKE intb00002.cod_n,
cod_grupo LIKE intb00002.cod_grupo,
cod_tipo LIKE intb00002.cod_tipo,
cod_sec LIKE intb00002.cod_sec,
descrip_esp LIKE irtb00002.descrip_esp,
descrip_ing LIKE irtb00002.descrip_ing,
unidad_med LIKE irtb00002.unidad_med,
exist_min FLOAT,
existencia LIKE irtb00002.existencia
END RECORD
DEFINE dia_l,l smallint
DEFINE varia CHAR(20)
DEFINE descripcion CHAR(60)
DEFINE primera CHAR(1)
DEFINE hora CHAR(5),
codigo VARCHAR(25),
cantidad_registros INT
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
FORMAT
PAGE HEADER
LET hora = TIME
IF decide = "N" THEN
LET varia = "N u m e r i c o"
ELSE
LET varia = "A l f a b e t i c o"
END IF
PRINTX hora,p_companias.nombre,varia
ON EVERY ROW
LET codigo = x.cod_n USING "&","-",x.cod_grupo USING "&&","-",x.cod_tipo USING "&&&","-",
x.cod_sec USING "&&&&"
PRINTX x.*,p_companias.nombre,codigo
ON LAST ROW
LET cantidad_registros= count(*)
PRINTX cantidad_registros
END REPORT
+297 -297
View File
@@ -1,298 +1,298 @@
{------------------------------------------------------------------------------
PROGRAMA : IRPRRP009
OBJETIVO : Operacion por Tipo de Movimiento Repuestos
PROGRAMADOR : VALENTIN RODRIGUEZ
FECHA REALIZACION : MARZO, 13 2020
---------------------------------------------------------------------------------}
GLOBALS "irprgb000.4gl"
DEFINE p_fecha DATE
DEFINE afecta CHAR(1)
DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
r_filename STRING, -- filename of Report Design Document including .4rp extension
r_output STRING, -- output format option
preview INTEGER, -- TRUE/FALSE, to set preview option
criterio STRING
MAIN
DEFER INTERRUPT
CALL arg_val(1) RETURNING usuarios
CALL arg_val(2) RETURNING clave
CALL arg_val(3) RETURNING impresor
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprrp009()
END MAIN
FUNCTION irprrp009()
DEFINE select_ac CHAR(1000)
DEFINE c_ano CHAR(4)
DEFINE entra,nombre_mes CHAR(14)
DEFINE entra1 CHAR(5)
DEFINE detalle CHAR(100)
DEFINE numero_ent CHAR(2)
DEFINE p_ano, ano_act CHAR(4)
DEFINE tiempo CHAR(4)
DEFINE idz INT
DEFINE acumulado RECORD
cod_n LIKE irtb00002.cod_n,
cod_grupo LIKE irtb00002.cod_grupo,
cod_tipo LIKE irtb00002.cod_tipo,
cod_sec LIKE irtb00002.cod_sec,
descrip_esp LIKE irtb00002.descrip_esp,
unidad_med LIKE irtb00002.unidad_med,
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE intb00005.descrip_mov,
departamento SMALLINT,
nombre CHAR(30),
consumo decimal(12,2),
cuenta CHAR(10),
cuenta_inv CHAR(10),
gasto_ind LIKE irtb00013.costo_st,
consumo_cuenta DECIMAL(12,2),
nombre_cuenta VARCHAR(50)
END RECORD
DEFINE acumulado_arr DYNAMIC ARRAY OF RECORD
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE intb00005.descrip_mov,
departamento SMALLINT,
nombre CHAR(30),
consumo decimal(12,2),
cuenta CHAR(10),
gasto_ind LIKE irtb00013.costo_st,
descripcion CHAR(50),
consumo_cuenta DECIMAL(12,2),
cuenta_inv CHAR(10)
END RECORD
OPEN FORM edfmrp118 FROM "irfmrp009"
DISPLAY FORM edfmrp118
-- columnas calificadas con b. (irtb00006): sin prefijo, cod_n/cod_grupo/cod_tipo/cod_sec
-- son ambiguas en el JOIN con irtb00002 y cualquier filtro por codigo fallaba
CONSTRUCT criterio ON b.cod_mov,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec
FROM cod_mov,cod_n,cod_grupo,cod_tipo,cod_sec
BEFORE CONSTRUCT
CALL ircmovimientos()
AFTER CONSTRUCT
IF int_flag THEN
CALL msg(2)
LET int_flag = FALSE
RETURN
END IF
EXIT CONSTRUCT
END CONSTRUCT
INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi
BEFORE FIELD fech_in
SELECT MAX(a.fecha) INTO p_fecha FROM cgtb00004 a
WHERE a.ref[1,9] = entra1
LET datos_cons.fech_in = p_fecha + 1
DISPLAY BY NAME datos_cons.fech_in
AFTER FIELD fech_in
IF datos_cons.fech_in IS NULL THEN
ERROR "(16) CAMPO EN BLANCO"
NEXT FIELD fech_in
END IF
LET p_ano = YEAR(datos_cons.fech_in)
AFTER FIELD fech_fi
IF datos_cons.fech_fi IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_final
END IF
LET ano_act = year(datos_cons.fech_fi)
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
LET select_ac =
"SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,a.descrip_esp, ",
"a.unidad_med,b.cod_mov,c.descrip_mov,b.sec_a,d.nom_dpto,SUM(b.cantidad_2), a.cuenta,e.cuenta_no ",
"FROM irtb00002 AS a INNER 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 ",
criterio CLIPPED," and ",
"a.cod_sec = b.cod_sec and b.status_t IS NULL INNER JOIN ",
" iptb00022 e ON e.cod_cia = a.cod_n INNER JOIN ",
"irtb00005 AS c ON b.cod_mov = c.cod_mov LEFT OUTER JOIN ",
"adtb00001 AS d ON b.sec_a = d.departamento ",
"WHERE ",
" b.fecha BETWEEN ? AND ? AND b.status_t IS NULL ",
" GROUP BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,a.descrip_esp,a.unidad_med,b.cod_mov,c.descrip_mov,b.sec_a,d.nom_dpto, a.cuenta,e.cuenta_no ",
" ORDER BY b.cod_mov,b.sec_a,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec"
DISPLAY "<< Estoy Buscando Acumulado Del Periodo Dado >>"
AT 17,14 ATTRIBUTE (REVERSE,BOLD)
PREPARE busca_ant FROM select_ac
DECLARE actual SCROLL CURSOR FOR busca_ant
OPEN actual USING datos_cons.fech_in,datos_cons.fech_fi
LET r_filename ="irprrp009.4rp"
LET idx = 1
LET idz = 1
FOREACH actual INTO acumulado.*
IF idx = 1 THEN
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview=1
CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
END IF
LET idx = 2
START REPORT opera TO XML HANDLER HANDLER
END IF
LET c_ano = YEAR(datos_cons.fech_fi)
LET acumulado.gasto_ind = 0
SELECT a.costo_st INTO acumulado.gasto_ind FROM irtb00013 a
WHERE (a.cod_n = acumulado.cod_n and a.cod_grupo = acumulado.cod_grupo and
a.cod_tipo = acumulado.cod_tipo and a.cod_sec=acumulado.cod_sec) and
a.ano = c_ano and
a.status_t is NULL
IF acumulado.gasto_ind IS NULL THEN
LET acumulado.gasto_ind = 0
END IF
SELECT ISNULL(descripcion,'NO EXISTE CUENTA')
INTO acumulado_arr[idz].descripcion
FROM cgtb00001
WHERE cgtb00001.cuenta_no = acumulado.cuenta
IF acumulado.consumo is null THEN
LET acumulado.consumo = 0
END IF
IF acumulado.nombre IS NULL THEN
LET acumulado.nombre = 'NO ESPECIFICADO'
END IF
LET acumulado.nombre_cuenta = acumulado_arr[idz].descripcion
LET acumulado.consumo_cuenta = acumulado.consumo * acumulado.gasto_ind
LET acumulado_arr[idz].cod_mov = acumulado.cod_mov
LET acumulado_arr[idz].descrip_mov = acumulado.descrip_mov
LET acumulado_arr[idz].departamento = acumulado.departamento
LET acumulado_arr[idz].nombre = acumulado.nombre
LET acumulado_arr[idz].consumo = acumulado.consumo
LET acumulado_arr[idz].cuenta = acumulado.cuenta
LET acumulado_arr[idz].gasto_ind = acumulado.gasto_ind
LET acumulado_arr[idz].consumo_cuenta = acumulado.consumo_cuenta
LET acumulado_arr[idz].cuenta_inv = acumulado.cuenta_inv
LET idz = idz + 1
OUTPUT TO REPORT opera(acumulado.*)
END FOREACH
IF idx > 1 THEN
FINISH REPORT opera
ELSE
CALL fgl_winmessage("INFO", "NO HAY REGISTROS EN ESTE RANGO DE FECHA Y CON LOS PARAMETROS INDICADOS", "INFO")
END IF
END INPUT
END FUNCTION
REPORT opera(x)
DEFINE x RECORD
cod_n LIKE irtb00002.cod_n,
cod_grupo LIKE irtb00002.cod_grupo,
cod_tipo LIKE irtb00002.cod_tipo,
cod_sec LIKE irtb00002.cod_sec,
descrip_esp LIKE irtb00002.descrip_esp,
unidad_med LIKE irtb00002.unidad_med,
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE intb00005.descrip_mov,
departamento SMALLINT,
nombre CHAR(30),
consumo decimal(12,2),
cuenta CHAR(10),
cuenta_inv CHAR(10),
gasto_ind LIKE irtb00013.costo_st,
consumo_cuenta DECIMAL(12,2),
nombre_cuenta VARCHAR(50)
END RECORD
DEFINE rango_fecha CHAR(30)
DEFINE movimiento CHAR(50)
DEFINE codigo_producto CHAR(100)
DEFINE hora CHAR(5),
actual VARCHAR(20)
DEFINE total_material, total_movimiento,total_cuenta, total_departamento,
total_general DECIMAL (12,2)
FORMAT
PAGE HEADER
LET hora = TIME
LET actual = today using "dd/mm/yy"
LET rango_fecha = datos_cons.fech_in ,"--",datos_cons.fech_fi
BEFORE GROUP OF x.cod_mov
LET movimiento = x.cod_mov,"--",x.descrip_mov
LET total_movimiento = 0
PRINTX movimiento
BEFORE GROUP OF x.departamento
LET total_departamento = 0
PRINTX x.nombre,x.departamento
BEFORE GROUP OF x.cuenta
LET total_cuenta = 0
PRINTX x.cuenta,x.nombre_cuenta
ON EVERY ROW
LET codigo_producto = '(',x.cod_n,'-',x.cod_grupo,'-',x.cod_tipo,'-',x.cod_sec,')',x.descrip_esp
LET total_movimiento = total_movimiento + x.consumo_cuenta
LET total_departamento = total_departamento + x.consumo_cuenta
LET total_cuenta = total_cuenta + x.consumo_cuenta
LET total_general = total_general + x.consumo_cuenta
PRINTX codigo_producto,x.unidad_med,x.consumo,x.gasto_ind,
rango_fecha,p_companias.nombre, x.consumo_cuenta,
hora,actual,x.cuenta
AFTER GROUP OF x.departamento
PRINTX x.nombre,total_departamento
AFTER GROUP OF x.cod_mov
PRINTX total_movimiento
AFTER GROUP OF x.cuenta
PRINTX total_cuenta
ON LAST ROW
LET total_general = SUM(x.consumo_cuenta)
PRINTX total_general
LET total_material = 0
{------------------------------------------------------------------------------
PROGRAMA : IRPRRP009
OBJETIVO : Operacion por Tipo de Movimiento Repuestos
PROGRAMADOR : VALENTIN RODRIGUEZ
FECHA REALIZACION : MARZO, 13 2020
---------------------------------------------------------------------------------}
GLOBALS "irprgb000.4gl"
DEFINE p_fecha DATE
DEFINE afecta CHAR(1)
DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
r_filename STRING, -- filename of Report Design Document including .4rp extension
r_output STRING, -- output format option
preview INTEGER, -- TRUE/FALSE, to set preview option
criterio STRING
MAIN
DEFER INTERRUPT
CALL arg_val(1) RETURNING usuarios
CALL arg_val(2) RETURNING clave
CALL arg_val(3) RETURNING impresor
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprrp009()
END MAIN
FUNCTION irprrp009()
DEFINE select_ac CHAR(1000)
DEFINE c_ano CHAR(4)
DEFINE entra,nombre_mes CHAR(14)
DEFINE entra1 CHAR(5)
DEFINE detalle CHAR(100)
DEFINE numero_ent CHAR(2)
DEFINE p_ano, ano_act CHAR(4)
DEFINE tiempo CHAR(4)
DEFINE idz INT
DEFINE acumulado RECORD
cod_n LIKE irtb00002.cod_n,
cod_grupo LIKE irtb00002.cod_grupo,
cod_tipo LIKE irtb00002.cod_tipo,
cod_sec LIKE irtb00002.cod_sec,
descrip_esp LIKE irtb00002.descrip_esp,
unidad_med LIKE irtb00002.unidad_med,
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE intb00005.descrip_mov,
departamento SMALLINT,
nombre CHAR(30),
consumo decimal(12,2),
cuenta CHAR(10),
cuenta_inv CHAR(10),
gasto_ind LIKE irtb00013.costo_st,
consumo_cuenta DECIMAL(12,2),
nombre_cuenta VARCHAR(50)
END RECORD
DEFINE acumulado_arr DYNAMIC ARRAY OF RECORD
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE intb00005.descrip_mov,
departamento SMALLINT,
nombre CHAR(30),
consumo decimal(12,2),
cuenta CHAR(10),
gasto_ind LIKE irtb00013.costo_st,
descripcion CHAR(50),
consumo_cuenta DECIMAL(12,2),
cuenta_inv CHAR(10)
END RECORD
OPEN FORM edfmrp118 FROM "irfmrp009"
DISPLAY FORM edfmrp118
-- columnas calificadas con b. (irtb00006): sin prefijo, cod_n/cod_grupo/cod_tipo/cod_sec
-- son ambiguas en el JOIN con irtb00002 y cualquier filtro por codigo fallaba
CONSTRUCT criterio ON b.cod_mov,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec
FROM cod_mov,cod_n,cod_grupo,cod_tipo,cod_sec
BEFORE CONSTRUCT
CALL ircmovimientos()
AFTER CONSTRUCT
IF int_flag THEN
CALL msg(2)
LET int_flag = FALSE
RETURN
END IF
EXIT CONSTRUCT
END CONSTRUCT
INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi
BEFORE FIELD fech_in
SELECT MAX(a.fecha) INTO p_fecha FROM cgtb00004 a
WHERE a.ref[1,9] = entra1
LET datos_cons.fech_in = p_fecha + 1
DISPLAY BY NAME datos_cons.fech_in
AFTER FIELD fech_in
IF datos_cons.fech_in IS NULL THEN
ERROR "(16) CAMPO EN BLANCO"
NEXT FIELD fech_in
END IF
LET p_ano = YEAR(datos_cons.fech_in)
AFTER FIELD fech_fi
IF datos_cons.fech_fi IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_final
END IF
LET ano_act = year(datos_cons.fech_fi)
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
LET select_ac =
"SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,a.descrip_esp, ",
"a.unidad_med,b.cod_mov,c.descrip_mov,b.sec_a,d.nom_dpto,SUM(b.cantidad_2), a.cuenta,e.cuenta_no ",
"FROM irtb00002 AS a INNER 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 ",
criterio CLIPPED," and ",
"a.cod_sec = b.cod_sec and b.status_t IS NULL INNER JOIN ",
" iptb00022 e ON e.cod_cia = a.cod_n INNER JOIN ",
"irtb00005 AS c ON b.cod_mov = c.cod_mov LEFT OUTER JOIN ",
"adtb00001 AS d ON b.sec_a = d.departamento ",
"WHERE ",
" b.fecha BETWEEN ? AND ? AND b.status_t IS NULL ",
" GROUP BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,a.descrip_esp,a.unidad_med,b.cod_mov,c.descrip_mov,b.sec_a,d.nom_dpto, a.cuenta,e.cuenta_no ",
" ORDER BY b.cod_mov,b.sec_a,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec"
DISPLAY "<< Estoy Buscando Acumulado Del Periodo Dado >>"
AT 17,14 ATTRIBUTE (REVERSE,BOLD)
PREPARE busca_ant FROM select_ac
DECLARE actual SCROLL CURSOR FOR busca_ant
OPEN actual USING datos_cons.fech_in,datos_cons.fech_fi
LET r_filename ="irprrp009.4rp"
LET idx = 1
LET idz = 1
FOREACH actual INTO acumulado.*
IF idx = 1 THEN
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview=1
CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
END IF
LET idx = 2
START REPORT opera TO XML HANDLER HANDLER
END IF
LET c_ano = YEAR(datos_cons.fech_fi)
LET acumulado.gasto_ind = 0
SELECT a.costo_st INTO acumulado.gasto_ind FROM irtb00013 a
WHERE (a.cod_n = acumulado.cod_n and a.cod_grupo = acumulado.cod_grupo and
a.cod_tipo = acumulado.cod_tipo and a.cod_sec=acumulado.cod_sec) and
a.ano = c_ano and
a.status_t is NULL
IF acumulado.gasto_ind IS NULL THEN
LET acumulado.gasto_ind = 0
END IF
SELECT ISNULL(descripcion,'NO EXISTE CUENTA')
INTO acumulado_arr[idz].descripcion
FROM cgtb00001
WHERE cgtb00001.cuenta_no = acumulado.cuenta
IF acumulado.consumo is null THEN
LET acumulado.consumo = 0
END IF
IF acumulado.nombre IS NULL THEN
LET acumulado.nombre = 'NO ESPECIFICADO'
END IF
LET acumulado.nombre_cuenta = acumulado_arr[idz].descripcion
LET acumulado.consumo_cuenta = acumulado.consumo * acumulado.gasto_ind
LET acumulado_arr[idz].cod_mov = acumulado.cod_mov
LET acumulado_arr[idz].descrip_mov = acumulado.descrip_mov
LET acumulado_arr[idz].departamento = acumulado.departamento
LET acumulado_arr[idz].nombre = acumulado.nombre
LET acumulado_arr[idz].consumo = acumulado.consumo
LET acumulado_arr[idz].cuenta = acumulado.cuenta
LET acumulado_arr[idz].gasto_ind = acumulado.gasto_ind
LET acumulado_arr[idz].consumo_cuenta = acumulado.consumo_cuenta
LET acumulado_arr[idz].cuenta_inv = acumulado.cuenta_inv
LET idz = idz + 1
OUTPUT TO REPORT opera(acumulado.*)
END FOREACH
IF idx > 1 THEN
FINISH REPORT opera
ELSE
CALL fgl_winmessage("INFO", "NO HAY REGISTROS EN ESTE RANGO DE FECHA Y CON LOS PARAMETROS INDICADOS", "INFO")
END IF
END INPUT
END FUNCTION
REPORT opera(x)
DEFINE x RECORD
cod_n LIKE irtb00002.cod_n,
cod_grupo LIKE irtb00002.cod_grupo,
cod_tipo LIKE irtb00002.cod_tipo,
cod_sec LIKE irtb00002.cod_sec,
descrip_esp LIKE irtb00002.descrip_esp,
unidad_med LIKE irtb00002.unidad_med,
cod_mov LIKE irtb00006.cod_mov,
descrip_mov LIKE intb00005.descrip_mov,
departamento SMALLINT,
nombre CHAR(30),
consumo decimal(12,2),
cuenta CHAR(10),
cuenta_inv CHAR(10),
gasto_ind LIKE irtb00013.costo_st,
consumo_cuenta DECIMAL(12,2),
nombre_cuenta VARCHAR(50)
END RECORD
DEFINE rango_fecha CHAR(30)
DEFINE movimiento CHAR(50)
DEFINE codigo_producto CHAR(100)
DEFINE hora CHAR(5),
actual VARCHAR(20)
DEFINE total_material, total_movimiento,total_cuenta, total_departamento,
total_general DECIMAL (12,2)
FORMAT
PAGE HEADER
LET hora = TIME
LET actual = today using "dd/mm/yy"
LET rango_fecha = datos_cons.fech_in ,"--",datos_cons.fech_fi
BEFORE GROUP OF x.cod_mov
LET movimiento = x.cod_mov,"--",x.descrip_mov
LET total_movimiento = 0
PRINTX movimiento
BEFORE GROUP OF x.departamento
LET total_departamento = 0
PRINTX x.nombre,x.departamento
BEFORE GROUP OF x.cuenta
LET total_cuenta = 0
PRINTX x.cuenta,x.nombre_cuenta
ON EVERY ROW
LET codigo_producto = '(',x.cod_n,'-',x.cod_grupo,'-',x.cod_tipo,'-',x.cod_sec,')',x.descrip_esp
LET total_movimiento = total_movimiento + x.consumo_cuenta
LET total_departamento = total_departamento + x.consumo_cuenta
LET total_cuenta = total_cuenta + x.consumo_cuenta
LET total_general = total_general + x.consumo_cuenta
PRINTX codigo_producto,x.unidad_med,x.consumo,x.gasto_ind,
rango_fecha,p_companias.nombre, x.consumo_cuenta,
hora,actual,x.cuenta
AFTER GROUP OF x.departamento
PRINTX x.nombre,total_departamento
AFTER GROUP OF x.cod_mov
PRINTX total_movimiento
AFTER GROUP OF x.cuenta
PRINTX total_cuenta
ON LAST ROW
LET total_general = SUM(x.consumo_cuenta)
PRINTX total_general
LET total_material = 0
END REPORT
+354 -354
View File
@@ -1,354 +1,354 @@
{
-------------------------------------------------------------------------------
PROGRAMA : IRPRRP043
OBJETIVO : Rreporte de Consumo Por Maquina
PROGRAMADOR : Juan Soto
FECHA REALIZACION : Agosto 20, 2020
MODIFICACION : Incluir costo estandar del repuesto y valor consumo por departamento.
-------------------------------------------------------------------------------
}
IMPORT os
GLOBALS "irprgb000.4gl"
DEFINE fecha1,fecha2 DATE,
departamento INT
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprrp008()
END MAIN
FUNCTION irprrp008()
##### Definicion de la variables a imprimir
DEFINE cons_maq RECORD
tipoinventario VARCHAR(40),
maquina LIKE irtb00006.maquina,
nombre LIKE irtb00009.nombre,
cod_n LIKE irtb00006.cod_n,
cod_grupo LIKE irtb00006.cod_grupo,
cod_tipo LIKE irtb00006.cod_tipo,
cod_sec LIKE irtb00006.cod_sec,
descrip_esp CHAR(30),
unidad_med CHAR(4),
fecha DATE,
num_doc INT,
descripcion_mov VARCHAR(100),
cantidad_2 LIKE irtb00006.cantidad_2,
codigo CHAR(25),
costo_st LIKE irtb00013.costo_st,
valor DECIMAL(12,2)
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM irfmrp008 FROM "irfmrp043"
DISPLAY FORM irfmrp008
DISPLAY "irprrp008" AT 4,3
DISPLAY "Consumo de Repuesto Por Maquina" AT 6,25
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
DISPLAY " "
at 19,14
####### Creando criterio de busqueda
INPUT BY NAME fecha1,fecha2,departamento
BEFORE INPUT
CALL busca_departamento()
AFTER FIELD fecha1
IF fecha1 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
AFTER FIELD fecha2
IF fecha2 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha2
END IF
IF fecha1 > fecha2 THEN
LET numero_msg = 168
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
FROM cod_n,cod_grupo,cod_tipo,cod_sec
AFTER CONSTRUCT
##### Creando la facilidad para cancelar opreacion mediante DELETE
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
EXIT CONSTRUCT
END CONSTRUCT
##### Selecionando la informacion requerida para la salida de
##### informacion
IF departamento IS NULL THEN
LET selec =
"SELECT 'REPUESTOS',a.sec_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.unidad_med,a.fecha,a.num_doc,cast(d.cod_mov as char(5))+'-'+d.descrip_mov, a.cantidad_2*-1 ",
"FROM irtb00006 a,adtb00001 b,irtb00002 c,irtb00005 d ",
"WHERE 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 ",
" a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ",
" a.sec_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ",
criterio CLIPPED ,
" UNION ",
"SELECT 'MAT PRIMA', a.depto_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.unidad_med,a.fecha,a.num_doc,cast(d.cod_mov as char(5))+'-'+d.descrip_mov, a.cantidad_2*-1 ",
"FROM intb00006 a,adtb00001 b,intb00001 c,intb00005 d ",
"WHERE 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 ",
" a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ",
" a.depto_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ",
criterio CLIPPED,
" ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec"
ELSE
LET selec =
"SELECT 'REPUESTOS',a.sec_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.unidad_med,a.fecha,a.num_doc,cast(d.cod_mov as char(5))+'-'+d.descrip_mov, a.cantidad_2*-1 ",
"FROM irtb00006 a,adtb00001 b,irtb00002 c,irtb00005 d ",
"WHERE 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 ",
" a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ",
" a.sec_a = ", departamento, " and ",
" a.sec_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ",
criterio CLIPPED ,
" UNION ",
"SELECT 'MAT PRIMA', a.depto_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.unidad_med,a.fecha,a.num_doc,cast(d.cod_mov as char(5))+'-'+d.descrip_mov, a.cantidad_2*-1 ",
"FROM intb00006 a,adtb00001 b,intb00001 c,intb00005 d ",
"WHERE 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 ",
" a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ",
" a.depto_a = ", departamento, " and ",
" a.depto_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ",
criterio CLIPPED,
" ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec"
END IF
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>"
AT 17,14 ATTRIBUTE (REVERSE,BOLD)
LET selec1 =
"SELECT COUNT(*) ",
"FROM irtb00006 a,adtb00001 b,irtb00002 c ",
"WHERE 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 ",
" a.sec_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 <0 AND ",
criterio clipped
# PREPARE comando1 FROM selec1
# DECLARE busca1 CURSOR FOR comando1
# OPEN busca1 USING fecha1,fecha2
# FETCH busca1 INTO regi
PREPARE busca FROM selec
DECLARE accion CURSOR FOR busca
OPEN accion USING fecha1,fecha2,fecha1,fecha2
LET idx = 1
LET p_param = "S"
FOREACH accion INTO cons_maq.*
IF idx =1 THEN
LET r_filename = 'irprrp043.4rp'
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview = 1
CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
CALL fgl_report_configurexlsxdevice(null,null,null,false,false,null,1)
LET handler = fgl_report_commitCurrentSettings() -- commit changes
START REPORT rep_consu TO XML HANDLER HANDLER
END IF
END IF
LET idx = idx +1
# CALL termometro(regi,p_param)
LET p_param = "N"
LET cons_maq.codigo = cons_maq.cod_n USING "&",'-',
cons_maq.cod_grupo USING "&&",'-',
cons_maq.cod_tipo USING "&&&",'-',
cons_maq.cod_sec USING "&&&&"
LET cons_maq.costo_st = 0
IF cons_maq.tipoinventario = 'REPUESTOS' THEN
SELECT costo_st INTO cons_maq.costo_st
FROM irtb00013
WHERE cod_n = cons_maq.cod_n AND
cod_grupo = cons_maq.cod_grupo AND
cod_tipo = cons_maq.cod_tipo AND
cod_sec = cons_maq.cod_sec AND
ano = YEAR(cons_maq.fecha) AND
status_t IS NULL
ELSE
SELECT costo_st INTO cons_maq.costo_st
FROM intb00013
WHERE cod_n = cons_maq.cod_n AND
cod_grupo = cons_maq.cod_grupo AND
cod_tipo = cons_maq.cod_tipo AND
cod_sec = cons_maq.cod_sec AND
ano = YEAR(cons_maq.fecha) AND
status_t IS NULL
END IF
LET cons_maq.valor = 0
LET cons_maq.valor = cons_maq.costo_st * cons_maq.cantidad_2
OUTPUT TO REPORT rep_consu(cons_maq.*)
END FOREACH
FINISH REPORT rep_consu
END FUNCTION
###### Proceso de generacion del reporte.
REPORT rep_consu(x)
DEFINE x RECORD
tipoinventario VARCHAR(50),
maquina LIKE irtb00006.maquina,
nombre LIKE irtb00009.nombre,
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp CHAR(30),
unidad_med CHAR(4),
fecha DATE,
num_doc INT,
descripcion_mov VARCHAR(100),
cantidad_2 LIKE irtb00006.cantidad_2,
codigo CHAR(25),
costo_st LIKE irtb00013.costo_st,
valor DECIMAL(12,2)
END RECORD
DEFINE p RECORD
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
descrip_mov LIKE irtb00005.descrip_mov
END RECORD
DEFINE primera CHAR(1),
hora CHAR(6),
xfecha CHAR(10),
datosFechas VARCHAR(30),
dia,mes smallint,
nom_dia,nom_mes CHAR(10),
total_consumo_co,total_valor_co,total_general,total_valor_mq FLOAT
OUTPUT
LEFT MARGIN 0
ORDER BY x.maquina,x.codigo
###### Formateando la salida de la informacion
FORMAT
PAGE HEADER
LET hora = time
LET dia = WEEKDAY(x.fecha)
LET mes = MONTH(x.fecha)
LET primera = "S"
CALL busca_mes()
LET nom_mes = nombre_mes[mes]
LET dia = dia + 1
CALL busca_dia()
LET nom_dia = nombre_dia[dia]
LET datosFechas = "Del ",fecha1 USING "dd/mm/yyyy", " Al ",
fecha2 USING "dd/mm/yyyy"
BEFORE GROUP OF x.maquina
PRINTX p_companias.nombre,fecha1,fecha2,hora,datosFechas,x.maquina,x.nombre
BEFORE GROUP OF x.codigo
PRINTX x.codigo,x.descrip_esp,x.unidad_med
ON EVERY ROW
LET xfecha = x.fecha USING "dd/mm/yyyy"
PRINTX xfecha, x.cantidad_2, x.costo_st, x.valor ,x.num_doc,x.descripcion_mov
AFTER GROUP OF x.codigo
LET total_consumo_co = GROUP SUM(x.cantidad_2)
LET total_valor_co = GROUP SUM(x.valor)
AFTER GROUP OF x.maquina
LET total_valor_mq= GROUP SUM(x.valor)
PRINTX total_Valor_mq
ON LAST ROW
LET total_General= SUM(x.valor)
END REPORT
##### Igualandon los dias de la semana a la descripcion del mismo
FUNCTION busca_dia()
LET nombre_dia[1] = "Domingo"
LET nombre_dia[2] = "Lunes"
LET nombre_dia[3] = "Martes"
LET nombre_dia[4] = "Miercoles"
LET nombre_dia[5] = "Jueves"
LET nombre_dia[6] = "Viernes"
LET nombre_dia[7] = "Sabado"
END FUNCTION
####### Igualando el numero del mes a la descripcion del mismo
FUNCTION busca_mes()
LET nombre_mes[1] = "Enero"
LET nombre_mes[2] = "Febrero"
LET nombre_mes[3] = "Marzo"
LET nombre_mes[4] = "Abril"
LET nombre_mes[5] = "Mayo"
LET nombre_mes[6] = "Junio"
LET nombre_mes[7] = "Julio"
LET nombre_mes[8] = "Agosto"
LET nombre_mes[9] = "Septiembre"
LET nombre_mes[10] = "Octubre"
LET nombre_mes[11] = "Noviembre"
LET nombre_mes[12] = "Diciembre"
END FUNCTION
{
-------------------------------------------------------------------------------
PROGRAMA : IRPRRP043
OBJETIVO : Rreporte de Consumo Por Maquina
PROGRAMADOR : Juan Soto
FECHA REALIZACION : Agosto 20, 2020
MODIFICACION : Incluir costo estandar del repuesto y valor consumo por departamento.
-------------------------------------------------------------------------------
}
IMPORT os
GLOBALS "irprgb000.4gl"
DEFINE fecha1,fecha2 DATE,
departamento INT
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprrp008()
END MAIN
FUNCTION irprrp008()
##### Definicion de la variables a imprimir
DEFINE cons_maq RECORD
tipoinventario VARCHAR(40),
maquina LIKE irtb00006.maquina,
nombre LIKE irtb00009.nombre,
cod_n LIKE irtb00006.cod_n,
cod_grupo LIKE irtb00006.cod_grupo,
cod_tipo LIKE irtb00006.cod_tipo,
cod_sec LIKE irtb00006.cod_sec,
descrip_esp CHAR(30),
unidad_med CHAR(4),
fecha DATE,
num_doc INT,
descripcion_mov VARCHAR(100),
cantidad_2 LIKE irtb00006.cantidad_2,
codigo CHAR(25),
costo_st LIKE irtb00013.costo_st,
valor DECIMAL(12,2)
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM irfmrp008 FROM "irfmrp043"
DISPLAY FORM irfmrp008
DISPLAY "irprrp008" AT 4,3
DISPLAY "Consumo de Repuesto Por Maquina" AT 6,25
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
DISPLAY " "
at 19,14
####### Creando criterio de busqueda
INPUT BY NAME fecha1,fecha2,departamento
BEFORE INPUT
CALL busca_departamento()
AFTER FIELD fecha1
IF fecha1 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
AFTER FIELD fecha2
IF fecha2 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha2
END IF
IF fecha1 > fecha2 THEN
LET numero_msg = 168
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
FROM cod_n,cod_grupo,cod_tipo,cod_sec
AFTER CONSTRUCT
##### Creando la facilidad para cancelar opreacion mediante DELETE
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
EXIT CONSTRUCT
END CONSTRUCT
##### Selecionando la informacion requerida para la salida de
##### informacion
IF departamento IS NULL THEN
LET selec =
"SELECT 'REPUESTOS',a.sec_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.unidad_med,a.fecha,a.num_doc,cast(d.cod_mov as char(5))+'-'+d.descrip_mov, a.cantidad_2*-1 ",
"FROM irtb00006 a,adtb00001 b,irtb00002 c,irtb00005 d ",
"WHERE 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 ",
" a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ",
" a.sec_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ",
criterio CLIPPED ,
" UNION ",
"SELECT 'MAT PRIMA', a.depto_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.unidad_med,a.fecha,a.num_doc,cast(d.cod_mov as char(5))+'-'+d.descrip_mov, a.cantidad_2*-1 ",
"FROM intb00006 a,adtb00001 b,intb00001 c,intb00005 d ",
"WHERE 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 ",
" a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ",
" a.depto_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ",
criterio CLIPPED,
" ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec"
ELSE
LET selec =
"SELECT 'REPUESTOS',a.sec_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.unidad_med,a.fecha,a.num_doc,cast(d.cod_mov as char(5))+'-'+d.descrip_mov, a.cantidad_2*-1 ",
"FROM irtb00006 a,adtb00001 b,irtb00002 c,irtb00005 d ",
"WHERE 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 ",
" a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ",
" a.sec_a = ", departamento, " and ",
" a.sec_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ",
criterio CLIPPED ,
" UNION ",
"SELECT 'MAT PRIMA', a.depto_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.unidad_med,a.fecha,a.num_doc,cast(d.cod_mov as char(5))+'-'+d.descrip_mov, a.cantidad_2*-1 ",
"FROM intb00006 a,adtb00001 b,intb00001 c,intb00005 d ",
"WHERE 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 ",
" a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ",
" a.depto_a = ", departamento, " and ",
" a.depto_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ",
criterio CLIPPED,
" ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec"
END IF
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>"
AT 17,14 ATTRIBUTE (REVERSE,BOLD)
LET selec1 =
"SELECT COUNT(*) ",
"FROM irtb00006 a,adtb00001 b,irtb00002 c ",
"WHERE 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 ",
" a.sec_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 <0 AND ",
criterio clipped
# PREPARE comando1 FROM selec1
# DECLARE busca1 CURSOR FOR comando1
# OPEN busca1 USING fecha1,fecha2
# FETCH busca1 INTO regi
PREPARE busca FROM selec
DECLARE accion CURSOR FOR busca
OPEN accion USING fecha1,fecha2,fecha1,fecha2
LET idx = 1
LET p_param = "S"
FOREACH accion INTO cons_maq.*
IF idx =1 THEN
LET r_filename = 'irprrp043.4rp'
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview = 1
CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
CALL fgl_report_configurexlsxdevice(null,null,null,false,false,null,1)
LET handler = fgl_report_commitCurrentSettings() -- commit changes
START REPORT rep_consu TO XML HANDLER HANDLER
END IF
END IF
LET idx = idx +1
# CALL termometro(regi,p_param)
LET p_param = "N"
LET cons_maq.codigo = cons_maq.cod_n USING "&",'-',
cons_maq.cod_grupo USING "&&",'-',
cons_maq.cod_tipo USING "&&&",'-',
cons_maq.cod_sec USING "&&&&"
LET cons_maq.costo_st = 0
IF cons_maq.tipoinventario = 'REPUESTOS' THEN
SELECT costo_st INTO cons_maq.costo_st
FROM irtb00013
WHERE cod_n = cons_maq.cod_n AND
cod_grupo = cons_maq.cod_grupo AND
cod_tipo = cons_maq.cod_tipo AND
cod_sec = cons_maq.cod_sec AND
ano = YEAR(cons_maq.fecha) AND
status_t IS NULL
ELSE
SELECT costo_st INTO cons_maq.costo_st
FROM intb00013
WHERE cod_n = cons_maq.cod_n AND
cod_grupo = cons_maq.cod_grupo AND
cod_tipo = cons_maq.cod_tipo AND
cod_sec = cons_maq.cod_sec AND
ano = YEAR(cons_maq.fecha) AND
status_t IS NULL
END IF
LET cons_maq.valor = 0
LET cons_maq.valor = cons_maq.costo_st * cons_maq.cantidad_2
OUTPUT TO REPORT rep_consu(cons_maq.*)
END FOREACH
FINISH REPORT rep_consu
END FUNCTION
###### Proceso de generacion del reporte.
REPORT rep_consu(x)
DEFINE x RECORD
tipoinventario VARCHAR(50),
maquina LIKE irtb00006.maquina,
nombre LIKE irtb00009.nombre,
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp CHAR(30),
unidad_med CHAR(4),
fecha DATE,
num_doc INT,
descripcion_mov VARCHAR(100),
cantidad_2 LIKE irtb00006.cantidad_2,
codigo CHAR(25),
costo_st LIKE irtb00013.costo_st,
valor DECIMAL(12,2)
END RECORD
DEFINE p RECORD
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
descrip_mov LIKE irtb00005.descrip_mov
END RECORD
DEFINE primera CHAR(1),
hora CHAR(6),
xfecha CHAR(10),
datosFechas VARCHAR(30),
dia,mes smallint,
nom_dia,nom_mes CHAR(10),
total_consumo_co,total_valor_co,total_general,total_valor_mq FLOAT
OUTPUT
LEFT MARGIN 0
ORDER BY x.maquina,x.codigo
###### Formateando la salida de la informacion
FORMAT
PAGE HEADER
LET hora = time
LET dia = WEEKDAY(x.fecha)
LET mes = MONTH(x.fecha)
LET primera = "S"
CALL busca_mes()
LET nom_mes = nombre_mes[mes]
LET dia = dia + 1
CALL busca_dia()
LET nom_dia = nombre_dia[dia]
LET datosFechas = "Del ",fecha1 USING "dd/mm/yyyy", " Al ",
fecha2 USING "dd/mm/yyyy"
BEFORE GROUP OF x.maquina
PRINTX p_companias.nombre,fecha1,fecha2,hora,datosFechas,x.maquina,x.nombre
BEFORE GROUP OF x.codigo
PRINTX x.codigo,x.descrip_esp,x.unidad_med
ON EVERY ROW
LET xfecha = x.fecha USING "dd/mm/yyyy"
PRINTX xfecha, x.cantidad_2, x.costo_st, x.valor ,x.num_doc,x.descripcion_mov
AFTER GROUP OF x.codigo
LET total_consumo_co = GROUP SUM(x.cantidad_2)
LET total_valor_co = GROUP SUM(x.valor)
AFTER GROUP OF x.maquina
LET total_valor_mq= GROUP SUM(x.valor)
PRINTX total_Valor_mq
ON LAST ROW
LET total_General= SUM(x.valor)
END REPORT
##### Igualandon los dias de la semana a la descripcion del mismo
FUNCTION busca_dia()
LET nombre_dia[1] = "Domingo"
LET nombre_dia[2] = "Lunes"
LET nombre_dia[3] = "Martes"
LET nombre_dia[4] = "Miercoles"
LET nombre_dia[5] = "Jueves"
LET nombre_dia[6] = "Viernes"
LET nombre_dia[7] = "Sabado"
END FUNCTION
####### Igualando el numero del mes a la descripcion del mismo
FUNCTION busca_mes()
LET nombre_mes[1] = "Enero"
LET nombre_mes[2] = "Febrero"
LET nombre_mes[3] = "Marzo"
LET nombre_mes[4] = "Abril"
LET nombre_mes[5] = "Mayo"
LET nombre_mes[6] = "Junio"
LET nombre_mes[7] = "Julio"
LET nombre_mes[8] = "Agosto"
LET nombre_mes[9] = "Septiembre"
LET nombre_mes[10] = "Octubre"
LET nombre_mes[11] = "Noviembre"
LET nombre_mes[12] = "Diciembre"
END FUNCTION
+353 -353
View File
@@ -1,353 +1,353 @@
{
-------------------------------------------------------------------------------
PROGRAMA : IRPRRP045
OBJETIVO : Rreporte de Consumo Por Maquina USUARIOS
PROGRAMADOR : Juan Soto
FECHA REALIZACION : Junio 14, 20, 2022
-------------------------------------------------------------------------------
}
IMPORT os
GLOBALS "irprgb000.4gl"
DEFINE fecha1,fecha2 DATE,
departamento INT
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprrp045()
END MAIN
FUNCTION irprrp045()
##### Definicion de la variables a imprimir
DEFINE cons_maq RECORD
tipoinventario VARCHAR(40),
maquina LIKE irtb00006.maquina,
nombre LIKE irtb00009.nombre,
cod_n LIKE irtb00006.cod_n,
cod_grupo LIKE irtb00006.cod_grupo,
cod_tipo LIKE irtb00006.cod_tipo,
cod_sec LIKE irtb00006.cod_sec,
descrip_esp CHAR(30),
unidad_med CHAR(4),
fecha DATE,
num_doc INT,
descripcion_mov VARCHAR(100),
cantidad_2 LIKE irtb00006.cantidad_2,
codigo CHAR(25),
costo_st LIKE irtb00013.costo_st,
valor DECIMAL(12,2)
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM irfmrp008 FROM "irfmrp043"
DISPLAY FORM irfmrp008
DISPLAY "irprrp008" AT 4,3
DISPLAY "Consumo de Repuesto Por Maquina" AT 6,25
####### Creando criterio de busqueda
INPUT BY NAME fecha1,fecha2,departamento
BEFORE INPUT
CALL departamento_user(usuarios)
AFTER FIELD fecha1
IF fecha1 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
AFTER FIELD fecha2
IF fecha2 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha2
END IF
IF fecha1 > fecha2 THEN
LET numero_msg = 168
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
FROM cod_n,cod_grupo,cod_tipo,cod_sec
AFTER CONSTRUCT
##### Creando la facilidad para cancelar opreacion mediante DELETE
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
EXIT CONSTRUCT
END CONSTRUCT
##### Selecionando la informacion requerida para la salida de
##### informacion
IF departamento IS NULL THEN
-- Sin departamento: solo los departamentos asignados al usuario (adtb00056), igual
-- que el combo; antes dejarlo vacio mostraba el consumo de TODOS los departamentos.
LET selec =
"SELECT 'REPUESTOS',a.sec_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.unidad_med,a.fecha,a.num_doc,cast(d.cod_mov as char(5))+'-'+d.descrip_mov, a.cantidad_2*-1 ",
"FROM irtb00006 a,adtb00001 b,irtb00002 c,irtb00005 d ",
"WHERE 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 ",
" a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ",
" a.sec_a IN (SELECT u.departamento_visualiza FROM adtb00056 u WHERE u.usuario = '", usuarios CLIPPED, "') AND ",
" a.sec_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ",
criterio CLIPPED ,
" UNION ",
"SELECT 'MAT PRIMA', a.depto_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.unidad_med,a.fecha,a.num_doc,cast(d.cod_mov as char(5))+'-'+d.descrip_mov, a.cantidad_2*-1 ",
"FROM intb00006 a,adtb00001 b,intb00001 c,intb00005 d ",
"WHERE 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 ",
" a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ",
" a.depto_a IN (SELECT u.departamento_visualiza FROM adtb00056 u WHERE u.usuario = '", usuarios CLIPPED, "') AND ",
" a.depto_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ",
criterio CLIPPED,
" ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec"
ELSE
LET selec =
"SELECT 'REPUESTOS',a.sec_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.unidad_med,a.fecha,a.num_doc,cast(d.cod_mov as char(5))+'-'+d.descrip_mov, a.cantidad_2*-1 ",
"FROM irtb00006 a,adtb00001 b,irtb00002 c,irtb00005 d ",
"WHERE 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 ",
" a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ",
" a.sec_a = ", departamento, " and ",
" a.sec_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ",
criterio CLIPPED ,
" UNION ",
"SELECT 'MAT PRIMA', a.depto_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.unidad_med,a.fecha,a.num_doc,cast(d.cod_mov as char(5))+'-'+d.descrip_mov, a.cantidad_2*-1 ",
"FROM intb00006 a,adtb00001 b,intb00001 c,intb00005 d ",
"WHERE 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 ",
" a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ",
" a.depto_a = ", departamento, " and ",
" a.depto_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ",
criterio CLIPPED,
" ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec"
END IF
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>"
AT 17,14 ATTRIBUTE (REVERSE,BOLD)
LET selec1 =
"SELECT COUNT(*) ",
"FROM irtb00006 a,adtb00001 b,irtb00002 c ",
"WHERE 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 ",
" a.sec_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 <0 AND ",
criterio clipped
# PREPARE comando1 FROM selec1
# DECLARE busca1 CURSOR FOR comando1
# OPEN busca1 USING fecha1,fecha2
# FETCH busca1 INTO regi
PREPARE busca FROM selec
DECLARE accion CURSOR FOR busca
OPEN accion USING fecha1,fecha2,fecha1,fecha2
LET idx = 1
LET p_param = "S"
FOREACH accion INTO cons_maq.*
IF idx =1 THEN
LET r_filename = 'irprrp043.4rp'
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview = 1
CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
CALL fgl_report_configurexlsxdevice(null,null,null,false,false,null,1)
LET handler = fgl_report_commitCurrentSettings() -- commit changes
START REPORT rep_consu TO XML HANDLER HANDLER
END IF
END IF
LET idx = idx +1
# CALL termometro(regi,p_param)
LET p_param = "N"
LET cons_maq.codigo = cons_maq.cod_n USING "&",'-',
cons_maq.cod_grupo USING "&&",'-',
cons_maq.cod_tipo USING "&&&",'-',
cons_maq.cod_sec USING "&&&&"
LET cons_maq.costo_st = 0
IF cons_maq.tipoinventario = 'REPUESTOS' THEN
SELECT costo_st INTO cons_maq.costo_st
FROM irtb00013
WHERE cod_n = cons_maq.cod_n AND
cod_grupo = cons_maq.cod_grupo AND
cod_tipo = cons_maq.cod_tipo AND
cod_sec = cons_maq.cod_sec AND
ano = YEAR(cons_maq.fecha) AND
status_t IS NULL
ELSE
SELECT costo_st INTO cons_maq.costo_st
FROM intb00013
WHERE cod_n = cons_maq.cod_n AND
cod_grupo = cons_maq.cod_grupo AND
cod_tipo = cons_maq.cod_tipo AND
cod_sec = cons_maq.cod_sec AND
ano = YEAR(cons_maq.fecha) AND
status_t IS NULL
END IF
LET cons_maq.valor = 0
LET cons_maq.valor = cons_maq.costo_st * cons_maq.cantidad_2
OUTPUT TO REPORT rep_consu(cons_maq.*)
END FOREACH
IF idx > 1 THEN
FINISH REPORT rep_consu
END IF
END FUNCTION
###### Proceso de generacion del reporte.
REPORT rep_consu(x)
DEFINE x RECORD
tipoinventario VARCHAR(50),
maquina LIKE irtb00006.maquina,
nombre LIKE irtb00009.nombre,
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp CHAR(30),
unidad_med CHAR(4),
fecha DATE,
num_doc INT,
descripcion_mov VARCHAR(100),
cantidad_2 LIKE irtb00006.cantidad_2,
codigo CHAR(25),
costo_st LIKE irtb00013.costo_st,
valor DECIMAL(12,2)
END RECORD
DEFINE p RECORD
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
descrip_mov LIKE irtb00005.descrip_mov
END RECORD
DEFINE primera CHAR(1),
hora CHAR(6),
xfecha CHAR(10),
datosFechas VARCHAR(30),
dia,mes smallint,
nom_dia,nom_mes CHAR(10),
total_consumo_co,total_valor_co,total_general,total_valor_mq FLOAT
OUTPUT
LEFT MARGIN 0
ORDER BY x.maquina,x.codigo
###### Formateando la salida de la informacion
FORMAT
PAGE HEADER
LET hora = time
LET dia = WEEKDAY(x.fecha)
LET mes = MONTH(x.fecha)
LET primera = "S"
CALL busca_mes()
LET nom_mes = nombre_mes[mes]
LET dia = dia + 1
CALL busca_dia()
LET nom_dia = nombre_dia[dia]
LET datosFechas = "Del ",fecha1 USING "dd/mm/yyyy", " Al ",
fecha2 USING "dd/mm/yyyy"
BEFORE GROUP OF x.maquina
PRINTX p_companias.nombre,fecha1,fecha2,hora,datosFechas,x.maquina,x.nombre
BEFORE GROUP OF x.codigo
PRINTX x.codigo,x.descrip_esp,x.unidad_med
ON EVERY ROW
LET xfecha = x.fecha USING "dd/mm/yyyy"
PRINTX xfecha, x.cantidad_2, x.costo_st, x.valor ,x.num_doc,x.descripcion_mov
AFTER GROUP OF x.codigo
LET total_consumo_co = GROUP SUM(x.cantidad_2)
LET total_valor_co = GROUP SUM(x.valor)
AFTER GROUP OF x.maquina
LET total_valor_mq= GROUP SUM(x.valor)
PRINTX total_Valor_mq
ON LAST ROW
LET total_General= SUM(x.valor)
END REPORT
##### Igualandon los dias de la semana a la descripcion del mismo
FUNCTION busca_dia()
LET nombre_dia[1] = "Domingo"
LET nombre_dia[2] = "Lunes"
LET nombre_dia[3] = "Martes"
LET nombre_dia[4] = "Miercoles"
LET nombre_dia[5] = "Jueves"
LET nombre_dia[6] = "Viernes"
LET nombre_dia[7] = "Sabado"
END FUNCTION
####### Igualando el numero del mes a la descripcion del mismo
FUNCTION busca_mes()
LET nombre_mes[1] = "Enero"
LET nombre_mes[2] = "Febrero"
LET nombre_mes[3] = "Marzo"
LET nombre_mes[4] = "Abril"
LET nombre_mes[5] = "Mayo"
LET nombre_mes[6] = "Junio"
LET nombre_mes[7] = "Julio"
LET nombre_mes[8] = "Agosto"
LET nombre_mes[9] = "Septiembre"
LET nombre_mes[10] = "Octubre"
LET nombre_mes[11] = "Noviembre"
LET nombre_mes[12] = "Diciembre"
END FUNCTION
{
-------------------------------------------------------------------------------
PROGRAMA : IRPRRP045
OBJETIVO : Rreporte de Consumo Por Maquina USUARIOS
PROGRAMADOR : Juan Soto
FECHA REALIZACION : Junio 14, 20, 2022
-------------------------------------------------------------------------------
}
IMPORT os
GLOBALS "irprgb000.4gl"
DEFINE fecha1,fecha2 DATE,
departamento INT
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL irprrp045()
END MAIN
FUNCTION irprrp045()
##### Definicion de la variables a imprimir
DEFINE cons_maq RECORD
tipoinventario VARCHAR(40),
maquina LIKE irtb00006.maquina,
nombre LIKE irtb00009.nombre,
cod_n LIKE irtb00006.cod_n,
cod_grupo LIKE irtb00006.cod_grupo,
cod_tipo LIKE irtb00006.cod_tipo,
cod_sec LIKE irtb00006.cod_sec,
descrip_esp CHAR(30),
unidad_med CHAR(4),
fecha DATE,
num_doc INT,
descripcion_mov VARCHAR(100),
cantidad_2 LIKE irtb00006.cantidad_2,
codigo CHAR(25),
costo_st LIKE irtb00013.costo_st,
valor DECIMAL(12,2)
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
CLEAR SCREEN
OPEN FORM irfmrp008 FROM "irfmrp043"
DISPLAY FORM irfmrp008
DISPLAY "irprrp008" AT 4,3
DISPLAY "Consumo de Repuesto Por Maquina" AT 6,25
####### Creando criterio de busqueda
INPUT BY NAME fecha1,fecha2,departamento
BEFORE INPUT
CALL departamento_user(usuarios)
AFTER FIELD fecha1
IF fecha1 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
AFTER FIELD fecha2
IF fecha2 IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha2
END IF
IF fecha1 > fecha2 THEN
LET numero_msg = 168
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
FROM cod_n,cod_grupo,cod_tipo,cod_sec
AFTER CONSTRUCT
##### Creando la facilidad para cancelar opreacion mediante DELETE
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
EXIT CONSTRUCT
END CONSTRUCT
##### Selecionando la informacion requerida para la salida de
##### informacion
IF departamento IS NULL THEN
-- Sin departamento: solo los departamentos asignados al usuario (adtb00056), igual
-- que el combo; antes dejarlo vacio mostraba el consumo de TODOS los departamentos.
LET selec =
"SELECT 'REPUESTOS',a.sec_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.unidad_med,a.fecha,a.num_doc,cast(d.cod_mov as char(5))+'-'+d.descrip_mov, a.cantidad_2*-1 ",
"FROM irtb00006 a,adtb00001 b,irtb00002 c,irtb00005 d ",
"WHERE 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 ",
" a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ",
" a.sec_a IN (SELECT u.departamento_visualiza FROM adtb00056 u WHERE u.usuario = '", usuarios CLIPPED, "') AND ",
" a.sec_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ",
criterio CLIPPED ,
" UNION ",
"SELECT 'MAT PRIMA', a.depto_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.unidad_med,a.fecha,a.num_doc,cast(d.cod_mov as char(5))+'-'+d.descrip_mov, a.cantidad_2*-1 ",
"FROM intb00006 a,adtb00001 b,intb00001 c,intb00005 d ",
"WHERE 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 ",
" a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ",
" a.depto_a IN (SELECT u.departamento_visualiza FROM adtb00056 u WHERE u.usuario = '", usuarios CLIPPED, "') AND ",
" a.depto_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ",
criterio CLIPPED,
" ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec"
ELSE
LET selec =
"SELECT 'REPUESTOS',a.sec_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.unidad_med,a.fecha,a.num_doc,cast(d.cod_mov as char(5))+'-'+d.descrip_mov, a.cantidad_2*-1 ",
"FROM irtb00006 a,adtb00001 b,irtb00002 c,irtb00005 d ",
"WHERE 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 ",
" a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ",
" a.sec_a = ", departamento, " and ",
" a.sec_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ",
criterio CLIPPED ,
" UNION ",
"SELECT 'MAT PRIMA', a.depto_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" c.descrip_esp,c.unidad_med,a.fecha,a.num_doc,cast(d.cod_mov as char(5))+'-'+d.descrip_mov, a.cantidad_2*-1 ",
"FROM intb00006 a,adtb00001 b,intb00001 c,intb00005 d ",
"WHERE 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 ",
" a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ",
" a.depto_a = ", departamento, " and ",
" a.depto_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ",
criterio CLIPPED,
" ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec"
END IF
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>"
AT 17,14 ATTRIBUTE (REVERSE,BOLD)
LET selec1 =
"SELECT COUNT(*) ",
"FROM irtb00006 a,adtb00001 b,irtb00002 c ",
"WHERE 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 ",
" a.sec_a = b.departamento AND a.status_t is NULL AND ",
" a.fecha BETWEEN ? AND ? AND a.cantidad_2 <0 AND ",
criterio clipped
# PREPARE comando1 FROM selec1
# DECLARE busca1 CURSOR FOR comando1
# OPEN busca1 USING fecha1,fecha2
# FETCH busca1 INTO regi
PREPARE busca FROM selec
DECLARE accion CURSOR FOR busca
OPEN accion USING fecha1,fecha2,fecha1,fecha2
LET idx = 1
LET p_param = "S"
FOREACH accion INTO cons_maq.*
IF idx =1 THEN
LET r_filename = 'irprrp043.4rp'
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview = 1
CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
CALL fgl_report_configurexlsxdevice(null,null,null,false,false,null,1)
LET handler = fgl_report_commitCurrentSettings() -- commit changes
START REPORT rep_consu TO XML HANDLER HANDLER
END IF
END IF
LET idx = idx +1
# CALL termometro(regi,p_param)
LET p_param = "N"
LET cons_maq.codigo = cons_maq.cod_n USING "&",'-',
cons_maq.cod_grupo USING "&&",'-',
cons_maq.cod_tipo USING "&&&",'-',
cons_maq.cod_sec USING "&&&&"
LET cons_maq.costo_st = 0
IF cons_maq.tipoinventario = 'REPUESTOS' THEN
SELECT costo_st INTO cons_maq.costo_st
FROM irtb00013
WHERE cod_n = cons_maq.cod_n AND
cod_grupo = cons_maq.cod_grupo AND
cod_tipo = cons_maq.cod_tipo AND
cod_sec = cons_maq.cod_sec AND
ano = YEAR(cons_maq.fecha) AND
status_t IS NULL
ELSE
SELECT costo_st INTO cons_maq.costo_st
FROM intb00013
WHERE cod_n = cons_maq.cod_n AND
cod_grupo = cons_maq.cod_grupo AND
cod_tipo = cons_maq.cod_tipo AND
cod_sec = cons_maq.cod_sec AND
ano = YEAR(cons_maq.fecha) AND
status_t IS NULL
END IF
LET cons_maq.valor = 0
LET cons_maq.valor = cons_maq.costo_st * cons_maq.cantidad_2
OUTPUT TO REPORT rep_consu(cons_maq.*)
END FOREACH
IF idx > 1 THEN
FINISH REPORT rep_consu
END IF
END FUNCTION
###### Proceso de generacion del reporte.
REPORT rep_consu(x)
DEFINE x RECORD
tipoinventario VARCHAR(50),
maquina LIKE irtb00006.maquina,
nombre LIKE irtb00009.nombre,
cod_n LIKE intb00001.cod_n,
cod_grupo LIKE intb00001.cod_grupo,
cod_tipo LIKE intb00001.cod_tipo,
cod_sec LIKE intb00001.cod_sec,
descrip_esp CHAR(30),
unidad_med CHAR(4),
fecha DATE,
num_doc INT,
descripcion_mov VARCHAR(100),
cantidad_2 LIKE irtb00006.cantidad_2,
codigo CHAR(25),
costo_st LIKE irtb00013.costo_st,
valor DECIMAL(12,2)
END RECORD
DEFINE p RECORD
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
descrip_mov LIKE irtb00005.descrip_mov
END RECORD
DEFINE primera CHAR(1),
hora CHAR(6),
xfecha CHAR(10),
datosFechas VARCHAR(30),
dia,mes smallint,
nom_dia,nom_mes CHAR(10),
total_consumo_co,total_valor_co,total_general,total_valor_mq FLOAT
OUTPUT
LEFT MARGIN 0
ORDER BY x.maquina,x.codigo
###### Formateando la salida de la informacion
FORMAT
PAGE HEADER
LET hora = time
LET dia = WEEKDAY(x.fecha)
LET mes = MONTH(x.fecha)
LET primera = "S"
CALL busca_mes()
LET nom_mes = nombre_mes[mes]
LET dia = dia + 1
CALL busca_dia()
LET nom_dia = nombre_dia[dia]
LET datosFechas = "Del ",fecha1 USING "dd/mm/yyyy", " Al ",
fecha2 USING "dd/mm/yyyy"
BEFORE GROUP OF x.maquina
PRINTX p_companias.nombre,fecha1,fecha2,hora,datosFechas,x.maquina,x.nombre
BEFORE GROUP OF x.codigo
PRINTX x.codigo,x.descrip_esp,x.unidad_med
ON EVERY ROW
LET xfecha = x.fecha USING "dd/mm/yyyy"
PRINTX xfecha, x.cantidad_2, x.costo_st, x.valor ,x.num_doc,x.descripcion_mov
AFTER GROUP OF x.codigo
LET total_consumo_co = GROUP SUM(x.cantidad_2)
LET total_valor_co = GROUP SUM(x.valor)
AFTER GROUP OF x.maquina
LET total_valor_mq= GROUP SUM(x.valor)
PRINTX total_Valor_mq
ON LAST ROW
LET total_General= SUM(x.valor)
END REPORT
##### Igualandon los dias de la semana a la descripcion del mismo
FUNCTION busca_dia()
LET nombre_dia[1] = "Domingo"
LET nombre_dia[2] = "Lunes"
LET nombre_dia[3] = "Martes"
LET nombre_dia[4] = "Miercoles"
LET nombre_dia[5] = "Jueves"
LET nombre_dia[6] = "Viernes"
LET nombre_dia[7] = "Sabado"
END FUNCTION
####### Igualando el numero del mes a la descripcion del mismo
FUNCTION busca_mes()
LET nombre_mes[1] = "Enero"
LET nombre_mes[2] = "Febrero"
LET nombre_mes[3] = "Marzo"
LET nombre_mes[4] = "Abril"
LET nombre_mes[5] = "Mayo"
LET nombre_mes[6] = "Junio"
LET nombre_mes[7] = "Julio"
LET nombre_mes[8] = "Agosto"
LET nombre_mes[9] = "Septiembre"
LET nombre_mes[10] = "Octubre"
LET nombre_mes[11] = "Noviembre"
LET nombre_mes[12] = "Diciembre"
END FUNCTION
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1742 -1537
View File
File diff suppressed because it is too large Load Diff
+305 -305
View File
@@ -1,305 +1,305 @@
OPTIONS SHORT CIRCUIT
IMPORT util
IMPORT com
FUNCTION apiclient(pemail)
DEFINE data_apilayer RECORD
email,did_you_mean,USER,domain,syntax_valid STRING,
is_disposable,is_role_account,is_catch_all,is_deliverable,can_connect_smtp,
is_inbox_full,is_disabled,mx_records,FREE,score BOOLEAN
END RECORD
DEFINE data RECORD
data RECORD
status ,
result,
deprecation_notice string,
score smallint,
email string,
regexp,
gibberish,
disposable,
webmail,
mx_records,
smtp_server,
smtp_check,
accept_all,
block BOOLEAN
END RECORD,
source DYNAMIC ARRAY OF STRING,
meta RECORD
param STRING
END RECORD
END RECORD
DEFINE data_ipq RECORD
MESSAGE STRING,
success,
valid,
disposable BOOLEAN,
smtp_score ,
overall_score DEC(10,2),
first_name string,
generic,
common,
dns_valid,
honeypot BOOLEAN,
deliverability STRING,
frequent_complainer BOOLEAN,
spam_trap_score STRING,
catch_all,
timed_out,
suspect,
recent_abuse BOOLEAN,
fraud_score DEC(10,2),
suggested_domain string,
leaked BOOLEAN
END RECORD
DEFINE estado,purl,cmd,res, msg,s,pemail,tiposervice STRING,
ret INT
# LA API PARA VERIFICAR ESTA OFFLINE 29/05/2025
{ LET estado = 'VALIDO'
LET ret = 200
RETURN estado,ret
}
# SE DEVUELVE SI EL EMAIL ESTA EN BLANCO
IF pemail IS NULL THEN
LET ret = 400
LET estado = 'DEBES DIGITAR EL EMAIL POR FAVOR'
RETURN estado,ret
END IF
DISPLAY "llego: ",pemail
# ELECCION DE SERVICIOS, POR EL MOMENTO ES IPQUALITY
SELECT a.IDENTIFICACION INTO tiposervice FROM APIS a
WHERE a.estado = 'ONLINE'
IF STATUS = NOTFOUND THEN
RETURN estado,ret
END IF
# LET tiposervice = 'ipq1'
IF tiposervice = 'HUNTER' THEN
LET purl = "https://api.hunter.io/v2/email-verifier?email=",pemail CLIPPED,"&api_key=2a50343f3a2842b082ee2c4b3ecccaf4ae5a7766"
CALL ipquality_send_command(purl) RETURNING ret,res
DISPLAY "response api: ",res," longitud: ",res.getLength()
IF res.getLength() =0 THEN
INSERT INTO envia_email_log (email,estado,fecha,programa_envio,us_crea,score)
VALUES (pemail,data.data.status,getdate(),'mt101_hunter',suser_Sname(),data.data.score)
LET ret = 400
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
RETURN estado,ret
END IF
TRY
CALL util.JSON.parse(res,data)
CATCH
LET ret = 400
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
RETURN estado,ret
END TRY
# INSERT INTO envia_email_log (email,estado,fecha,programa_envio,us_crea,score)
# VALUES (pemail,data.data.status,getdate(),'forzado',suser_Sname(),data.data.score)
# LET estado = 'VALIDO'
# LET ret = 200
# RETURN estado,ret
LET s = util.JSON.stringify(res)
DISPLAY "DATA EMAIL: ",pemail CLIPPED, " score: ",data.data.score
INSERT INTO envia_email_log (email,estado,fecha,programa_envio,us_crea,score)
VALUES (pemail,data.data.status,getdate(),'mt101_hunter',suser_Sname(),data.data.score)
IF ret ==0 THEN
IF data.data.mx_records = TRUE THEN
LET estado = 'VALIDO'
LET ret = 200
RETURN estado,ret
ELSE
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
LET ret = 400
RETURN estado,ret
END IF
IF data.data.smtp_server = TRUE THEN
LET estado = 'VALIDO'
LET ret = 200
RETURN estado,ret
ELSE
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
LET ret = 400
RETURN estado,ret
END IF
IF data.data.regexp = TRUE THEN
LET estado = 'VALIDO'
LET ret = 200
RETURN estado,ret
ELSE
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
LET ret = 400
RETURN estado,ret
END IF
IF data.data.disposable = TRUE THEN
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
LET ret = 400
RETURN estado,ret
ELSE
LET estado = 'VALIDO'
LET ret = 200
RETURN estado,ret
END IF
IF (data.data.status = 'valid' OR data.data.status = 'accept_all' OR
data.data.status = 'unknown') AND data.data.score > 29 THEN
LET estado = 'VALIDO'
LET ret = 200
RETURN estado,ret
ELSE
LET ret = 400
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
RETURN estado,ret
END IF
END IF
END IF
IF tiposervice = 'IPQUALITY' THEN
LET purl = 'https://ipqualityscore.com/api/json/email/cHZNnfXkbJDtx43YcrQqHSjXzBrndwT3/',pemail CLIPPED
CALL ipquality_send_command(purl) RETURNING ret,res
IF ret ==0 THEN
LET s = util.JSON.stringify(res)
CALL util.JSON.parse(res,data_ipq)
IF data_ipq.valid THEN
LET estado = 'VALIDO'
LET ret = 200
ELSE
LET ret = 400
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
END IF
END IF
END IF
IF tiposervice = 'APILAYER' THEN
# DISPLAY " ESTOY EN APILAYER"
LET purl= "https://api.apilayer.com/email_verification/",pemail CLIPPED
CALL apilayer_send_command(purl, cmd) RETURNING ret, res
# DISPLAY "res ",res," ",ret
IF ret ==0 THEN
LET s = util.JSON.stringify(res)
CALL util.JSON.parse(res,data_apilayer)
IF data_apilayer.can_connect_smtp THEN
LET estado = 'VALIDO'
LET ret = 200
ELSE
LET ret = 400
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
END IF
# DISPLAY "sintax ",data.syntax_valid," deliv ",data.is_deliverable
ELSE
IF ret = 429 THEN
LET ret = 200
LET estado ='VALIDO POR EXESO DE REQUEST'
ELSE
LET ret = 400
LET estado = 'NO FUE POSIBLE LA CONEXION, '
END IF
END IF
END IF
# LET ret = 200
DISPLAY "en return ",estado," ",ret
RETURN estado,ret
END FUNCTION
#
## Communications library using com (http or https)
#
FUNCTION apilayer_send_command(url, cmd)
DEFINE url, cmd STRING
DEFINE result, tmp STRING
DEFINE http_req com.HTTPRequest
DEFINE http_resp com.HTTPResponse
TRY
UPDATE apis SET cuenta = cuenta + 1 WHERE estado = 'ONLINE'
LET http_req = com.HTTPRequest.Create(url)
CALL http_req.setHeader("api_key","2a50343f3a2842b082ee2c4b3ecccaf4ae5a7766")
CALL http_req.doRequest()
LET http_resp=http_req.getResponse()
IF http_resp.getStatusCode() != 200 THEN
RETURN http_resp.getStatusCode(), http_resp.getStatusDescription()
END IF
LET tmp = http_resp.getStatusDescription()
IF (tmp == "OK" || tmp == "no error" ) THEN
RETURN -1, SFMT("HTTP request status description: %1 ",tmp)
END IF
LET result = http_resp.getTextResponse()
CATCH
RETURN -2, SFMT("HTTP request error: STATUS=%1 (%2)",STATUS,SQLCA.sqlerrd[2])
END TRY
RETURN 0, result
END FUNCTION
FUNCTION ipquality_send_command(url)
DEFINE url, cmd STRING
DEFINE result, tmp STRING
DEFINE http_req com.HTTPRequest
DEFINE http_resp com.HTTPResponse
DISPLAY "url", url
TRY
LET http_req = com.HTTPRequest.Create(url)
CALL http_req.setHeader("apikey","cHZNnfXkbJDtx43YcrQqHSjXzBrndwT3")
CALL http_req.doRequest()
LET http_resp=http_req.getResponse()
IF http_resp.getStatusCode() != 200 THEN
RETURN http_resp.getStatusCode(), http_resp.getStatusDescription()
END IF
LET tmp = http_resp.getStatusDescription()
IF (tmp == "OK" || tmp == "no error" ) THEN
RETURN -1, SFMT("HTTP request status description: %1 ",tmp)
END IF
LET result = http_resp.getTextResponse()
CATCH
RETURN -2, SFMT("HTTP request error: STATUS=%1 (%2)",STATUS,SQLCA.sqlerrd[2])
END TRY
RETURN 0, result
END FUNCTION
OPTIONS SHORT CIRCUIT
IMPORT util
IMPORT com
FUNCTION apiclient(pemail)
DEFINE data_apilayer RECORD
email,did_you_mean,USER,domain,syntax_valid STRING,
is_disposable,is_role_account,is_catch_all,is_deliverable,can_connect_smtp,
is_inbox_full,is_disabled,mx_records,FREE,score BOOLEAN
END RECORD
DEFINE data RECORD
data RECORD
status ,
result,
deprecation_notice string,
score smallint,
email string,
regexp,
gibberish,
disposable,
webmail,
mx_records,
smtp_server,
smtp_check,
accept_all,
block BOOLEAN
END RECORD,
source DYNAMIC ARRAY OF STRING,
meta RECORD
param STRING
END RECORD
END RECORD
DEFINE data_ipq RECORD
MESSAGE STRING,
success,
valid,
disposable BOOLEAN,
smtp_score ,
overall_score DEC(10,2),
first_name string,
generic,
common,
dns_valid,
honeypot BOOLEAN,
deliverability STRING,
frequent_complainer BOOLEAN,
spam_trap_score STRING,
catch_all,
timed_out,
suspect,
recent_abuse BOOLEAN,
fraud_score DEC(10,2),
suggested_domain string,
leaked BOOLEAN
END RECORD
DEFINE estado,purl,cmd,res, msg,s,pemail,tiposervice STRING,
ret INT
# LA API PARA VERIFICAR ESTA OFFLINE 29/05/2025
{ LET estado = 'VALIDO'
LET ret = 200
RETURN estado,ret
}
# SE DEVUELVE SI EL EMAIL ESTA EN BLANCO
IF pemail IS NULL THEN
LET ret = 400
LET estado = 'DEBES DIGITAR EL EMAIL POR FAVOR'
RETURN estado,ret
END IF
DISPLAY "llego: ",pemail
# ELECCION DE SERVICIOS, POR EL MOMENTO ES IPQUALITY
SELECT a.IDENTIFICACION INTO tiposervice FROM APIS a
WHERE a.estado = 'ONLINE'
IF STATUS = NOTFOUND THEN
RETURN estado,ret
END IF
# LET tiposervice = 'ipq1'
IF tiposervice = 'HUNTER' THEN
LET purl = "https://api.hunter.io/v2/email-verifier?email=",pemail CLIPPED,"&api_key=2a50343f3a2842b082ee2c4b3ecccaf4ae5a7766"
CALL ipquality_send_command(purl) RETURNING ret,res
DISPLAY "response api: ",res," longitud: ",res.getLength()
IF res.getLength() =0 THEN
INSERT INTO envia_email_log (email,estado,fecha,programa_envio,us_crea,score)
VALUES (pemail,data.data.status,getdate(),'mt101_hunter',suser_Sname(),data.data.score)
LET ret = 400
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
RETURN estado,ret
END IF
TRY
CALL util.JSON.parse(res,data)
CATCH
LET ret = 400
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
RETURN estado,ret
END TRY
# INSERT INTO envia_email_log (email,estado,fecha,programa_envio,us_crea,score)
# VALUES (pemail,data.data.status,getdate(),'forzado',suser_Sname(),data.data.score)
# LET estado = 'VALIDO'
# LET ret = 200
# RETURN estado,ret
LET s = util.JSON.stringify(res)
DISPLAY "DATA EMAIL: ",pemail CLIPPED, " score: ",data.data.score
INSERT INTO envia_email_log (email,estado,fecha,programa_envio,us_crea,score)
VALUES (pemail,data.data.status,getdate(),'mt101_hunter',suser_Sname(),data.data.score)
IF ret ==0 THEN
IF data.data.mx_records = TRUE THEN
LET estado = 'VALIDO'
LET ret = 200
RETURN estado,ret
ELSE
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
LET ret = 400
RETURN estado,ret
END IF
IF data.data.smtp_server = TRUE THEN
LET estado = 'VALIDO'
LET ret = 200
RETURN estado,ret
ELSE
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
LET ret = 400
RETURN estado,ret
END IF
IF data.data.regexp = TRUE THEN
LET estado = 'VALIDO'
LET ret = 200
RETURN estado,ret
ELSE
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
LET ret = 400
RETURN estado,ret
END IF
IF data.data.disposable = TRUE THEN
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
LET ret = 400
RETURN estado,ret
ELSE
LET estado = 'VALIDO'
LET ret = 200
RETURN estado,ret
END IF
IF (data.data.status = 'valid' OR data.data.status = 'accept_all' OR
data.data.status = 'unknown') AND data.data.score > 29 THEN
LET estado = 'VALIDO'
LET ret = 200
RETURN estado,ret
ELSE
LET ret = 400
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
RETURN estado,ret
END IF
END IF
END IF
IF tiposervice = 'IPQUALITY' THEN
LET purl = 'https://ipqualityscore.com/api/json/email/cHZNnfXkbJDtx43YcrQqHSjXzBrndwT3/',pemail CLIPPED
CALL ipquality_send_command(purl) RETURNING ret,res
IF ret ==0 THEN
LET s = util.JSON.stringify(res)
CALL util.JSON.parse(res,data_ipq)
IF data_ipq.valid THEN
LET estado = 'VALIDO'
LET ret = 200
ELSE
LET ret = 400
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
END IF
END IF
END IF
IF tiposervice = 'APILAYER' THEN
# DISPLAY " ESTOY EN APILAYER"
LET purl= "https://api.apilayer.com/email_verification/",pemail CLIPPED
CALL apilayer_send_command(purl, cmd) RETURNING ret, res
# DISPLAY "res ",res," ",ret
IF ret ==0 THEN
LET s = util.JSON.stringify(res)
CALL util.JSON.parse(res,data_apilayer)
IF data_apilayer.can_connect_smtp THEN
LET estado = 'VALIDO'
LET ret = 200
ELSE
LET ret = 400
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
END IF
# DISPLAY "sintax ",data.syntax_valid," deliv ",data.is_deliverable
ELSE
IF ret = 429 THEN
LET ret = 200
LET estado ='VALIDO POR EXESO DE REQUEST'
ELSE
LET ret = 400
LET estado = 'NO FUE POSIBLE LA CONEXION, '
END IF
END IF
END IF
# LET ret = 200
DISPLAY "en return ",estado," ",ret
RETURN estado,ret
END FUNCTION
#
## Communications library using com (http or https)
#
FUNCTION apilayer_send_command(url, cmd)
DEFINE url, cmd STRING
DEFINE result, tmp STRING
DEFINE http_req com.HTTPRequest
DEFINE http_resp com.HTTPResponse
TRY
UPDATE apis SET cuenta = cuenta + 1 WHERE estado = 'ONLINE'
LET http_req = com.HTTPRequest.Create(url)
CALL http_req.setHeader("api_key","2a50343f3a2842b082ee2c4b3ecccaf4ae5a7766")
CALL http_req.doRequest()
LET http_resp=http_req.getResponse()
IF http_resp.getStatusCode() != 200 THEN
RETURN http_resp.getStatusCode(), http_resp.getStatusDescription()
END IF
LET tmp = http_resp.getStatusDescription()
IF (tmp == "OK" || tmp == "no error" ) THEN
RETURN -1, SFMT("HTTP request status description: %1 ",tmp)
END IF
LET result = http_resp.getTextResponse()
CATCH
RETURN -2, SFMT("HTTP request error: STATUS=%1 (%2)",STATUS,SQLCA.sqlerrd[2])
END TRY
RETURN 0, result
END FUNCTION
FUNCTION ipquality_send_command(url)
DEFINE url, cmd STRING
DEFINE result, tmp STRING
DEFINE http_req com.HTTPRequest
DEFINE http_resp com.HTTPResponse
DISPLAY "url", url
TRY
LET http_req = com.HTTPRequest.Create(url)
CALL http_req.setHeader("apikey","cHZNnfXkbJDtx43YcrQqHSjXzBrndwT3")
CALL http_req.doRequest()
LET http_resp=http_req.getResponse()
IF http_resp.getStatusCode() != 200 THEN
RETURN http_resp.getStatusCode(), http_resp.getStatusDescription()
END IF
LET tmp = http_resp.getStatusDescription()
IF (tmp == "OK" || tmp == "no error" ) THEN
RETURN -1, SFMT("HTTP request status description: %1 ",tmp)
END IF
LET result = http_resp.getTextResponse()
CATCH
RETURN -2, SFMT("HTTP request error: STATUS=%1 (%2)",STATUS,SQLCA.sqlerrd[2])
END TRY
RETURN 0, result
END FUNCTION
+19 -19
View File
@@ -1,19 +1,19 @@
FUNCTION cuentas()
DEFINE kcuenta VARCHAR(14),
kdescripcion CHAR(60),
cuentas ui.ComboBox
LET cuentas = ui.combobox.forname("formonly.xcuenta")
DECLARE busca_cuenta CURSOR FOR
SELECT RTRIM(a.cuenta_no),RTRIM(a.descripcion)+'('+RTRIM(a.cuenta_no)+')'
FROM cgtb00001 a
WHERE a.nivel > 2 AND a.cuenta_no LIKE '7%' AND a.status_t IS NULL
ORDER BY a.descripcion
CALL cuentas.clear()
FOREACH busca_cuenta INTO kcuenta,kdescripcion
CALL cuentas.additem(kcuenta,kdescripcion)
END FOREACH
END FUNCTION
FUNCTION cuentas()
DEFINE kcuenta VARCHAR(14),
kdescripcion CHAR(60),
cuentas ui.ComboBox
LET cuentas = ui.combobox.forname("formonly.xcuenta")
DECLARE busca_cuenta CURSOR FOR
SELECT RTRIM(a.cuenta_no),RTRIM(a.descripcion)+'('+RTRIM(a.cuenta_no)+')'
FROM cgtb00001 a
WHERE a.nivel > 2 AND a.cuenta_no LIKE '7%' AND a.status_t IS NULL
ORDER BY a.descripcion
CALL cuentas.clear()
FOREACH busca_cuenta INTO kcuenta,kdescripcion
CALL cuentas.additem(kcuenta,kdescripcion)
END FOREACH
END FUNCTION
+18
View File
@@ -66,6 +66,12 @@ FUNCTION generafile(documento_encabezado,documento_Detalle,xsucid,xbodega,xopera
phash,ohash VARCHAR(10)
LET ohash = NULL
LET ruta_originales= fgl_getenv("RUTA_XML_ORIGINALES")
# Studio quita la barra final de las variables tipo dir: asegurarla
IF ruta_originales.getLength() > 0 THEN
IF ruta_originales.subString(ruta_originales.getLength(), ruta_originales.getLength()) <> "/" AND ruta_originales.subString(ruta_originales.getLength(), ruta_originales.getLength()) <> "\\" THEN
LET ruta_originales = ruta_originales, "/"
END IF
END IF
#LET ruta_originales = '.\\filesXML\\ncf31\\'
# LET documento_encabezado.nombreFile ='130337391E310000000001.XML'
@@ -159,6 +165,12 @@ FUNCTION generafile(documento_encabezado,documento_Detalle,xsucid,xbodega,xopera
IF r_documento_encabezado.tipoEcf = '32' AND montoFactura < 250000 THEN
LET ruta_firmados = fgl_getenv("RUTA_XML_FIRMADOS")
# Studio quita la barra final de las variables tipo dir: asegurarla
IF ruta_firmados.getLength() > 0 THEN
IF ruta_firmados.subString(ruta_firmados.getLength(), ruta_firmados.getLength()) <> "/" AND ruta_firmados.subString(ruta_firmados.getLength(), ruta_firmados.getLength()) <> "\\" THEN
LET ruta_firmados = ruta_firmados, "/"
END IF
END IF
CALL firmadocumento(nombreFile)
LET filexml = ruta_firmados CLIPPED,os.Path.baseName(nombreFile)
@@ -851,6 +863,12 @@ FUNCTION anularencf(documento_anular)
LET ruta_originales= fgl_getenv("RUTA_XML_ORIGINALES")
# Studio quita la barra final de las variables tipo dir: asegurarla
IF ruta_originales.getLength() > 0 THEN
IF ruta_originales.subString(ruta_originales.getLength(), ruta_originales.getLength()) <> "/" AND ruta_originales.subString(ruta_originales.getLength(), ruta_originales.getLength()) <> "\\" THEN
LET ruta_originales = ruta_originales, "/"
END IF
END IF
#LET ruta_originales = '.\\filesXML\\ncf31\\'
# LET documento_encabezado.nombreFile ='130337391E310000000001.XML'
LET nombreFile = ruta_originales,documento_anular.nombreFile CLIPPED
+17
View File
@@ -0,0 +1,17 @@
FUNCTION gerentesmarcas()
DEFINE pgerentes ui.combobox,
knum_emp SMALLINT,knombre VARCHAR(100)
LET pgerentes = ui.combobox.forname("formonly.num_emp")
CALL pgerentes.clear()
DECLARE depto CURSOR FOR
SELECT a.num_emp, rtrim(a.nom1_emp)+' '+rtrim(a.apell1_emp) FROM adtb00003 a
WHERE a.gerentemarcas = 'SI' AND
a.status_t is null
FOREACH depto INTO knum_emp,knombre
CALL pgerentes.additem(knum_emp,knombre)
END FOREACH
END FUNCTION
+53 -53
View File
@@ -1,54 +1,54 @@
FUNCTION busca_departamento()
DEFINE pdepartamento ui.combobox,
kdepartamento SMALLINT,kdescripcion CHAR(30)
LET pdepartamento = ui.combobox.forname("formonly.departamento")
CALL pdepartamento.clear()
DECLARE pagar CURSOR FOR
SELECT departamento, nom_dpto FROM adtb00001
WHERE status_t is null
ORDER BY nom_dpto
FOREACH pagar INTO kdepartamento,kdescripcion
CALL pdepartamento.additem(kdepartamento,kdescripcion)
END FOREACH
END FUNCTION
{
FUNCTION departamento_user()
DEFINE departamentos_user DYNAMIC ARRAY OF RECORD
departamento INT,
titulo VARCHAR(100)
END RECORD
DECLARE busca_dep CURSOR FOR
SELECT '0',a.departamento,a.nom_dpto,a.tipo_departamento
FROM adtb00001 a WHERE a.status_t IS NULL
ORDER BY a.nom_dpto
LET idx = 1
FOREACH busca_dep INTO arr_departamentos[idx].*
LET idx = idx + 1
END FOREACH
END FUNCTION
}
FUNCTION departamento_user(xuser)
DEFINE pdepartamento ui.combobox,
kdepartamento SMALLINT,kdescripcion CHAR(30),
xuser STRING
LET pdepartamento = ui.combobox.forname("formonly.departamento")
CALL pdepartamento.clear()
DECLARE depto CURSOR FOR
SELECT a.departamento, a.nom_dpto FROM adtb00001 a,adtb00056 b
WHERE a.departamento = b.departamento_visualiza AND
b.usuario = xuser AND
a.status_t is null
ORDER BY nom_dpto
FOREACH depto INTO kdepartamento,kdescripcion
CALL pdepartamento.additem(kdepartamento,kdescripcion)
END FOREACH
FUNCTION busca_departamento()
DEFINE pdepartamento ui.combobox,
kdepartamento SMALLINT,kdescripcion CHAR(30)
LET pdepartamento = ui.combobox.forname("formonly.departamento")
CALL pdepartamento.clear()
DECLARE pagar CURSOR FOR
SELECT departamento, nom_dpto FROM adtb00001
WHERE status_t is null
ORDER BY nom_dpto
FOREACH pagar INTO kdepartamento,kdescripcion
CALL pdepartamento.additem(kdepartamento,kdescripcion)
END FOREACH
END FUNCTION
{
FUNCTION departamento_user()
DEFINE departamentos_user DYNAMIC ARRAY OF RECORD
departamento INT,
titulo VARCHAR(100)
END RECORD
DECLARE busca_dep CURSOR FOR
SELECT '0',a.departamento,a.nom_dpto,a.tipo_departamento
FROM adtb00001 a WHERE a.status_t IS NULL
ORDER BY a.nom_dpto
LET idx = 1
FOREACH busca_dep INTO arr_departamentos[idx].*
LET idx = idx + 1
END FOREACH
END FUNCTION
}
FUNCTION departamento_user(xuser)
DEFINE pdepartamento ui.combobox,
kdepartamento SMALLINT,kdescripcion CHAR(30),
xuser STRING
LET pdepartamento = ui.combobox.forname("formonly.departamento")
CALL pdepartamento.clear()
DECLARE depto CURSOR FOR
SELECT a.departamento, a.nom_dpto FROM adtb00001 a,adtb00056 b
WHERE a.departamento = b.departamento_visualiza AND
b.usuario = xuser AND
a.status_t is null
ORDER BY nom_dpto
FOREACH depto INTO kdepartamento,kdescripcion
CALL pdepartamento.additem(kdepartamento,kdescripcion)
END FOREACH
END FUNCTION
+42 -42
View File
@@ -1,42 +1,42 @@
FUNCTION maquinas(xdepartamento)
DEFINE
kmaquina VARCHAR(14),
kdescripcion CHAR(75),
maquinas ui.ComboBox,
xdepartamento INT
LET maquinas = ui.combobox.forname("formonly.codigo")
IF xdepartamento = -1 THEN
DECLARE busca_maquinas1 CURSOR FOR
SELECT a.codigo,
RTRIM(a.nombre) + '(' + ISNULL(RTRIM(a.codigo_externo), ' ')
+ ')'
FROM irtb00009 a
WHERE a.status_t IS NULL AND a.codigo_externo IS NOT NULL
ORDER BY a.nombre
CALL maquinas.clear()
FOREACH busca_maquinas1 INTO kmaquina, kdescripcion
CALL maquinas.additem(kmaquina, kdescripcion)
END FOREACH
ELSE
DECLARE busca_maquinas2 CURSOR FOR
SELECT a.codigo,
RTRIM(a.nombre) + '(' + ISNULL(RTRIM(a.codigo_externo), ' ')
+ ')'
FROM irtb00009 a
WHERE a.status_t IS NULL AND a.departamento = xdepartamento
AND a.codigo_externo IS NOT NULL
ORDER BY a.nombre
CALL maquinas.clear()
FOREACH busca_maquinas2 INTO kmaquina, kdescripcion
CALL maquinas.additem(kmaquina, kdescripcion)
END FOREACH
END IF
END FUNCTION
FUNCTION maquinas(xdepartamento)
DEFINE
kmaquina VARCHAR(14),
kdescripcion CHAR(75),
maquinas ui.ComboBox,
xdepartamento INT
LET maquinas = ui.combobox.forname("formonly.codigo")
IF xdepartamento = -1 THEN
DECLARE busca_maquinas1 CURSOR FOR
SELECT a.codigo,
RTRIM(a.nombre) + '(' + ISNULL(RTRIM(a.codigo_externo), ' ')
+ ')'
FROM irtb00009 a
WHERE a.status_t IS NULL AND a.codigo_externo IS NOT NULL
ORDER BY a.nombre
CALL maquinas.clear()
FOREACH busca_maquinas1 INTO kmaquina, kdescripcion
CALL maquinas.additem(kmaquina, kdescripcion)
END FOREACH
ELSE
DECLARE busca_maquinas2 CURSOR FOR
SELECT a.codigo,
RTRIM(a.nombre) + '(' + ISNULL(RTRIM(a.codigo_externo), ' ')
+ ')'
FROM irtb00009 a
WHERE a.status_t IS NULL AND a.departamento = xdepartamento
AND a.codigo_externo IS NOT NULL
ORDER BY a.nombre
CALL maquinas.clear()
FOREACH busca_maquinas2 INTO kmaquina, kdescripcion
CALL maquinas.additem(kmaquina, kdescripcion)
END FOREACH
END IF
END FUNCTION
+15
View File
@@ -55,6 +55,12 @@ FUNCTION procesoEncf(fileporfirmar,ambiente,tiporecepcion,xsucid,xbodega,xoperac
# LET ptipoRecepcion = tiporecepcion
LET ruta_firmados = fgl_getenv("RUTA_XML_FIRMADOS")
# Studio quita la barra final de las variables tipo dir: asegurarla
IF ruta_firmados.getLength() > 0 THEN
IF ruta_firmados.subString(ruta_firmados.getLength(), ruta_firmados.getLength()) <> "/" AND ruta_firmados.subString(ruta_firmados.getLength(), ruta_firmados.getLength()) <> "\\" THEN
LET ruta_firmados = ruta_firmados, "/"
END IF
END IF
LET rutaSemilla = fgl_getenv("RUTA_SEMILLA")
LET rutaCert = fgl_getenv("RUTA_CERT")
@@ -178,6 +184,12 @@ FUNCTION firmadocumento(fileafirmar)
fileafirmar STRING
LET rutaCert = fgl_getenv("RUTA_CERT")
LET ruta_firmados = fgl_getenv("RUTA_XML_FIRMADOS")
# Studio quita la barra final de las variables tipo dir: asegurarla
IF ruta_firmados.getLength() > 0 THEN
IF ruta_firmados.subString(ruta_firmados.getLength(), ruta_firmados.getLength()) <> "/" AND ruta_firmados.subString(ruta_firmados.getLength(), ruta_firmados.getLength()) <> "\\" THEN
LET ruta_firmados = ruta_firmados, "/"
END IF
END IF
# Create DomDocument object
LET doc = xml.DomDocument.Create()
# Notice that whitespaces are significant in cryptography,
@@ -247,6 +259,9 @@ LET ruta_firmados = fgl_getenv("RUTA_XML_FIRMADOS")
# Save document with enveloped signature back to disk
CALL doc.setFeature("format-pretty-print",TRUE)
LET fileafirmar = ruta_firmados CLIPPED,os.Path.baseName(fileafirmar)
# om.XmlWriter escribe en la codificacion del sistema (windows-1252);
# la DGII lo rechaza (codigo 003). Se guarda el firmado en UTF-8.
CALL doc.setXmlEncoding("UTF-8")
CALL doc.save(fileafirmar)
+44 -44
View File
@@ -1,45 +1,45 @@
FUNCTION productos_incluye(tabla1,tabla2,tabla3,tabla4,tabla5,xcriterio,xbodega,xfecha,xseccion,xtramo)
DEFINE tabla1,tabla2,tabla3,tabla4,tabla5,selec,xcriterio STRING,
xbodega,xseccion,xtramo SMALLINT,
xfecha DATE,
xid INT,
xfech_crea DATETIME YEAR TO MINUTE
DEFINE xitems RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT
END RECORD
LET xfech_crea = CURRENT
LET selec = "SELECT DISTINCT a.cod_n,a.cod_Grupo,a.cod_tipo,a.cod_sec FROM ",tabla1 CLIPPED," AS a ",
" INNER JOIN ",tabla5 CLIPPED ," 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 a.status_t IS NULL AND b.status_t is NULL AND a.control_existencia = 'SI' ",
" WHERE b.bodega = ",xbodega USING "<<<", " and ",xcriterio CLIPPED
PREPARE comando FROM selec
DECLARE busca_item CURSOR FOR comando
LET selec = "SELECT DISTINCT a.cod_n FROM ",tabla3 CLIPPED,
" AS a WHERE a.cod_n = ? AND a.cod_grupo = ? AND a.cod_tipo = ? AND a.cod_sec = ? AND a.fecha = ? AND a.bodega = ?"
PREPARE comando1 FROM selec
LET selec = "INSERT INTO ",tabla3 CLIPPED," (idtrx,fecha,bodega,cod_Seccion,cod_tramo,cod_n,cod_grupo,cod_tipo,cod_Sec,cantidad,us_crea,fech_crea) ",
" VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"
PREPARE inserta FROM selec
LET selec = "SELECT MAX(a.idtrx) FROM ",tabla3 CLIPPED, " AS a WHERE a.fecha =? AND a.bodega =? "
PREPARE busca_max FROM selec
EXECUTE busca_max INTO xid USING xfecha,xbodega
FOREACH busca_item INTO xitems.*
EXECUTE comando1 USING xitems.cod_n,xitems.cod_grupo,xitems.cod_tipo,xitems.cod_sec,xfecha,xbodega
IF STATUS = NOTFOUND THEN
EXECUTE inserta USING xid,xfecha,xbodega,xseccion,xtramo,xitems.cod_n,xitems.cod_grupo,xitems.cod_tipo,
xitems.cod_sec,"0","INCLUYE",xfech_crea
LET xid = xid + 1
END IF
END FOREACH
FUNCTION productos_incluye(tabla1,tabla2,tabla3,tabla4,tabla5,xcriterio,xbodega,xfecha,xseccion,xtramo)
DEFINE tabla1,tabla2,tabla3,tabla4,tabla5,selec,xcriterio STRING,
xbodega,xseccion,xtramo SMALLINT,
xfecha DATE,
xid INT,
xfech_crea DATETIME YEAR TO MINUTE
DEFINE xitems RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT
END RECORD
LET xfech_crea = CURRENT
LET selec = "SELECT DISTINCT a.cod_n,a.cod_Grupo,a.cod_tipo,a.cod_sec FROM ",tabla1 CLIPPED," AS a ",
" INNER JOIN ",tabla5 CLIPPED ," 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 a.status_t IS NULL AND b.status_t is NULL AND a.control_existencia = 'SI' ",
" WHERE b.bodega = ",xbodega USING "<<<", " and ",xcriterio CLIPPED
PREPARE comando FROM selec
DECLARE busca_item CURSOR FOR comando
LET selec = "SELECT DISTINCT a.cod_n FROM ",tabla3 CLIPPED,
" AS a WHERE a.cod_n = ? AND a.cod_grupo = ? AND a.cod_tipo = ? AND a.cod_sec = ? AND a.fecha = ? AND a.bodega = ?"
PREPARE comando1 FROM selec
LET selec = "INSERT INTO ",tabla3 CLIPPED," (idtrx,fecha,bodega,cod_Seccion,cod_tramo,cod_n,cod_grupo,cod_tipo,cod_Sec,cantidad,us_crea,fech_crea) ",
" VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"
PREPARE inserta FROM selec
LET selec = "SELECT MAX(a.idtrx) FROM ",tabla3 CLIPPED, " AS a WHERE a.fecha =? AND a.bodega =? "
PREPARE busca_max FROM selec
EXECUTE busca_max INTO xid USING xfecha,xbodega
FOREACH busca_item INTO xitems.*
EXECUTE comando1 USING xitems.cod_n,xitems.cod_grupo,xitems.cod_tipo,xitems.cod_sec,xfecha,xbodega
IF STATUS = NOTFOUND THEN
EXECUTE inserta USING xid,xfecha,xbodega,xseccion,xtramo,xitems.cod_n,xitems.cod_grupo,xitems.cod_tipo,
xitems.cod_sec,"0","INCLUYE",xfech_crea
LET xid = xid + 1
END IF
END FOREACH
END FUNCTION
+17 -17
View File
@@ -1,17 +1,17 @@
FUNCTION cseccion(almacen)
DEFINE kcod_seccion,almacen SMALLINT,
kdescripcion CHAR(30),
pseccion ui.ComboBox
LET pseccion = ui.combobox.forname("formonly.seccion")
DECLARE busca_sec CURSOR FOR
SELECT a.cod_seccion,a.descripcion FROM Intb00010 a
WHERE a.cod_bodega = almacen
CALL pseccion.clear()
FOREACH busca_sec INTO kcod_seccion,kdescripcion
CALL pseccion.additem(kcod_seccion,kdescripcion)
END FOREACH
CALL pseccion.additem(99,"TODAS")
END FUNCTION
FUNCTION cseccion(almacen)
DEFINE kcod_seccion,almacen SMALLINT,
kdescripcion CHAR(30),
pseccion ui.ComboBox
LET pseccion = ui.combobox.forname("formonly.seccion")
DECLARE busca_sec CURSOR FOR
SELECT a.cod_seccion,a.descripcion FROM Intb00010 a
WHERE a.cod_bodega = almacen
CALL pseccion.clear()
FOREACH busca_sec INTO kcod_seccion,kdescripcion
CALL pseccion.additem(kcod_seccion,kdescripcion)
END FOREACH
CALL pseccion.additem(99,"TODAS")
END FUNCTION
+18 -18
View File
@@ -1,18 +1,18 @@
FUNCTION ctramo(almacen,seccion)
DEFINE kcod_tramo,almacen,seccion SMALLINT,kdescripcion CHAR(30),
ptramo ui.ComboBox
LET ptramo = ui.combobox.forname("formonly.tramo")
DECLARE busca_tramo CURSOR FOR
SELECT a.cod_tramo,a.descripcion FROM Intb00043 a
WHERE a.cod_bodega = almacen and a.cod_Seccion = seccion
CALL ptramo.clear()
FOREACH busca_tramo INTO kcod_tramo,kdescripcion
DISPLAY "tramos ",kcod_tramo,kdescripcion," ",almacen," ",seccion
CALL ptramo.additem(kcod_tramo,kdescripcion)
END FOREACH
CALL ptramo.additem(99,"TODOS")
END FUNCTION
FUNCTION ctramo(almacen,seccion)
DEFINE kcod_tramo,almacen,seccion SMALLINT,kdescripcion CHAR(30),
ptramo ui.ComboBox
LET ptramo = ui.combobox.forname("formonly.tramo")
DECLARE busca_tramo CURSOR FOR
SELECT a.cod_tramo,a.descripcion FROM Intb00043 a
WHERE a.cod_bodega = almacen and a.cod_Seccion = seccion
CALL ptramo.clear()
FOREACH busca_tramo INTO kcod_tramo,kdescripcion
DISPLAY "tramos ",kcod_tramo,kdescripcion," ",almacen," ",seccion
CALL ptramo.additem(kcod_tramo,kdescripcion)
END FOREACH
CALL ptramo.additem(99,"TODOS")
END FUNCTION
+5 -1
View File
@@ -58,6 +58,7 @@ FUNCTION impresion_fact(x,z)
unidad_med CHAR(3),
cantidad LIKE vetb00003.cantidad,
precio LIKE vetb00003.precio,
cantidad_2 DEC(12,2), -- igual que arr_disp de veprcs001 (si no, error -1260)
monto_fact DECIMAl(10,2)
END RECORD,
HANDLER om.SaxDocumentHandler,
@@ -67,7 +68,10 @@ FUNCTION impresion_fact(x,z)
START REPORT factura TO XML HANDLER HANDLER
FOR idx = 1 TO z.getLength()
OUTPUT TO REPORT factura(x.*,z[idx].*)
-- el reporte no lleva cantidad_2: se pasan los campos uno a uno
OUTPUT TO REPORT factura(x.*,z[idx].cod_n,z[idx].cod_grupo,z[idx].cod_tipo,z[idx].cod_sec,
z[idx].descrip_esp,z[idx].unidad_med,z[idx].cantidad,z[idx].precio,
z[idx].monto_fact)
END FOR
FINISH REPORT factura
END FUNCTION
File diff suppressed because it is too large Load Diff
+20 -5
View File
@@ -97,7 +97,9 @@ DEFINE hora CHAR(5),
muestraQR,ncffechaVencimiento BOOLEAN,
pubicacion LIKE prtb00012.ubicacion,
cemail VARCHAR(200),
chbruto,chdescuento,chsubtotal,chitbis,chneto VARCHAR(100)
chbruto,chdescuento,chsubtotal,chitbis,chneto VARCHAR(100),
vcod_comp VARCHAR(5),
qrpath STRING
DEFINE buf base.StringBuffer
@@ -120,7 +122,11 @@ FORMAT
SELECT a.telefono,a.telex,a.num_rnc INTO cliente_bas.telefono,cliente_bas.telex,rnc FROM vetb00004 a
WHERE a.tipo_cliente = x.tipo_cliente AND a.sec_cliente = x.sec_cliente
SELECT a.* INTO p_companias.* FROM companias a WHERE a.cod_comp = x.cod_cia
# Solo nombre y rnc (telefono/fax/direccion1 se llenan abajo desde sucursales).
# a.* fallaba con -1213 en SQL Server; cod_comp es CHAR, se compara como texto.
LET vcod_comp = x.cod_cia USING "<<<<<"
SELECT a.nombre, a.rnc INTO p_companias.nombre, p_companias.rnc
FROM companias a WHERE RTRIM(LTRIM(a.cod_comp)) = vcod_comp
SELECT a.sucid,b.sucnombre,b.direccion,c.nombre_provincia,b.telefono,b.fax,b.rnc,a.bodega
INTO localidad,sucnombre,direccion_sucursal,p_companias.direccion1,
@@ -158,8 +164,17 @@ DISPLAY "en impresion: ",x.factura, " localidad: ",localidad
# DISPLAY "fecha ",chfechafirmadigital
CALL sus_caracter(xhash CLIPPED) RETURNING rhash
# Ruta del QR segun el ambiente DGII de la empresa (companias.ambientedgii)
CASE ambiente()
WHEN "produccion"
LET qrpath = "ecf"
WHEN "certificacion"
LET qrpath = "certecf"
OTHERWISE
LET qrpath = "testecf"
END CASE
IF pcodigodgii <> '32' THEN
LET dataqrcode ='https://ecf.dgii.gov.do/ecf/consultatimbre?rncemisor=',p_companias.rnc CLIPPED,
LET dataqrcode ='https://ecf.dgii.gov.do/',qrpath,'/consultatimbre?rncemisor=',p_companias.rnc CLIPPED,
"&rnccomprador=",rnc CLIPPED,"&encf=E",pcodigodgii CLIPPED,pncf USING "&&&&&&&&&&",
"&fechaemision=",x.fecha_factura USING 'dd-mm-yyyy',
"&montototal=",ineto USING "<<<<<<<<#.##",
@@ -167,7 +182,7 @@ DISPLAY "en impresion: ",x.factura, " localidad: ",localidad
"&codigoseguridad=",rhash CLIPPED
END IF
IF pcodigodgii = '32' AND ineto > 250000 THEN
LET dataqrcode ='https://ecf.dgii.gov.do/ecf/consultatimbre?rncemisor=',p_companias.rnc CLIPPED,
LET dataqrcode ='https://ecf.dgii.gov.do/',qrpath,'/consultatimbre?rncemisor=',p_companias.rnc CLIPPED,
"&rnccomprador=",rnc CLIPPED,"&encf=E",pcodigodgii CLIPPED,pncf USING "&&&&&&&&&&",
"&fechaemision=",x.fecha_factura USING 'dd-mm-yyyy',
"&montototal=",ineto USING "<<<<<<<<#.##",
@@ -175,7 +190,7 @@ DISPLAY "en impresion: ",x.factura, " localidad: ",localidad
"&codigoseguridad=",rhash CLIPPED
END IF
IF pcodigodgii = '32' AND ineto < 250000 THEN
LET dataqrcode ='https://fc.dgii.gov.do/ecf/consultatimbrefc?rncemisor=',p_companias.rnc CLIPPED,
LET dataqrcode ='https://fc.dgii.gov.do/',qrpath,'/consultatimbrefc?rncemisor=',p_companias.rnc CLIPPED,
"&encf=E",pcodigodgii CLIPPED,pncf USING "&&&&&&&&&&",
"&montototal=",ineto USING "<<<<<<<<#.##",
"&codigoseguridad=",rhash CLIPPED
+6 -2
View File
@@ -12,7 +12,9 @@ GRID
Condicion de Pago [f0]
Descripcion [f001 ]
Dias para Pagar [f02]
Defecto [df ]
Defecto [df ]
Codigo DGII [fcod]
Titulo DGII [ftit ]
[a]
@@ -34,7 +36,9 @@ a = vetb00012.status_t, noentry;
f003 = vetb00012.us_crea, noentry;
f004 = vetb00012.fech_crea, noentry;
f005 = vetb00012.us_mod, noentry;
f006 = vetb00012.fech_mod, noentry;
f006 = vetb00012.fech_mod, noentry;
fcod = vetb00012.codigo_dgii,autonext;
ftit = vetb00012.titulo_dgii,upshift;
end
INSTRUCTIONS
+2
View File
@@ -11,6 +11,7 @@ GRID
{
Codigo Ciudad [f9 ]
Descripcion [f001 ]
Municipio DGII [fmun ]
[a]
@@ -31,6 +32,7 @@ f002 = vetb00016.us_crea, noentry;
f003 = vetb00016.fech_crea, noentry;
f004 = vetb00016.us_mod, noentry;
f005 = vetb00016.fech_mod, noentry;
fmun = vetb00016.idmunicipio;
end
INSTRUCTIONS
+2 -2
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ManagedForm fileVersion="31400" gstVersion="3140a" name="managedform" uid="{1165b012-0dbd-4b0e-af31-def51a20b294}">
<ManagedForm databaseName="smarmotech" fileVersion="40100" gstVersion="60003" name="managedform" uid="{1165b012-0dbd-4b0e-af31-def51a20b294}">
<AGSettings>
<DynamicProperties version="2"/>
<DynamicProperties version="4"/>
</AGSettings>
<Record name="sconduces" uid="{33f26e10-e419-455c-9bf5-bc433adb3906}">
<RecordField fieldIdRef="4" name="fecha" uid="{53913608-fe4a-4a07-94e6-ef27cab00c51}"/>
+2 -2
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ManagedForm databaseName="marmotech" fileVersion="31400" gstVersion="3140a" name="ManagedForm" uid="{030a7c0e-4f6a-4691-a67e-eb1685960e00}">
<ManagedForm databaseName="smarmotech" fileVersion="40100" gstVersion="60003" name="ManagedForm" uid="{030a7c0e-4f6a-4691-a67e-eb1685960e00}">
<AGSettings>
<DynamicProperties version="2"/>
<DynamicProperties version="4"/>
</AGSettings>
<Record name="record1" uid="{1d7238ec-db46-42d9-a38b-52a2afe98597}">
<RecordField colName="cod_cia" defaultValue="1" fieldIdRef="0" name="cod_cia" sqlTabName="formonly" uid="{28bd7c4f-338c-468d-8cc3-50c9f87b346b}"/>
+23 -21
View File
@@ -1,22 +1,24 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ManagedForm databaseName="smarmotech" gstVersion="22800" name="ManagedForm" uid="{91648dc0-990a-470a-9196-0c07da7ff0b4}">
<AGSettings/>
<Record additionalTables="" joinLeft="" joinOperator="" joinRight="" name="s_tipo" order="" uid="{aab12914-0957-4e58-b8a6-3930e72ac9d9}" where="">
<RecordField colName="" fieldIdRef="2" name="codigodgii" sqlTabName="" table_alias_name="" uid="{3686ce20-5c8a-45ce-83c0-b5f2fecfaa6d}"/>
<RecordField colName="" fieldIdRef="3" name="descripcion" sqlTabName="" table_alias_name="" uid="{82bbe993-d07d-4037-a445-2eb6f8ebd121}"/>
<RecordField colName="" fieldIdRef="4" name="fecha_vencimiento" sqlTabName="" table_alias_name="" uid="{d08bb425-6e6c-474b-99f9-e0e1602cdd9f}"/>
</Record>
<Form gridHeight="13" gridWidth="63" name="vefmwd020" text="NCF">
<Grid gridHeight="11" gridWidth="61" name="Grid1" posX="0" posY="0">
<Label gridHeight="1" gridWidth="12" name="Label1" posX="19" posY="1" text="TIPO FACTURA"/>
<Table gridHeight="6" gridWidth="44" name="Table1" posX="7" posY="3" totalRows="5">
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" columnCount="" fieldId="2" gridHeight="1" gridWidth="8" name="codigodgii" posX="0" posY="0" rowCount="" sqlTabName="" stepX="" stepY="" tabIndex="1" table_alias_name="" title="Codigo Dgii" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" columnCount="" fieldId="3" gridHeight="1" gridWidth="20" name="descripcion" posX="8" posY="0" rowCount="" sqlTabName="" stepX="" stepY="" tabIndex="2" table_alias_name="" title="Descripcion" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" columnCount="" fieldId="4" gridHeight="1" gridWidth="12" name="fecha_vencimiento" posX="28" posY="0" rowCount="" sqlTabName="" stepX="" stepY="" tabIndex="3" table_alias_name="" title="Fecha Vencimiento" widget="Edit"/>
</Table>
</Grid>
</Form>
<DiagramLayout>
<![CDATA[AAAAAgAAAEwAewBhAGEAYgAxADIAOQAxADQALQAwADkANQA3AC0ANABlADUAOAAtAGIAOABhADYALQAzADkAMwAwAGUANwAyAGEAYwA5AGQAOQB9QCAAAAgAAAFAIAAACAAAAT9QYk3S8an8AQAAAEwAewA4ADIAYgBiAGUAOQA5ADMALQBkADAANwBkAC0ANAAwADMANwAtAGEANAA0ADUALQAyAGUAYgA2AGYAOABlAGIAZAAxADIAMQB9QCAAAAgAAAFAR5mZpWZmaAAAAAAAAAAAAQAAAEwAewBkADAAOABiAGIANAAyADUALQA2AGUANgBjAC0ANAA3ADQAYgAtADkAOQBmADkALQBlADAAZQAxADYAMAAyAGMAZABkADkAZgB9QCAAAAgAAAFAUDMzO0zMzgAAAAAAAAAAAQAAAEwAewAzADYAOAA2AGMAZQAyADAALQA1AGMAOABhAC0ANAA1AGMAZQAtADgAMwBjADAALQBiADUAZgAyAGYAZQBjAGYAYQBhADYAZAB9QCAAAAgAAAFAPZmZqGZmaAAAAAAAAAAAAQ==]]>
</DiagramLayout>
<?xml version="1.0" encoding="UTF-8" ?>
<ManagedForm databaseName="smarmotech" fileVersion="40100" gstVersion="60003" name="ManagedForm" uid="{91648dc0-990a-470a-9196-0c07da7ff0b4}">
<AGSettings>
<DynamicProperties version="4"/>
</AGSettings>
<Record additionalTables="" joinLeft="" joinOperator="" joinRight="" name="s_tipo" order="" uid="{aab12914-0957-4e58-b8a6-3930e72ac9d9}" where="">
<RecordField colName="" fieldIdRef="2" name="codigodgii" sqlTabName="" table_alias_name="" uid="{3686ce20-5c8a-45ce-83c0-b5f2fecfaa6d}"/>
<RecordField colName="" fieldIdRef="3" name="descripcion" sqlTabName="" table_alias_name="" uid="{82bbe993-d07d-4037-a445-2eb6f8ebd121}"/>
<RecordField colName="" fieldIdRef="4" name="fecha_vencimiento" sqlTabName="" table_alias_name="" uid="{d08bb425-6e6c-474b-99f9-e0e1602cdd9f}"/>
</Record>
<Form gridHeight="13" gridWidth="63" name="vefmwd020" text="NCF">
<Grid gridHeight="11" gridWidth="61" name="Grid1" posX="0" posY="0">
<Label gridHeight="1" gridWidth="12" name="Label1" posX="19" posY="1" text="TIPO FACTURA"/>
<Table gridHeight="6" gridWidth="44" name="Table1" posX="7" posY="3" totalRows="5">
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="2" gridHeight="1" gridWidth="8" name="codigodgii" posX="0" posY="0" sqlTabName="" tabIndex="1" table_alias_name="" title="Codigo Dgii" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="3" gridHeight="1" gridWidth="20" name="descripcion" posX="8" posY="0" sqlTabName="" tabIndex="2" table_alias_name="" title="Descripcion" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="4" gridHeight="1" gridWidth="12" name="fecha_vencimiento" posX="28" posY="0" sqlTabName="" tabIndex="3" table_alias_name="" title="Fecha Vencimiento" widget="Edit"/>
</Table>
</Grid>
</Form>
<DiagramLayout>
<![CDATA[AAAAAgAAAEwAewBhAGEAYgAxADIAOQAxADQALQAwADkANQA3AC0ANABlADUAOAAtAGIAOABhADYALQAzADkAMwAwAGUANwAyAGEAYwA5AGQAOQB9QCAAAAgAAAFAIAAACAAAAT9QYk3S8an8AQ==]]>
</DiagramLayout>
</ManagedForm>
+44
View File
@@ -0,0 +1,44 @@
{
----------------------------------------------------------------------------
PROGRAMA : VEINFORMACION
OBJETIVO : Funcion informacion() de la factura (veprmt001): trae el
transportista del conduce y la direccion/ciudad de la
cotizacion a fact_gral.
Copiada de vefumt001_1.4gl (no se puede enlazar ese archivo
completo porque repite funciones de FUNCIONES_VE/vefumt001).
----------------------------------------------------------------------------
}
GLOBALS
"veprgb000.4gl"
FUNCTION informacion(pconduce,pventas,pbodega,xcotizacion)
DEFINE pconduce INT,
pventas SMALLINT,
pbodega SMALLINT,
codigo_provincia INT,
xcotizacion INT
# TRANSPORTISTA
SELECT DISTINCT a.cod_transp,a.sec_transp,a.cod_tarifa,b.nombre,a.placa
INTO fact_gral.cod_transp,fact_gral.sec_transp,fact_gral.cod_tarifa,fact_gral.nombre_tran,
fact_gral.placa_transp
FROM iptb00006 a,vetb00015 b,vetb00060 c,prtb00012 d
WHERE (a.num_doc = pconduce) AND
(a.cod_mov = c.cod_mov) AND
c.ventas = pventas AND
(a.cod_transp = b.cod_transp AND
a.sec_transp = b.sec_transp) AND
(a.bodega = pbodega) AND
(a.num_oc = d.num_oc) AND
d.cotizacion_no = xcotizacion
SELECT a.direccion_cliente,a.cod_provincia INTO fact_gral.direccion,codigo_provincia
FROM vetb00050 a
WHERE a.cotizacion_no = xcotizacion
SELECT d.nombre_provincia INTO fact_gral.ciudad
FROM vetb00020 d
WHERE d.cod_provincia = codigo_provincia
END FUNCTION
+4 -4
View File
@@ -3681,10 +3681,10 @@ FUNCTION veprmt001()
.IdentificadorExtranjero =
num_rnc CLIPPED
END IF
CALL sus_caracter(
fact_Gral.nombre)
RETURNING documento_encabezado
.razonSocialComprador
# El nombre va normal en el XML (el writer ya escapa & < >);
# sus_caracter() es para URL y dejaba FID%20%3BINM...
LET documento_encabezado.razonSocialComprador =
fact_Gral.nombre
LET documento_encabezado.razonSocialComprador =
documento_encabezado
.razonSocialComprador CLIPPED
+8 -1
View File
@@ -52,7 +52,14 @@ FUNCTION vepcad013()
LET int_flag = false
INPUT BY NAME ciudades.*
BEFORE INPUT NEXT FIELD descripcion
BEFORE INPUT
# id_ciudad es NOT NULL en el form: se propone aqui (antes se calculaba
# solo en AFTER INPUT y el OK se rechazaba con "field requires a value")
SELECT MAX(a.id_ciudad) INTO ciudades.id_ciudad
FROM vetb00016 a WHERE a.id_ciudad < 1000
LET ciudades.id_ciudad = NVL(ciudades.id_ciudad, 0) + 1
DISPLAY BY NAME ciudades.id_ciudad
NEXT FIELD descripcion
## Verifica que el codigo no exista en el catalogo de ciudades. Si existe,
## entonces despliega los datos del registro existente.
+90 -90
View File
@@ -1,91 +1,91 @@
MAIN
DEFINE usuarios,clave,nombre,nombre_v,uscrea,usmod VARCHAR(50),
impresor,ptipo SMALLINT,
pcotizacion,secCliente,psecvend INT,
porc_negocio DEC(8,2),
pneto,subtotal,descuento,itbis DEC(12,2),
pfecha DATE,
fechacrea,fechamod DATETIME YEAR TO MINUTE
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(4) RETURNING impresor
CONNECT to "marmotech" AS "IFMX"
CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave
OPEN WINDOW vefmmt038 WITH FORM "vefmmt038"
INPUT BY NAME pcotizacion,porc_negocio WITHOUT DEFAULTS
AFTER FIELD pcotizacion
IF pcotizacion IS NOT NULL THEN
SET CONNECTION "MSSQL"
SELECT a.tipo_cliente,a.sec_cliente,a.nombre_cliente,
a.total_bruto,a.monto_desc,a.monto_itbi,a.total_neto,
a.sec_vend,CONVERT(CHAR(10), a.fecha,103),b.nom1_emp||' '||b.apell1_emp
INTO ptipo,seccliente,nombre,subtotal,descuento,itbis,pneto,
psecvend,pfecha,nombre_v
FROM vetb00050 a,adtb00003 b
WHERE a.cotizacion_no =pcotizacion AND
a.sec_vend = b.num_emp
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","COTIZACION NO EXISTE","INFO")
NEXT FIELD pcotizacion
END IF
DISPLAY BY NAME ptipo,seccliente,nombre,subtotal,descuento,itbis,pneto,
psecvend,pfecha,nombre_v
LET porc_negocio = 0
LET uscrea = NULL
LET usmod = NULL
LET fechacrea = NULL
LET fechamod = NULL
SELECT a.porc_negocio,a.us_crea,a.fecha_crea,a.us_mod,a.fecha_mod
INTO porc_negocio,uscrea,fechacrea,usmod,fechamod
FROM vetb00086 a
WHERE a.cotizacion_no = pcotizacion
DISPLAY BY NAME porc_negocio,uscrea,fechacrea,usmod,fechamod
END IF
AFTER INPUT
IF INT_FLAG THEN
CALL fgl_winmessage("ERROR","OPERACION ABORTADA","INFO")
EXIT INPUT
ELSE
SELECT a.cotizacion_no FROM vetb00086 a WHERE a.cotizacion_no = pcotizacion
IF STATUS = NOTFOUND THEN
SET CONNECTION "MSSQL"
INSERT INTO vetb00086 (cotizacion_no,porc_negocio,us_crea,fecha_crea)
VALUES (pcotizacion,porc_negocio,usuarios,getdate())
SET CONNECTION "IFMX"
INSERT INTO vetb00086 (cotizacion_no,porc_negocio,us_crea,fecha_crea)
VALUES (pcotizacion,porc_negocio,usuarios,getdate())
ELSE
SET CONNECTION "MSSQL"
UPDATE vetb00086 SET vetb00086.porc_negocio =porc_negocio,
us_mod = usuarios,
fecha_mod = GETDATE()
WHERE cotizacion_no = pcotizacion
SET CONNECTION "IFMX"
UPDATE vetb00086 SET vetb00086.porc_negocio =porc_negocio,
us_mod = usuarios,
fecha_mod = getdate()
WHERE cotizacion_no = pcotizacion
END IF
CALL msg(13)
NEXT FIELD pcotizacion
END IF
END INPUT
LET INT_FLAG = FALSE
CLOSE WINDOW vefmmt038
MAIN
DEFINE usuarios,clave,nombre,nombre_v,uscrea,usmod VARCHAR(50),
impresor,ptipo SMALLINT,
pcotizacion,secCliente,psecvend INT,
porc_negocio DEC(8,2),
pneto,subtotal,descuento,itbis DEC(12,2),
pfecha DATE,
fechacrea,fechamod DATETIME YEAR TO MINUTE
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(4) RETURNING impresor
CONNECT to "marmotech" AS "IFMX" USER usuarios USING clave
CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave
OPEN WINDOW vefmmt038 WITH FORM "vefmmt038"
INPUT BY NAME pcotizacion,porc_negocio WITHOUT DEFAULTS
AFTER FIELD pcotizacion
IF pcotizacion IS NOT NULL THEN
SET CONNECTION "MSSQL"
SELECT a.tipo_cliente,a.sec_cliente,a.nombre_cliente,
a.total_bruto,a.monto_desc,a.monto_itbi,a.total_neto,
a.sec_vend,CONVERT(CHAR(10), a.fecha,103),b.nom1_emp||' '||b.apell1_emp
INTO ptipo,seccliente,nombre,subtotal,descuento,itbis,pneto,
psecvend,pfecha,nombre_v
FROM vetb00050 a,adtb00003 b
WHERE a.cotizacion_no =pcotizacion AND
a.sec_vend = b.num_emp
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","COTIZACION NO EXISTE","INFO")
NEXT FIELD pcotizacion
END IF
DISPLAY BY NAME ptipo,seccliente,nombre,subtotal,descuento,itbis,pneto,
psecvend,pfecha,nombre_v
LET porc_negocio = 0
LET uscrea = NULL
LET usmod = NULL
LET fechacrea = NULL
LET fechamod = NULL
SELECT a.porc_negocio,a.us_crea,a.fecha_crea,a.us_mod,a.fecha_mod
INTO porc_negocio,uscrea,fechacrea,usmod,fechamod
FROM vetb00086 a
WHERE a.cotizacion_no = pcotizacion
DISPLAY BY NAME porc_negocio,uscrea,fechacrea,usmod,fechamod
END IF
AFTER INPUT
IF INT_FLAG THEN
CALL fgl_winmessage("ERROR","OPERACION ABORTADA","INFO")
EXIT INPUT
ELSE
SELECT a.cotizacion_no FROM vetb00086 a WHERE a.cotizacion_no = pcotizacion
IF STATUS = NOTFOUND THEN
SET CONNECTION "MSSQL"
INSERT INTO vetb00086 (cotizacion_no,porc_negocio,us_crea,fecha_crea)
VALUES (pcotizacion,porc_negocio,usuarios,getdate())
SET CONNECTION "IFMX"
INSERT INTO vetb00086 (cotizacion_no,porc_negocio,us_crea,fecha_crea)
VALUES (pcotizacion,porc_negocio,usuarios,getdate())
ELSE
SET CONNECTION "MSSQL"
UPDATE vetb00086 SET vetb00086.porc_negocio =porc_negocio,
us_mod = usuarios,
fecha_mod = GETDATE()
WHERE cotizacion_no = pcotizacion
SET CONNECTION "IFMX"
UPDATE vetb00086 SET vetb00086.porc_negocio =porc_negocio,
us_mod = usuarios,
fecha_mod = getdate()
WHERE cotizacion_no = pcotizacion
END IF
CALL msg(13)
NEXT FIELD pcotizacion
END IF
END INPUT
LET INT_FLAG = FALSE
CLOSE WINDOW vefmmt038
END MAIN
+21 -19
View File
@@ -128,7 +128,8 @@ DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCu
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
LET r_filename = salida
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
LET r_output='SVG'
# antes fijo 'SVG' (en web no se ve): se deja elegir PDF/Excel/pantalla como en veprrp015
CALL seleccionarSalida() RETURNING r_output
LET preview=1
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
@@ -137,7 +138,8 @@ DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCu
### Loop para igualar tipo de venta a la variable ventas.ventas
IF handler IS NOT NULL THEN -- report engine was configured ok
START REPORT plan TO "f:\\master\\dummy"
# antes iba a un archivo fijo del server viejo (f:\master\dummy, error -1322): va al motor de reportes
START REPORT plan TO XML HANDLER handler
FOREACH act2 INTO ventas.ventas,ventas.cod_n,ventas.cod_grupo,ventas.cod_tipo,
ventas.cod_sec,ventas.unidad_acum,ventas.valor_acum,
ventas.descripcion_v,ventas.descrip_esp,ventas.descripcion_p,
@@ -150,23 +152,23 @@ IF handler IS NOT NULL THEN -- report engine was configured ok
#DEVOLUCIONES
LET ventas.valor_dev = 0
LET ventas.cantidad_dev = 0
SELECT SUM(a.cantidad_2),SUM(a.cantidad_2*b.precio)
INTO ventas.cantidad_dev,ventas.valor_dev
FROM iptb00006 a,vetb00003 b,cctb0001 c
WHERE a.cod_n = ventas.cod_n AND
a.cod_Grupo = ventas.cod_Grupo AND
a.cod_tipo = ventas.cod_tipo AND
a.cod_Sec = ventas.cod_Sec AND
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
c.fecha_orig between fecha_inicial and fecha_final AND
a.fact_no = b.factura AND
c.banco = a.cod_mov AND
a.num_doc = c.num_cheque AND
c.tipo_doc = 'NC' AND
a.status_t IS NULL
# num_cheque (texto) y fact_no (texto) se comparaban con columnas INT: SQL Server
# fallaba (-245) con valores no numericos. TRY_CONVERT devuelve NULL en vez de fallar.
SQL
SELECT SUM(a.cantidad_2), SUM(a.cantidad_2 * b.precio)
INTO $ventas.cantidad_dev, $ventas.valor_dev
FROM iptb00006 a, vetb00003 b, cctb00001 c
WHERE a.cod_n = $ventas.cod_n AND a.cod_grupo = $ventas.cod_grupo
AND a.cod_tipo = $ventas.cod_tipo AND a.cod_sec = $ventas.cod_sec
AND 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 c.fecha_orig BETWEEN $fecha_inicial AND $fecha_final
AND TRY_CONVERT(INT, a.fact_no) = b.factura
AND c.banco = a.cod_mov
AND a.num_doc = TRY_CONVERT(INT, c.num_cheque)
AND c.tipo_doc = 'NC'
AND a.status_t IS NULL
END SQL
IF ventas.cantidad_dev IS NULL THEN
LET ventas.cantidad_Dev = 0
END IF
+2 -1
View File
@@ -221,7 +221,8 @@ DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCu
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
LET r_filename = salida
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
LET r_output='SVG'
# antes fijo 'SVG' (en web no se ve): se deja elegir PDF/Excel/pantalla
CALL seleccionarSalida() RETURNING r_output
LET preview=1
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
+213 -213
View File
@@ -1,213 +1,213 @@
IMPORT util
IMPORT os
FUNCTION productosconteo(pdata)
DEFINE xfecha_conteo DATE
DEFINE pdata STRING
DEFINE producto RECORD
codid INT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descripcion VARCHAR(100),
unidad_med VARCHAR(4),
factor_conv FLOAT,
despiece STRING,
existencia DEC(12,5),
consumo DEC(12,5),
costo DEC(12,5),
precio DEC(12,2),
ordenes DEC(12,5),
despachado DEC(12,5),
desglose VARCHAR(1),
reservada DEC(12,5),
disponible DEC(12,5),
transito DEC(12,5),
dias SMALLINT,
fecha CHAR(10),
fecha_conteo CHAR(10)
END RECORD
DEFINE existencia RECORD
codid INT,
bodega SMALLINT,
descripcion_bodega VARCHAR(100),
cantidad FLOAT,
cod_seccion INT,cod_tramo INT,cod_fila INT,cod_pos,
fecha DATE
END RECORD
DEFINE p RECORD
credenciales RECORD
usuario,clave,tipo_inventario VARCHAR(50),
codn INT
END RECORD,
productos DYNAMIC ARRAY OF RECORD
codid INT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descripcion VARCHAR(100),
unidad_med VARCHAR(4),
factor_conv FLOAT,
despiece STRING,
existencia DEC(12,5),
consumo DEC(12,5),
costo DEC(12,5),
precio DEC(12,2),
ordenes DEC(12,5),
despachado DEC(12,5),
desglose VARCHAR(1),
reservada DEC(12,5),
disponible DEC(12,5),
transito DEC(12,5),
dias SMALLINT,
fecha CHAR(10),
fecha_conteo CHAR(10)
END RECORD ,
existencia DYNAMIC ARRAY OF RECORD
codid INT,
bodega SMALLINT,
descripcion_bodega VARCHAR(100),
cantidad FLOAT,
cod_seccion INT,cod_tramo INT,cod_fila INT,cod_pos,
fecha DATE
END RECORD,
mensajes RECORD
cod_msg INT,
descripcion STRING
END RECORD
END RECORD,
i int,
selec,s1 STRING,
fecha,fecha_ini DATE
CALL util.JSON.parse(pdata,p)
IF STATUS < 0 THEN
LET p.mensajes.cod_msg=STATUS
LET p.mensajes.descripcion = 'ERROR EN CONEXION ',SQLCA.sqlerrm
RETURN util.JSON.stringify(p)
END IF
# DISPLAY "productos ",p.credenciales.usuario," ",p.credenciales.clave," ",p.credenciales.tipo_inventario
CONNECT TO "smarmotech" USER p.credenciales.usuario USING p.credenciales.clave
IF STATUS < 0 THEN
LET p.mensajes.cod_msg=STATUS
LET p.mensajes.descripcion = 'ERROR EN CONEXION ',SQLCA.sqlerrm
DISCONNECT CURRENT
RETURN util.JSON.stringify(p)
END IF
LET fecha = TODAY
LET fecha_ini = fecha - 90
IF p.credenciales.tipo_inventario = "productos" THEN
SELECT a.fecha_conteo INTO xfecha_conteo FROM intb00044 a
WHERE a.tipo_inventario = tipo_inventario AND a.disponible = "SI"
DISPLAY "ESTOY PRODUCTOS",p.credenciales.codn
LET selec =
"SELECT a.codid,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descrip_esp,a.unidad_med,ISNULL(d.factor_conv,1),b.cod_n,
'0','0', '0','0','0','0',a.desglose ",
" FROM iptb00002 a,iptb00001 d INNER JOIN intb00015 e ON e.cod_n = d.cod_n and
e.cod_grupo = d.cod_grupo and e.cod_tipo = d.cod_tipo and e.cod_sec = d.cod_sec and
e.estado = 'Pendiente'
LEFT OUTER JOIN iptb00027 b ON d.cod_n = b.cod_n and
d.cod_grupo = b.cod_grupo and d.cod_tipo = b.cod_tipo and d.cod_sec = b.cod_sec
where ",
" (a.cod_n = d.cod_n and a.cod_grupo = d.cod_grupo and a.cod_tipo = d.cod_tipo and ",
" a.cod_sec = d.cod_sec) AND a.status_t IS NULL AND ",
"a.control_existencia='SI' AND e.semana_del = (SELECT MIN (a.semana_del) FROM intb00015 a WHERE semana_del >= GETDATE())",
" ORDER BY a.codid "
LET s1 =
"SELECT a.codid,b.bodega,c.descripcion,0"{ISNULL(SUM(b.cantidad_2),0)},",d.cod_seccion,d.cod_tramo,d.cod_fila,d.cod_pos
FROM iptb00006 b,iptb00002 a INNER JOIN intb00015 e ON e.cod_n = a.cod_n and
e.cod_grupo = a.cod_grupo and e.cod_tipo = a.cod_tipo and e.cod_sec = a.cod_sec and
e.estado='Pendiente' ,intb00009 c,iptb00062 d
WHERE (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 ",
" and (d.cod_n = a.cod_n and d.cod_grupo = a.cod_grupo and d.cod_tipo = a.cod_tipo and d.cod_Sec = a.cod_sec) ",
" and ",
"a.control_existencia='SI' AND a.dispositivo_movil='SI' and b.bodega = c.cod_bodega ",
" group by a.codid,b.bodega,c.descripcion,d.cod_seccion,d.cod_tramo,d.cod_fila,d.cod_pos ",
" having SUM(b.cantidad_2) > 0 "
END IF
PREPARE comando FROM selec
DECLARE c2 CURSOR FOR comando
LET i = 1
FOREACH c2 INTO producto.*
IF producto.cod_n IS NOT null THEN
IF p.credenciales.tipo_inventario = 'productos' THEN
LET producto.costo=0
# CALL disponibles(producto.cod_n,producto.cod_grupo,producto.cod_tipo,producto.cod_sec,TODAY)
# RETURNING producto.ordenes,producto.despachado,producto.transito,producto.existencia,
# producto.reservada
LET producto.disponible = producto.existencia - (producto.ordenes+producto.despachado+producto.reservada)
IF producto.disponible IS NULL THEN
LET producto.disponible=0
END IF
# DESPIECE
IF producto.despiece IS NULL THEN
LET producto.despiece = 'NO'
ELSE
LET producto.despiece = 'SI'
END IF
END IF
IF producto.consumo < 0 THEN
LET producto.consumo = producto.consumo * -1
END IF
IF producto.consumo > 0 THEN
LET producto.dias =(producto.disponible/ producto.consumo) * 90
ELSE
LET producto.dias=0
END IF
IF producto.descripcion IS NULL THEN
LET producto.descripcion = "NO TIENE"
END IF
IF producto.unidad_med IS NULL THEN
LET producto.unidad_med='UD'
END IF
LET producto.fecha=TODAY USING "dd/mm/yyyy"
LET producto.fecha_conteo = xfecha_conteo
LET p.productos[i].* = producto.*
LET i = i + 1
END IF
END FOREACH
DISPLAY "NUMERO DE PRODUCTOS ",i
LET i = 1
PREPARE comando2 FROM s1
DECLARE c3 CURSOR FOR comando2
FOREACH c3 INTO existencia.*
IF existencia.cantidad IS NOT NULL THEN
IF existencia.codid > 0 THEN
LET existencia.fecha = today
LET p.existencia[i].* = existencia.*
IF p.existencia[i].cantidad IS NULL THEN
LET p.existencia[i].cantidad=0
END IF
LET i = i+1
END IF
END IF
END FOREACH
DISPLAY "NUMERO DE PRODUCTOS EXISTENCIA ",i
DISCONNECT CURRENT
RETURN util.JSON.stringify(p)
END FUNCTION
IMPORT util
IMPORT os
FUNCTION productosconteo(pdata)
DEFINE xfecha_conteo DATE
DEFINE pdata STRING
DEFINE producto RECORD
codid INT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descripcion VARCHAR(100),
unidad_med VARCHAR(4),
factor_conv FLOAT,
despiece STRING,
existencia DEC(12,5),
consumo DEC(12,5),
costo DEC(12,5),
precio DEC(12,2),
ordenes DEC(12,5),
despachado DEC(12,5),
desglose VARCHAR(1),
reservada DEC(12,5),
disponible DEC(12,5),
transito DEC(12,5),
dias SMALLINT,
fecha CHAR(10),
fecha_conteo CHAR(10)
END RECORD
DEFINE existencia RECORD
codid INT,
bodega SMALLINT,
descripcion_bodega VARCHAR(100),
cantidad FLOAT,
cod_seccion INT,cod_tramo INT,cod_fila INT,cod_pos,
fecha DATE
END RECORD
DEFINE p RECORD
credenciales RECORD
usuario,clave,tipo_inventario VARCHAR(50),
codn INT
END RECORD,
productos DYNAMIC ARRAY OF RECORD
codid INT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descripcion VARCHAR(100),
unidad_med VARCHAR(4),
factor_conv FLOAT,
despiece STRING,
existencia DEC(12,5),
consumo DEC(12,5),
costo DEC(12,5),
precio DEC(12,2),
ordenes DEC(12,5),
despachado DEC(12,5),
desglose VARCHAR(1),
reservada DEC(12,5),
disponible DEC(12,5),
transito DEC(12,5),
dias SMALLINT,
fecha CHAR(10),
fecha_conteo CHAR(10)
END RECORD ,
existencia DYNAMIC ARRAY OF RECORD
codid INT,
bodega SMALLINT,
descripcion_bodega VARCHAR(100),
cantidad FLOAT,
cod_seccion INT,cod_tramo INT,cod_fila INT,cod_pos,
fecha DATE
END RECORD,
mensajes RECORD
cod_msg INT,
descripcion STRING
END RECORD
END RECORD,
i int,
selec,s1 STRING,
fecha,fecha_ini DATE
CALL util.JSON.parse(pdata,p)
IF STATUS < 0 THEN
LET p.mensajes.cod_msg=STATUS
LET p.mensajes.descripcion = 'ERROR EN CONEXION ',SQLCA.sqlerrm
RETURN util.JSON.stringify(p)
END IF
# DISPLAY "productos ",p.credenciales.usuario," ",p.credenciales.clave," ",p.credenciales.tipo_inventario
CONNECT TO "smarmotech" USER p.credenciales.usuario USING p.credenciales.clave
IF STATUS < 0 THEN
LET p.mensajes.cod_msg=STATUS
LET p.mensajes.descripcion = 'ERROR EN CONEXION ',SQLCA.sqlerrm
DISCONNECT CURRENT
RETURN util.JSON.stringify(p)
END IF
LET fecha = TODAY
LET fecha_ini = fecha - 90
IF p.credenciales.tipo_inventario = "productos" THEN
SELECT a.fecha_conteo INTO xfecha_conteo FROM intb00044 a
WHERE a.tipo_inventario = tipo_inventario AND a.disponible = "SI"
DISPLAY "ESTOY PRODUCTOS",p.credenciales.codn
LET selec =
"SELECT a.codid,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descrip_esp,a.unidad_med,ISNULL(d.factor_conv,1),b.cod_n,
'0','0', '0','0','0','0',a.desglose ",
" FROM iptb00002 a,iptb00001 d INNER JOIN intb00015 e ON e.cod_n = d.cod_n and
e.cod_grupo = d.cod_grupo and e.cod_tipo = d.cod_tipo and e.cod_sec = d.cod_sec and
e.estado = 'Pendiente'
LEFT OUTER JOIN iptb00027 b ON d.cod_n = b.cod_n and
d.cod_grupo = b.cod_grupo and d.cod_tipo = b.cod_tipo and d.cod_sec = b.cod_sec
where ",
" (a.cod_n = d.cod_n and a.cod_grupo = d.cod_grupo and a.cod_tipo = d.cod_tipo and ",
" a.cod_sec = d.cod_sec) AND a.status_t IS NULL AND ",
"a.control_existencia='SI' AND e.semana_del = (SELECT MIN (a.semana_del) FROM intb00015 a WHERE semana_del >= GETDATE())",
" ORDER BY a.codid "
LET s1 =
"SELECT a.codid,b.bodega,c.descripcion,0"{ISNULL(SUM(b.cantidad_2),0)},",d.cod_seccion,d.cod_tramo,d.cod_fila,d.cod_pos
FROM iptb00006 b,iptb00002 a INNER JOIN intb00015 e ON e.cod_n = a.cod_n and
e.cod_grupo = a.cod_grupo and e.cod_tipo = a.cod_tipo and e.cod_sec = a.cod_sec and
e.estado='Pendiente' ,intb00009 c,iptb00062 d
WHERE (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 ",
" and (d.cod_n = a.cod_n and d.cod_grupo = a.cod_grupo and d.cod_tipo = a.cod_tipo and d.cod_Sec = a.cod_sec) ",
" and ",
"a.control_existencia='SI' AND a.dispositivo_movil='SI' and b.bodega = c.cod_bodega ",
" group by a.codid,b.bodega,c.descripcion,d.cod_seccion,d.cod_tramo,d.cod_fila,d.cod_pos ",
" having SUM(b.cantidad_2) > 0 "
END IF
PREPARE comando FROM selec
DECLARE c2 CURSOR FOR comando
LET i = 1
FOREACH c2 INTO producto.*
IF producto.cod_n IS NOT null THEN
IF p.credenciales.tipo_inventario = 'productos' THEN
LET producto.costo=0
# CALL disponibles(producto.cod_n,producto.cod_grupo,producto.cod_tipo,producto.cod_sec,TODAY)
# RETURNING producto.ordenes,producto.despachado,producto.transito,producto.existencia,
# producto.reservada
LET producto.disponible = producto.existencia - (producto.ordenes+producto.despachado+producto.reservada)
IF producto.disponible IS NULL THEN
LET producto.disponible=0
END IF
# DESPIECE
IF producto.despiece IS NULL THEN
LET producto.despiece = 'NO'
ELSE
LET producto.despiece = 'SI'
END IF
END IF
IF producto.consumo < 0 THEN
LET producto.consumo = producto.consumo * -1
END IF
IF producto.consumo > 0 THEN
LET producto.dias =(producto.disponible/ producto.consumo) * 90
ELSE
LET producto.dias=0
END IF
IF producto.descripcion IS NULL THEN
LET producto.descripcion = "NO TIENE"
END IF
IF producto.unidad_med IS NULL THEN
LET producto.unidad_med='UD'
END IF
LET producto.fecha=TODAY USING "dd/mm/yyyy"
LET producto.fecha_conteo = xfecha_conteo
LET p.productos[i].* = producto.*
LET i = i + 1
END IF
END FOREACH
DISPLAY "NUMERO DE PRODUCTOS ",i
LET i = 1
PREPARE comando2 FROM s1
DECLARE c3 CURSOR FOR comando2
FOREACH c3 INTO existencia.*
IF existencia.cantidad IS NOT NULL THEN
IF existencia.codid > 0 THEN
LET existencia.fecha = today
LET p.existencia[i].* = existencia.*
IF p.existencia[i].cantidad IS NULL THEN
LET p.existencia[i].cantidad=0
END IF
LET i = i+1
END IF
END IF
END FOREACH
DISPLAY "NUMERO DE PRODUCTOS EXISTENCIA ",i
DISCONNECT CURRENT
RETURN util.JSON.stringify(p)
END FUNCTION