ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 oFactura pic x(8192) value "WSAFIPFE.factura".
77 FE object reference OLE.
01 SRC pic x(1024).
01 MSG pic x(1024).
01 ii pic 9999.
01 ind pic s9(5) comp-5.
01 wcant-reg pic s9(9) comp-5.
01 redefines wcant-reg.
02 wcant-reg-x pic x(9).
*... variables para usar con ocx
01 nModoFiscal pic s9(4) comp-5.
01 cCuit pic x(11).
01 redefines cCuit.
02 cCuit-n pic 9(11).
01 cArchivoCertificado pic x(50).
01 cArchivoLicencia pic x(50).
01 iPuntoVenta pic s9(4) comp-5.
01 iComprobanteTipo pic s9(4) comp-5.
01 iComprobanteFor pic s9(9) comp-5.
01 resultado pic x(200).
01 variables-fe.
02 fe-error pic s9(9) comp-5.
02 fe-maecuit pic x(11).
02 redefines fe-maecuit.
03 fe-maecuit-n pic 9(11).
02 fe-certif pic x(50).
02 fe-lic pic x(50).
02 fe-password pic x(50) value "12345".
02 fe-valor-n pic s9(9) comp-5.
02 fe-valor-c pic x(25).
02 fe-recibido.
03 pic x(6) value "c:\rec".
03 fe-recibido-suc pic 9999.
03 pic xxxx value ".xml".
02 fe-enviado.
03 pic x(6) value "c:\env".
03 fe-enviado-suc pic 9999.
03 pic xxxx value ".xml".
02 fe-pv pic s9(4) comp-5.
02 fe-tipmov pic s9(4) comp-5.
02 fe-concepto pic s9(4) comp-5.
02 fe-cuittipo pic s9(4) comp-5.
02 fe-cuit pic x(11).
02 fe-for pic s9(9) comp-5.
02 fe-fec pic x(8).
02 fe-vto pic x(8).
02 fe-impo comp-2.
02 fe-nogavado comp-2.
02 fe-neto comp-2.
02 fe-iva comp-2.
02 fe-tributos comp-2.
02 fe-tributos-id pic s9(9) comp-5.
02 fe-86base comp-2.
02 fe-86alic comp-2.
02 fe-86imp comp-2.
02 fe-iibase comp-2.
02 fe-iialic comp-2.
02 fe-iiimp comp-2.
02 fe-Munbase comp-2.
02 fe-Munalic comp-2.
02 fe-Munimp comp-2.
02 wrgMun pic x(50) value "Tasa Municipal".
02 wMunbase pic 9(13)v99.
02 wMunalic pic 9(13)v99.
02 wMunimp pic 9(13)v99.
02 wrg86 pic x(50) value "Perc. Ing. Brutos".
02 w86base pic 9(13)v99.
02 w86alic pic 9(13)v99.
02 w86imp pic 9(13)v99.
02 wimpint pic x(50) value "Impuestos Internos".
02 wiibase pic 9(13)v99.
02 wiialic pic 9(13)v99.
02 wiiimp pic 9(13)v99.
02 wtributos pic 9(13)v99.
02 wneto pic 9(13)v99.
02 wiva pic 9(13)v99.
02 fe-indice pic s9(4) comp-5.
02 fe-cant-iva pic s9(4) comp-5.
02 fe-tabla-iva occurs 10 times.
03 fe-iva-id pic s9(4) comp-5.
03 fe-iva-base comp-2.
03 fe-iva-imp comp-2.
02 fe-cae pic x(20).
02 fe-caevto pic x(8).
01 xletra pic x.
88 xletra-a value "A".
88 xletra-b value "B".
88 xletra-c value "C".
01 muestra.
02 llite pic x(20)bb.
02 limpo pic zzz.zzz.zzz,zz.
01 muestra2.
02 llite2 pic x(20)bb.
02 lnro2 pic z(8).
PROCEDURE DIVISION.
#include "Copys\declara-com.cpy".
proceso-obtener-cae.
move spaces to ffacae ffacaevto.
move ffanum to ccnum.
read ctacte invalid go sale.
if fito-empiva = 1
if cctipoiva > 2
move "B" to xletra
else
move "A" to xletra
end-if
else
move "C" to xletra
end-if.
move ffarestipmov to tpmcod.
read tipomov invalid go sale.
move fito-empcuit to cuit.
perform resuelve-cuit.
move ncuit to fe-maecuit-n.
move pfafacelec-cert to fe-certif.
move pfafacelec-lic to fe-lic.
move ffasuc to fe-pv fe-recibido-suc fe-enviado-suc.
move tpmf532-comp to fe-tipmov.
move 3 to fe-concepto.
move cccuittipo to fe-cuittipo.
move cccuit to cuit.
perform resuelve-cuit.
if ncuit = zeros move 1 to ncuit.
move ncuit to fe-cuit.
move ffafec to fecha-inicial.
move ffavto to fecha-final.
perform fecha-can-dias.
perform fecha-sistema.
move fecha-amd to ffafec fe-fec.
move ffafec to fecha-inicial.
perform fecha-suma-dias.
move fecha-final to ffavto fe-vto.
move ffaimpo to fe-impo
move ffanograv to fe-nogavado
if xletra-a
move ffaneto to wneto
move ffaiva to wiva
end-if.
if xletra-b
compute wiva = ffaimpiva(1) + ffaimpiva(2)
compute wneto = ffaneto - wiva
end-if.
if xletra-c
move ffaneto to wneto
move zeros to wiva
end-if.
move wneto to fe-neto.
if fito-empiva = 1
move wiva to fe-iva
move zeros to fe-cant-iva
perform varying w--ii from 1 by 1 until w--ii > 2
if ffaimpiva(w--ii) not = zeros
add 1 to fe-cant-iva
end-if
end-perform
if fe-cant-iva = 1 *> si hay un solo iva lo hago con el neto por el tema redondeo
if ffaporiva(1) = 21
move 5 to fe-iva-id(1)
else
move 4 to fe-iva-id(1)
end-if
if xletra-a
move ffaneto to fe-iva-base(1)
move ffaiva to fe-iva-imp(1)
else
compute fe-iva-base(1) rounded = ffaneto - ffaimpiva(1)
move ffaimpiva(1) to fe-iva-imp(1)
end-if
end-if
if fe-cant-iva = 2
if ffaporiva(1) = 21
move 5 to fe-iva-id(1)
else
move 4 to fe-iva-id(1)
end-if
compute wneto rounded = ffaimpiva(1) / (ffaporiva(1) / 100)
move ffaimpiva(1) to fe-iva-imp(1)
move wneto to fe-iva-base(1)
if ffaporiva(2) = 21
move 5 to fe-iva-id(2)
else
move 4 to fe-iva-id(2)
end-if
compute wneto rounded = ffaimpiva(2) / (ffaporiva(2) / 100)
move ffaimpiva(2) to fe-iva-imp(2)
move wneto to fe-iva-base(2)
end-if
if fe-cant-iva = zeros
move 1 to fe-cant-iva
move 3 to fe-iva-id(1)
move ffaneto to fe-iva-base(1)
move zeros to fe-iva-imp(1)
end-if
else
move zeros to fe-cant-iva
move zeros to fe-iva
end-if.
move zeros to wtributos.
move zeros to w86base w86alic w86imp.
if ffaperiibb-imp not = zeros
move ffaperiibb-imp to w86imp
move ffaperiibb-por to w86alic
compute w86base rounded = w86imp * 100 / w86alic
add w86imp to wtributos
end-if.
move w86base to fe-86base.
move w86alic to fe-86alic.
move w86imp to fe-86imp.
move zeros to wiibase wiialic wiiimp.
if ffagasoil-itc not = zeros
add ffagasoil-itc to wiiimp
move zeros to wiialic
move ffaneto to wiibase
add ffagasoil-itc to wtributos
end-if.
if ffagasoil-imp not = zeros
add ffagasoil-imp to wiiimp
move zeros to wiialic
move ffaneto to wiibase
add ffagasoil-imp to wtributos
end-if.
move wiibase to fe-iibase.
move wiialic to fe-iialic.
move wiiimp to fe-iiimp.
move zeros to wMunbase wMunalic wMunimp.
if ffaimpmuni not = zeros
move ffaimpmuni to wMunimp
move ffapormuni to wMunalic
if wMunalic not = zeros
compute wMunbase rounded = wMunimp * 100 / wMunalic
else
move zeros to wMunbase
end-if
add wMunimp to wtributos
end-if.
move wMunbase to fe-Munbase.
move wMunalic to fe-Munalic.
move wMunimp to fe-Munimp.
move wtributos to fe-tributos.
if pfafacelec-lic = spaces
move zeros to nModoFiscal
else
move 1 to nModoFiscal
end-if.
move fe-maecuit to cCuit.
move fe-certif to cArchivoCertificado.
move fe-lic to cArchivoLicencia.
if nModoFiscal = zeros
invoke grdLista "AddItem" using "WebService de PRUEBA"
else
invoke grdLista "AddItem" using "WebService de PRODUCCION"
end-if.
invoke grdLista "AddItem" using cCuit.
invoke grdLista "AddItem" using cArchivoCertificado.
invoke grdLista "AddItem" using cArchivoLicencia.
invoke grdLista "AddItem" using fe-recibido.
invoke grdLista "AddItem" using fe-enviado.
perform refresca.
invoke OLE "CREATE-OBJECT" using oFactura returning FE.
invoke FE "iniciar" using nModoFiscal cCuit cArchivoCertificado cArchivoLicencia returning fe-error.
invoke FE "SET-ArchivoCertificadoPassWord" using fe-password.
if fe-error = pow-true
perform restaurar-tique
invoke FE "f1TicketEsValido" returning fe-error
if fe-error = pow-false
invoke FE "f1ObtenerTicketAcceso" returning fe-error
invoke grdLista "AddItem" using "Genera Nuevo Tique"
else
invoke grdLista "AddItem" using "El tique es Válido"
end-if
if fe-error = pow-true
perform guardar-tique
move fe-pv to iPuntoVenta
move fe-tipmov to iComprobanteTipo
invoke FE "f1CompUltimoAutorizado" using iPuntoVenta iComprobanteTipo RETURNING iComprobanteFor
compute fe-for = iComprobanteFor + 1
move "Formulario" to llite2
move fe-for to lnro2
invoke grdLista "AddItem" using muestra2
move 1 to fe-valor-n
invoke FE "SET-F1CabeceraCantReg" using fe-valor-n
invoke FE "SET-F1CabeceraPtoVta" using fe-pv
invoke FE "SET-F1CabeceraCbteTipo" using fe-tipmov
invoke FE "SET-F1DetalleConcepto" using fe-concepto
invoke FE "SET-F1DetalleDocTipo" using fe-cuittipo
invoke FE "SET-F1DetalleDocNro" using fe-cuit
invoke FE "SET-F1DetalleCbteDesde" using fe-for
invoke FE "SET-F1DetalleCbteHasta" using fe-for
invoke FE "SET-F1DetalleCbteFch" using fe-fec
invoke FE "SET-F1DetalleImpTotal" using fe-impo
invoke FE "SET-F1DetalleImpTotalConc" using fe-nogavado
invoke FE "SET-F1DetalleImpNeto" using fe-neto
invoke FE "SET-F1DetalleImpIva" using fe-iva
invoke FE "SET-F1DetalleImpTrib" using fe-tributos
invoke FE "SET-F1DetalleFchServDesde" using fe-fec
invoke FE "SET-F1DetalleFchServHasta" using fe-fec
invoke FE "SET-F1DetalleFchVtoPago" using fe-vto
move "PES" to fe-valor-c
invoke FE "SET-F1DetalleMonId" using fe-valor-c
move 1 to fe-valor-n
invoke FE "SET-F1DetalleMonCotiz" using fe-valor-n
move "Neto" to llite
move fe-neto to limpo
invoke grdLista "AddItem" using muestra
move "IVA" to llite
move fe-iva to limpo
invoke grdLista "AddItem" using muestra
move "TOTAL" to llite
move fe-impo to limpo
invoke grdLista "AddItem" using muestra
perform refresca
move zeros to w--ii
if ffaperiibb-imp not = zeros
add 1 to w--ii
move w--ii to fe-valor-n
invoke FE "SET-F1DetalleTributoItemCantidad" using fe-valor-n
compute fe-indice = w--ii - 1
invoke FE "SET-f1IndiceItem" using fe-indice
move 2 to fe-tributos-id
invoke FE "SET-F1DetalleTributoId" using fe-tributos-id
invoke FE "SET-F1DetalleTributoDesc" using wrg86
invoke FE "SET-F1DetalleTributoBaseImp" using fe-86base
invoke FE "SET-F1DetalleTributoAlic" using fe-86alic
invoke FE "SET-F1DetalleTributoImporte" using fe-86imp
move "PER IIBB Base" to llite
move fe-86base to limpo
invoke grdLista "AddItem" using muestra
move "PER IIBB ALic." to llite
move fe-86alic to limpo
invoke grdLista "AddItem" using muestra
move "PER IIBB Imp." to llite
move fe-86imp to limpo
invoke grdLista "AddItem" using muestra
end-if
if ffagasoil-itc not = zeros or
ffagasoil-imp not = zeros
add 1 to w--ii
move w--ii to fe-valor-n
invoke FE "SET-F1DetalleTributoItemCantidad" using fe-valor-n
compute fe-indice = w--ii - 1
invoke FE "SET-f1IndiceItem" using fe-indice
move 4 to fe-tributos-id
invoke FE "SET-F1DetalleTributoId" using fe-tributos-id
invoke FE "SET-F1DetalleTributoDesc" using wimpint
invoke FE "SET-F1DetalleTributoBaseImp" using fe-iibase
invoke FE "SET-F1DetalleTributoAlic" using fe-iialic
invoke FE "SET-F1DetalleTributoImporte" using fe-iiimp
move "Imp.Int. Base" to llite
move fe-iibase to limpo
invoke grdLista "AddItem" using muestra
move "Imp.Int. ALic." to llite
move fe-iialic to limpo
invoke grdLista "AddItem" using muestra
move "Imp.Int. Imp." to llite
move fe-iiimp to limpo
invoke grdLista "AddItem" using muestra
end-if
if ffaimpmuni not = zeros
add 1 to w--ii
move w--ii to fe-valor-n
invoke FE "SET-F1DetalleTributoItemCantidad" using fe-valor-n
move zeros to fe-indice
invoke FE "SET-f1IndiceItem" using fe-indice
move 3 to fe-valor-n
invoke FE "SET-F1DetalleTributoId" using fe-valor-n
invoke FE "SET-F1DetalleTributoDesc" using wrgMun
invoke FE "SET-F1DetalleTributoBaseImp" using fe-Munbase
invoke FE "SET-F1DetalleTributoAlic" using fe-Munalic
invoke FE "SET-F1DetalleTributoImporte" using fe-Munimp
move "Imp.Mun. Base" to llite
move fe-Munbase to limpo
invoke grdLista "AddItem" using muestra
move "Imp.Mun. ALic." to llite
move fe-Munalic to limpo
invoke grdLista "AddItem" using muestra
move "Imp.Mun. Imp." to llite
move fe-Munimp to limpo
invoke grdLista "AddItem" using muestra
end-if
invoke FE "SET-F1DetalleIvaItemCantidad" using fe-cant-iva
perform varying w--ii from 1 by 1 until w--ii > fe-cant-iva
compute fe-indice = w--ii - 1
invoke FE "SET-f1IndiceItem" using fe-indice
invoke FE "SET-F1DetalleIvaId" using fe-iva-id(w--ii)
invoke FE "SET-F1DetalleIvaBaseImp" using fe-iva-base(w--ii)
invoke FE "SET-F1DetalleIvaImporte" using fe-iva-imp(w--ii)
end-perform
move zeros to fe-valor-n
invoke FE "SET-F1DetalleCbtesAsocItemCantidad" using fe-valor-n
invoke FE "SET-F1DetalleOpcionalItemCantidad" using fe-valor-n
move fe-recibido to fe-valor-c
invoke FE "SET-ArchivoXMLRecibido" using fe-valor-c
move fe-enviado to fe-valor-c
invoke FE "SET-ArchivoXMLEnviado" using fe-valor-c
invoke FE "f1CAESolicitar"
invoke FE "F1RespuestaResultado" returning Resultado
if Resultado = "A"
invoke FE "F1RespuestaDetalleCae" returning Resultado
move resultado to fe-cae
invoke FE "f1RespuestaDetalleCAEFchVto" returning Resultado
move resultado to fe-caevto
move fe-for to ffaresfor
move fe-cae to ffacae
move fe-caevto to ffacaevto
move 1 to ffaimpreso
move fe-fec to ffafec
rewrite regffa
invoke grdLista "AddItem" using "ACEPTADO - CAE N°"
invoke grdLista "AddItem" using fe-cae
else
invoke grdLista "AddItem" using "RECHAZADO" returning ind
move pow-color-red to "ListBackColor"(ind) of grdLista
end-if
invoke FE "f1RespuestaDetalleObservacionItemCantidad" returning fe-error
if fe-error not = zeros
perform varying w--ii from 1 by 1 until w--ii > fe-error
compute fe-indice = w--ii - 1
invoke FE "f1RespuestaDetalleObservacionMsg" returning Resultado
invoke grdLista "AddItem" using Resultado returning ind
move pow-color-green to "ListBackColor"(ind) of grdLista
end-perform
end-if
else
invoke grdLista "AddItem" using "Fallo Acceso WebService AFIP"
invoke FE "UltimoMensajeError" returning Resultado
invoke grdLista "AddItem" using Resultado
end-if
else
invoke grdLista "AddItem" using "Fallo Iniciando WebService AFIP"
invoke FE "UltimoMensajeError" returning Resultado
invoke grdLista "AddItem" using Resultado
end-if.
perform refresca.
sale.
exit program.
#include "Copys\comunpro.cpy".
guardar-tique.
open i-o fe-tique.
move fe-maecuit-n to fe-tique-cuit.
read fe-tique invalid initialize fe-tique-campos.
invoke FE "f1GuardarTicketAcceso" returning fe-tique-token.
write regfe-tique invalid rewrite regfe-tique.
close fe-tique.
restaurar-tique.
open input fe-tique.
move fe-maecuit-n to fe-tique-cuit.
read fe-tique not invalid
invoke FE "f1RestaurarTicketAcceso" using fe-tique-token
end-read.
close fe-tique.
Marcadores