Ver la Versión Completa : [Aporte] OCX WSAFIPFE facturas electronicas (en Argentina)
marcelolarran
21 de abril de 2019, 00:10
Buenas Tardes, esta pregunta es para los que estan usando el OCX WSAFIPFE de Carusso para realizar facturas electronicas (en Argentina), me sucede que en mi powercobol 7 u 9 cualquiera de las 2 versiones
no puedo incorpararlo a la toolbox del formulario, lo visualizo al OCX pero no me deja insertarlo a la barra para despues pasarlo al formulario, les a sucedido esto ? o estoy haciendo algom mal ?, gracias por su colaboracion.
Kuk
21 de abril de 2019, 15:57
marcelolarran, qué error te da exactamente? Ojo, a partir de Windows 7 debes ejecutar PowerCOBOL como Administrador, para poder registrar las OCX.
marcelolarran
22 de abril de 2019, 02:31
el OCX esta bien instalado, como administrador obviamente, logre incorporarlo a toolbox del formulario, pero cuando ejecuto el propgrama para pedir el CAE me sale el mensaje "Referencia a Objeto no establecida como instancia de un objeto", lei las soluciones al problema, poero no logro darme cuenta porque use el mismo ejemplo que esta en la pagina de CAMUSSO.
Kuk
22 de abril de 2019, 11:53
marcelolarran, revisa las dependencias, lo mismo debes tener instalado algún componente más, como por ejemplo alguna versión de C++ Redistributable o similar.
Gusaiello
22 de abril de 2019, 13:46
marcelolarran, Yo tambien tuve problemas con esta ocx, es mas, hablé con el sr. Camusso y vía teamviewer el mismo se metió en mi computadora para ver si encontraba el problema, pero al no tener conocimientos de AcuCobol no logró ayudarme.
La única forma que encontré de poder hacer facturas electrónicas fue a través de la interfase any2fe, la cual funciona como interlocutora entre mi programa y WSAFIPFE. Es mas cara, pero me permitió resolver el problema.
Viene con un instalador el cual se encarga de la instalación de WSAFIPFE, luego con tu programa generas un par de archivitos con los datos de la factura y llamas a any2fe.exe con los parámetros necesarios y asunto resuelto. Solicitaa la autorización y si todo anduvo bien te devuelve el CAE.
Hay otra interfase (PYAFIPWS) que tengo entendido que es gratis, pero bueno, ya había comprado la otra.
Lascu
10 de mayo de 2019, 14:30
Hola, el PyAfipWs es posible implementarlo gratis. Está escrito en python, en la página (o el foro, ahora no recuerdo) tenés instrucciones paso a paso muy claras de como hacerlo, podés bajar el código fuente y generar el ejecutable. Y si se te complica implementarlo tenés la posibilidad de comprar el soporte técnico por un tiempo.
Saludos
Lascu
Gusaiello
29 de agosto de 2019, 19:17
Lascu, he seguido tu consejo y debo decir que pyafipws funciona de maravilla.
Lo uso mediante el sistema de intercambio a traves de .TXT's.
Es mucho mas veloz que la interfase que venía usando (any2fe - WSAFIPFE).
Pero la mayor de las ventajas es que es gratis y sin licencias.
Hace algunos dias implementé mi primer programa con esta interfase y todo va perfecto.
Desde ya muchas gracias por el consejo.
Fito
31 de agosto de 2019, 15:36
Hola Amigos:
Yo estoy usando esa ocx en power 8, no funciona como otro ocx que se pueda incorporar al formulario. Hay que instanciarlo en tiempo de ejecución. Acá les paso un ejemplo. Funciona de maravilla este ocx.
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.
En el REPOSITORY del formulario tienen que declarar...
CLASS OLE AS "*OLE"
CLASS EXCEP AS "*COM-EXCEPTION"
Disculpen que le pasé la rutina completa, pero vayan sacando lo que necesitan de ahí...
Saludos.
Fito...
fastpho
20 de septiembre de 2023, 18:21
Hola , estoy implementado la facturacion electronica , con el ocx WSAFIPFE version 99.95 en modo testing/homologación
y me esta devolviendo el archivo .xml con el siguiente error cuando quiero realizar una Nota de Credito "A" que es el siguiente :
<Resultado>R</Resultado>
<Observaciones>
<Obs>
<Code>10197</Code>
<Msg>Si el comprobante es Debito o Credito, enviar estructura CbteAsoc o PeriodoAsoc.</Msg>
</Obs>
</Observaciones>
y obviamente me rechaza la solicitud de CAE , que puede ser ?
Saludos ...
Fito
20 de septiembre de 2023, 21:51
Hola @fastpho,
Cuando hacés una nota de crédito o débito, tenés que enviarle a qué factura, por ejemplo, afecta esa nc o nd. o también permite ponerle un desde/hasta fecha.
*> Working
01 variables-fe.
02 fe-maecuit pic x(11).
02 redefines fe-maecuit.
03 fe-maecuit-n pic 9(11).
02 fe-valor-n pic s9(9) comp-5.
02 fe-nctipmov pic s9(4) comp-5.
02 fe-ncpv pic s9(4) comp-5.
02 fe-ncfor pic s9(9) comp-5.
02 fe-fecnc pic x(8).
02 fe-indice pic s9(4) comp-5.
*> Procedure
if ffancforma = 2 *> este campo lo uso para saber si quiere informar un comprobante puntual o por fechas
move zeros to fe-valor-n
invoke FE "SET-F1DetalleCbtesAsocItemCantidad" using fe-valor-n
invoke FE "SET-F1DetalleOpcionalItemCantidad" using fe-valor-n
move ffancfacfecdes to fe-fecnc
invoke FE "SET-F1DetallePeriodoAsocFchDesde" using fe-fecnc
move ffancfacfechas to fe-fecnc
invoke FE "SET-F1DetallePeriodoAsocFchHasta" using fe-fecnc
else
if ffancfactipo = 7 *> Esto lo puse para a época de los monotributos con factura A, porque si hacés un NC A y tenés que asociar una factura vieja tipo B no te deja
move zeros to fe-valor-n
invoke FE "SET-F1DetalleCbtesAsocItemCantidad" using fe-valor-n
invoke FE "SET-F1DetalleOpcionalItemCantidad" using fe-valor-n
move ffancfacfec to fe-fecnc
invoke FE "SET-F1DetallePeriodoAsocFchDesde" using fe-fecnc
invoke FE "SET-F1DetallePeriodoAsocFchHasta" using fe-fecnc
else
move 1 to fe-valor-n
invoke FE "SET-F1DetalleCbtesAsocItemCantidad" using fe-valor-n
move zeros to fe-indice
invoke FE "SET-f1IndiceItem" using fe-indice
move ffancfactipmov to tpmcod
read tipomov invalid move zeros to tpmf532-comp
end-read
move tpmf532-comp to fe-nctipmov
invoke FE "SET-F1DetalleCbtesAsocTipo" using fe-nctipmov
move ffancfacsuc to fe-ncpv
invoke FE "SET-F1DetalleCbtesAsocPtoVta" using fe-ncpv
move ffancfacfor to fe-ncfor
invoke FE "SET-F1DetalleCbtesAsocNroS" using fe-ncfor
invoke FE "SET-F1DetalleCbtesAsocCUIT" using fe-maecuit-n
move ffancfacfec to fe-fecnc
invoke FE "SET-f1DetalleCbtesAsocFecha" using fe-fecnc
end-if
end-if
end-if
Cualquier duda, me decís.
Saludos
Fito...
fastpho
20 de septiembre de 2023, 22:07
Hola @Fito , voy analizar tu codigo y cualquier duda te consulto
Muchas Gracias
Saludos ....
fastpho
20 de septiembre de 2023, 23:05
Hola @Fito le mando estas lineas al ocx de acuerdo a tu ejemplo :
*>CbtesAsoc
*> New 20-09-2023 agrego Notas de Creditos
IF FACTURACION-TIPO = "S" *> Nota de Credito
move 1 to fe-numero
INVOKE FACTURA-APP "SET-F1DetalleCbtesAsocItemCantidad" USING fe-numero
*>CbtesAsoc TIPO
IF EMP-TIPO-RESP = 1 THEN
if cli-cod-iva = 1 or cli-cod-iva = 4 then
move 1 to w-CbtesAsocTipo *> para factura A
end-if
if cli-cod-iva = 2 or cli-cod-iva = 3 or cli-cod-iva = 5 then
move 6 to w-CbtesAsocTipo *> para factura B
end-if
END-IF
IF EMP-TIPO-RESP = 2 THEN
move 11 to w-CbtesAsocTipo *> para factura C
END-IF
*>CbtesAsoc TIPO
INVOKE FACTURA-APP "SET-F1DetalleCbtesAsocTipo" USING w-CbtesAsocTipo
*>CbtesAsoc PtoVta
INVOKE FACTURA-APP "SET-F1DetalleCbtesAsocPtoVta" USING w-CabeceraPtoVta
*>CbtesAsoc NRO
move CL-NUMERO-NC to w-AsocNroS
INVOKE FACTURA-APP "SET-F1DetalleCbtesAsocNroS" USING w-AsocNroS
*>CbtesAsoc CUIT EMISOR
INVOKE FACTURA-APP "SET-F1DetalleCbtesAsocCUIT" USING EMPF-CUIT
*>CbtesAsoc CBTEFECHA
move FE-FECHA to w-DetalleCbteFch *> fecha de hoy
INVOKE FACTURA-APP "SET-F1DetalleCbtesAsocFecha" USING w-DetalleCbteFch
ELSE
move 0 to fe-numero
INVOKE FACTURA-APP "SET-F1DetalleCbtesAsocItemCantidad" USING fe-numero
END-IF
me arma el .xml el tag <CbteAsoc> en cero :
<?xml version="1.0" encoding="utf-8"?>
<FECAERequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FeCabReq xmlns="http://ar.gov.afip.dif.FEV1/">
<CantReg>1</CantReg>
<PtoVta>1</PtoVta>
<CbteTipo>8</CbteTipo>
</FeCabReq>
<FeDetReq xmlns="http://ar.gov.afip.dif.FEV1/">
<FECAEDetRequest>
<Concepto>1</Concepto>
<DocTipo>99</DocTipo>
<DocNro>0</DocNro>
<CbteDesde>2</CbteDesde>
<CbteHasta>2</CbteHasta>
<CbteFch>20230920</CbteFch>
<ImpTotal>30</ImpTotal>
<ImpTotConc>0</ImpTotConc>
<ImpNeto>26.36</ImpNeto>
<ImpOpEx>0</ImpOpEx>
<ImpTrib>0</ImpTrib>
<ImpIVA>3.64</ImpIVA>
<MonId>PES</MonId>
<MonCotiz>1</MonCotiz>
<CbtesAsoc>
<CbteAsoc>
<Tipo>0</Tipo>
<PtoVta>0</PtoVta>
<Nro>0</Nro>
</CbteAsoc>
</CbtesAsoc>
<Iva>
<AlicIva>
<Id>5</Id>
<BaseImp>8.26</BaseImp>
<Importe>1.74</Importe>
</AlicIva>
<AlicIva>
<Id>4</Id>
<BaseImp>18.1</BaseImp>
<Importe>1.9</Importe>
</AlicIva>
</Iva>
</FECAEDetRequest>
</FeDetReq>
</FECAERequest>
y el archivo de respuesta me pone error
<Resultado>R</Resultado>
<Observaciones>
<Obs>
<Code>10057</Code>
<Msg>De enviarse el tag CbtesAsoc debe enviarse Tipo mayor a 0</Msg>
</Obs>
</Observaciones>
cual puede ser el problema ?
Saludos ...
Fito
20 de septiembre de 2023, 23:31
Hola:
Los comprobantes asociados van en un vector, te falta moverle valor a f1IndiceItem.
fastpho
21 de septiembre de 2023, 14:50
Gracias @Fito , funciono con :
MOVE 0 TO fe-numero
INVOKE FACTURA-APP "SET-f1IndiceItem" USING fe-numero
y ademas tenia mal puesto el nro de comprobante desde y hasta
Saludos ...:bien:
Gusaiello
21 de septiembre de 2023, 19:12
@fastpho, Es por que desde hace algún tiempo es obligatorio indicar a que factura o nota de débito hace referencia la nota de crédito.
Tarde jaja. No vi la respuesta de Fito.
fastpho
21 de septiembre de 2023, 19:39
@Gusaiello
Gracias Gustavo ....:bien:
Saludos...
vBulletin v3.8.7, Derechos ©2000-2026, Jelsoft Enterprises Ltd.