Merge branch 'main' of https://git.fulldetord.com/jsoto/mbs
This commit is contained in:
@@ -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.
@@ -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-----
|
||||
@@ -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-----
|
||||
@@ -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>MIIJgDCCB2igAwIBAgIILvImiGW0S1gwDQYJKoZIhvcNAQELBQAwgbgxFzAVBgNVBGEMDlZBVERPLTQwMTAyMzY4MSMwIQYDVQQDDBpkaWdpZmlybWEgQ0EgU3Vib3JkaW5hZGEgMTESMBAGA1UECwwJZGlnaWZpcm1hMTswOQYDVQQKDDJDw6FtYXJhIGRlIENvbWVyY2lvIHkgUHJvZHVjY2nDs24gZGUgU2FudG8gRG9taW5nbzEaMBgGA1UEBwwRRGlzdHJpdG8gTmFjaW9uYWwxCzAJBgNVBAYTAkRPMB4XDTI1MDkwMzE1MDcwMFoXDTI3MDkwMzE1MDcwMFowgbYxOzA5BgNVBAkMMkNBTExFIENFTlRSQUwgTUFEUkVWSUVKQSBOT1JURSwwOTAxMCxTYW4gQ3Jpc3RvYmFsMSEwHwYDVQQDDBhKT1JHRSBSSUNBUkRPIFNVQkVSTyBJU0ExGjAYBgNVBAUTEUlEQ0RPLTAxMzAwMDQ4NjY1MRYwFAYDVQQqDA1KT1JHRSBSSUNBUkRPMRMwEQYDVQQEDApTVUJFUk8gSVNBMQswCQYDVQQGEwJETzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJDFW87AVh9FknnJSlXpHVzRnuS5hzcQlpXVweQvVxEAXksq6i2bX7UCrS6RFOyR1fm59daQuxyk3Ralk4StBMUXg1fpVe1WWi4+rDccIHtRf+SvC7bhCAITk6kUnWGLs03ZrAIxWmQQtQCF8KMIVhSqIGnKRR3UzKq0s9Mi/yBSkvLobuSUDJFpV80cdt17eww9BiHEMnyoedHJ+Dd/11UAFehnhNhzNvIJwdWu2TZO2SAKPmAHc2oZwHkCz0laQAbWwrq2vEXQ55Hw8mclhE3c/zqUjn/KDlmfXaTK2gilvGPnFjQqIR7PeXD9WfKMQZDDcJr9w59o+lGL7NNbHJkCAwEAAaOCBIwwggSIMHoGCCsGAQUFBwEDBG4wbDAIBgYEAI5GAQEwCwYGBACORgEDAgEUMAgGBgQAjkYBBDA0BgYEAI5GAQUwKjAoFiJodHRwczovL2Rwcy5jYW1hcmFzYW50b2RvbWluZ28uZG8vEwJFTjATBgYEAI5GAQYwCQYHBACORgEGATCB3AYIKwYBBQUHAQEEgc8wgcwwSAYIKwYBBQUHMAKGPGh0dHBzOi8vd3d3LmNhbWFyYXNhbnRvZG9taW5nby5kby9kaWdpZmlybWEvQ0NQU0RfY2FkZW5hLmNydDA/BggrBgEFBQcwAYYzaHR0cDovL29jc3AxLmNhbWFyYXNhbnRvZG9taW5nby5kby9wdWJsaWMvcGtpL29jc3AvMD8GCCsGAQUFBzABhjNodHRwOi8vb2NzcDIuY2FtYXJhc2FudG9kb21pbmdvLmRvL3B1YmxpYy9wa2kvb2NzcC8wHQYDVR0OBBYEFFdrvC9iM4+tPDIWPR+/gnqvDeTdMB8GA1UdIwQYMBaAFM7rpVkdIemjmSWnCkqsx5WQBhELMCoGA1UdEgQjMCGBH2RpZ2lmaXJtYUBjYW1hcmFzYW50b2RvbWluZ28uZG8wggHZBgNVHSAEggHQMIIBzDAJBgcEAIvsQAEAMIIBvQYLKwYBBAGBzHwBAwEwggGsMC4GCCsGAQUFBwIBFiJodHRwczovL2Nwcy5jYW1hcmFzYW50b2RvbWluZ28uZG8vMIIBeAYIKwYBBQUHAgIwggFqHoIBZgBDAGUAcgB0AGkAZgBpAGMAYQBkAG8AIABwAGEAcgBhACAAcAByAG8AYwBlAGQAaQBtAGkAZQBuAHQAbwBzACAAdAByAGkAYgB1AHQAYQByAGkAbwBzACAAZQBuACAAcAAxADIAIABlAG0AaQB0AGkAZABvACAAcABvAHIAIABDAEMAUABTAEQALAAgAHUAYgBpAGMAYQBkAG8AIABBAHYAZQAuACAAMgA3ACAAZABlACAAZgBlAGIAcgBlAHIAbwAgAGUAcwBxACAAdABpAHIAYQBkAGUAbgB0AGUAcwAgADIAMgA4ACAAdABvAHIAcgBlACAAZgByAGkAdQBzAGEALAAgAEwAYQAgAEUAcwBwAGUAcgBpAGwAbABhACwAIABTAGEAbgB0AG8AIABEAG8AbQBpAG4AZwBvACwAIABSAGUAcAD6AGIAbABpAGMAYQAgAEQAbwBtAGkAbgBpAGMAYQBuAGEwgY8GA1UdHwSBhzCBhDBAoD6gPIY6aHR0cDovL2NybDEuY2FtYXJhc2FudG9kb21pbmdvLmRvL3B1YmxpYy9wa2kvY3JsL0NDUFNELmNybDBAoD6gPIY6aHR0cDovL2NybDIuY2FtYXJhc2FudG9kb21pbmdvLmRvL3B1YmxpYy9wa2kvY3JsL0NDUFNELmNybDAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMCEGA1UdEQQaMBiBFmpzb3RvQG1hcm1vdGVjaC5jb20uZG8wDQYJKoZIhvcNAQELBQADggIBAIiGfGfXGgO5zHP5BkVKAUHMkKrUP7G3ohexFPp53Io1WbdL3L7oE8EtArLQyySdWr+0Yxb/6VE74krBUb+RhpghKlIhOTqsJvOL8Bdo3prI23hZWi2A4wHZn99W3pISBU2PE8QTodoaR0yOpIgqyYCIZmgHGSExFymDHp8iwfqxSS3HWnXgK5eI5iU/Zisl9bPBhHrFR1j9WjnZTx7IxocGmvd/efn26dJ3MgTP/TUx0P7jatukcTUazl6N9Ht/rHFBSan9vzG+rgSPRvT/flIRhSJyUvVuBGv1+NJWy5R1HoazlVO0cR4QB+U3nvg6E1j0ceccybWjIowA38pU/YpI81UVXSl0dbtwrFPrRmMzfnvMATX8H1NrOb98cLlIss9U1yWQxdyTes4mItBTYjA0K0ESUFGKL3ZputaM7KDW85kWkjXQj/TJP4DClyzO4SjVx9ZFqSkz+yFzlvbfTU7clVshJHYxlmuO+nou19+2l7SPHz2UaikU4JAmdn9bNIypte31BF30rahUywK6ePT1nQ5xL1tSIe2m9BtyG/45yiHobm7kljEeBl4EzkY2mFEp84cH4s28BbRF/S2p8xkGFqNtDKa+DwcWd97IG+62en+/2vE75a9KRUxneW8Ipl6P/e5moXyLYLZS0lMGShBom8cTYdLFFRAPbksXIa5U</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
@@ -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="&&&&&&" value="{{x.num_doc}}"/>
|
||||
<DECIMALFORMATBOX name="num_doc Value" width="38" length="12" alignment="baseline" floatingBehavior="enclosed" format="&&&&&&" 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="&&&&&&&" value="{{x.orden}}"/>
|
||||
<DECIMALFORMATBOX name="orden Value" width="40" length="12" alignment="baseline" floatingBehavior="enclosed" format="&&&&&&&" 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="---,---,--&.&&&" value="{{x.consumo}}"/>
|
||||
<DECIMALFORMATBOX name="consumo Value" width="63" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="---,---,--&.&&&" 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="-,---,---,--&.&&&" value="{{x.costo}}"/>
|
||||
<DECIMALFORMATBOX name="costo Value" width="70" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="-,---,---,--&.&&&" 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="--,---,---,--&.&&" value="{{total_p}}"/>
|
||||
<DECIMALFORMATBOX name="total_p Value" width="66" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="--,---,---,--&.&&" 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="---,---,--&.&&&" value="{{total_consumo_m}}"/>
|
||||
<DECIMALFORMATBOX name="total_consumo_m Value" width="63" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="---,---,--&.&&&" 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="--,---,---,--&.&&" value="{{total_m}}"/>
|
||||
<DECIMALFORMATBOX name="total_m Value" width="136" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="--,---,---,--&.&&" value="{{total_m}}"/>
|
||||
</MINIPAGE>
|
||||
</rtl:match>
|
||||
</MINIPAGE>
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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
@@ -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 "Group factura [0; unbounded]", but trigger was removed during schema update"/>
|
||||
<report:Conflict nodeName="subtotal" message="Node was in trigger "Group factura [0; unbounded]", but trigger was removed during schema update"/>
|
||||
@@ -24,7 +24,9 @@
|
||||
<IMAGEBOX name="ImageBox1_1_1" length="70" alignment="near" floatingBehavior="enclosed" url="{{"IMAGENES/Logo.png"}}" 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("M")*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="{{"Fecha Emision: "+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="{{"Vencimiento Secuencia: "+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="{{"Razon Social Cliente: "}}"/>
|
||||
<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="{{"("+x.tipo_cliente.format("<<")+"-"+x.sec_cliente.format("&&&&&&&&")+")"+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="{{"RNC o CEDULA: "}}"/>
|
||||
<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="{{"Direccion: "}}"/>
|
||||
<rtl:input-variable name="x.direccion" type="FGLString" expectedLocation="expectedAhead"/>
|
||||
<WORDWRAPBOX name="WordWrapBox6" width="width("M")*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="{{" Email:"+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="{{"TASA: "+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("&&&&&&&&&")}}"/>
|
||||
</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("&&&&&&&&&")}}"/>
|
||||
</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("&&&&&&&&&")}}"/>
|
||||
</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="{{"Condicion Cobros: "+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("###,##&.##")}}"/>
|
||||
<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("###,###.##")}}"/>
|
||||
<WORDBOX name="monto" width="6cm" anchorY="1" alignment="baseline" bgColor="#d3d3d3" baselineType="leftleft" floatingBehavior="enclosed" textAlignment="right" text="{{z.monto_fact.format("##,###,###.##")}}"/>
|
||||
</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("###,##&.##")}}"/>
|
||||
<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("###,###.##")}}"/>
|
||||
<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("##,###,###.##")}}"/>
|
||||
</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("###,###,###.##")}}" 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("###,###,###.##")}}"/>
|
||||
</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="{{"Neto S/Impuesto"}}"/>
|
||||
<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("###,###,###.##")}}"/>
|
||||
</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="{{"Itbis"}}"/>
|
||||
<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("###,###,###.##")}}" 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("###,###,###.##")}}" 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>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="{{"INFORMACION EN RD$"}}"/>
|
||||
<LAYOUTNODE name="LayoutNode67" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
|
||||
<WORDBOX name="WordBox155" width="2cm" floatingBehavior="enclosed" text="{{"ITBIS:"}}"/>
|
||||
<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="{{"MONTO TOTAL:"}}"/>
|
||||
<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("M")*60" length="1cm" floatingBehavior="enclosed" text="{{"OBSERVACIONES: "+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="{{"Codigo de Seguridad:"+xhash.trim()}}"/>
|
||||
<rtl:input-variable name="chfechafirmadigital" type="FGLString" expectedLocation="expectedBefore"/>
|
||||
<WORDBOX name="WordBox107" floatingBehavior="enclosed" text="{{"Fecha de Firma Digital: "+chfechafirmadigital.trim()}}"/>
|
||||
</LAYOUTNODE>
|
||||
</LAYOUTNODE>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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="&&&&&&" value="{{x.num_doc}}"/>
|
||||
<DECIMALFORMATBOX name="num_doc Value" width="38" length="12" alignment="baseline" floatingBehavior="enclosed" format="&&&&&&" 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="&&&&&&&" value="{{x.orden}}"/>
|
||||
<DECIMALFORMATBOX name="orden Value" width="40" length="12" alignment="baseline" floatingBehavior="enclosed" format="&&&&&&&" 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="---,---,--&.&&&" value="{{x.consumo}}"/>
|
||||
<DECIMALFORMATBOX name="consumo Value" width="63" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="---,---,--&.&&&" 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="-,---,---,--&.&&&" value="{{x.costo}}"/>
|
||||
<DECIMALFORMATBOX name="costo Value" width="70" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="-,---,---,--&.&&&" 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="--,---,---,--&.&&" value="{{total_p}}"/>
|
||||
<DECIMALFORMATBOX name="total_p Value" width="66" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="--,---,---,--&.&&" 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="---,---,--&.&&&" value="{{total_consumo_m}}"/>
|
||||
<DECIMALFORMATBOX name="total_consumo_m Value" width="63" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="---,---,--&.&&&" 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="--,---,---,--&.&&" value="{{total_m}}"/>
|
||||
<DECIMALFORMATBOX name="total_m Value" width="136" length="12" alignment="baseline" textAlignment="right" floatingBehavior="enclosed" format="--,---,---,--&.&&" value="{{total_m}}"/>
|
||||
</MINIPAGE>
|
||||
</rtl:match>
|
||||
</MINIPAGE>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+127
-127
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
+725
-725
File diff suppressed because it is too large
Load Diff
+457
-457
@@ -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
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
+961
-961
File diff suppressed because it is too large
Load Diff
+105
-105
@@ -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
File diff suppressed because it is too large
Load Diff
+231
-231
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
|
||||
+1040
-1040
File diff suppressed because it is too large
Load Diff
+1969
-1969
File diff suppressed because it is too large
Load Diff
+1742
-1537
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}"/>
|
||||
|
||||
@@ -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}"/>
|
||||
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user