Buenas tardes. Tengo una clase desarrollada en VFP 9 y me funciona correctamente para los Resp. Inscriptos. Quisiera saber qué estoy haciendo mal porque no me valida MT ni CF.
Ni siquiera hace el envío de los MT o CF. con lo que supongo que está mal armada la estructura de datos que estoy a punto de enviar. Ya probé modificando todo lo posible y no se me ocurre nada más. Estoy trabajando con la versión 100.82
Este es el método que arma un cursor de parámetros :
Local llRetVal,ldFecha,lcCuit,lcLetra,lnCod,lnIdFac
llRetVal = .t.
ldFecha = {//}
lcCuit = ""
lcLetra = ""
lnCod = 0
lnIdFac = 0
Create Cursor curParam(;
Letra c(1),;
Fecha c(8),;
PtoVta i,;
CbteTipo i,;
DocTipo i,;
DocNro c(11),;
ImpTotal n(12,2),;
ImpNeto n(12,2),;
ImpIva n(12,2),;
OpcIva n(1),;
IvaBase21 n(12,2),;
IvaImp21 n(12,2),;
IvaId21 n(1),;
IvaBase105 n(12,2),;
IvaImp105 n(12,2),;
IvaId105 n(1))
If Used("curFacElec")
lnCod = curFacElec.Codigo
lnIdFac = curFacElec.IdFac
If !Seek(lnCod,"Clientes","Codigo")
Messagebox("No se ha encontrado el Cliente",16,"")
llRetVal = .f.
Return llRetVal
Else
Select Clientes
Endif
If !Seek(lnIdFac,"FacElec","IdFac")
Messagebox("No se ha encontrado la Factura",16,"")
llRetVal = .f.
Return llRetVal
Else
Select FacElec
Endif
Endif
With This
.IdComprobante = lnIdFac
.Comprobante = comprobantes.Corto
.Es_Credito = comprobantes.Escredito
If .Es_Credito then
Create Cursor curParamCreDeb(;
CbteTipo i,;
PtoVta i,;
Numero i,;
DocNro c(11),;
Fecha c(8))
Append Blank
Endif
Endwith
ldFecha = Date()
lcCuit = FacElec.Cuit
lcCuit = Strtran(lcCuit,"-","")
lcCuit = Strtran(lcCuit,"/","")
lcCuit = Strtran(lcCuit," ","")
lcLetra = Substr(FacElec.Documento,5,1)
If lcLetra = "A"
lnImpNeto = (FacElec.Negra21 + FacElec.Negra105)
lnImpIva = (FacElec.Iva_Inscri + FacElec.Iva_No_Ins)
lnIvaBase21 = FacElec.Negra21
lnIvaImp21 = FacElec.Iva_Inscri
lnIvaBase105 = FacElec.Negra105
lnIvaImp105 = FacElec.Iva_No_Ins
Else
lnImpNeto = FacElec.Totales
lnImpIva = 0
lnIvaBase21 = 0
lnIvaImp21 = 0
lnIvaBase105 = 0
lnIvaImp105 = 0
Endif
Select curParam
Append Blank
Replace Fecha With Transform(Year(ldFecha),"@L ####")+Transform(Month(ldFecha),"@L ##")+Transform(Day(ldFecha),"@L ##"),;
PtoVta With FacElec.Puntov,;
CbteTipo With FacElec.Ndoc,;
Letra With lcLetra,;
DocTipo With Iif(lcLetra = "A",80,Iif(lcLetra = "B" And Len(Alltrim(lcCuit))=11,80,96)),;
DocNro with lcCuit,;
ImpTotal with FacElec.Totales,;
ImpNeto with lnImpNeto,;
ImpIva with lnImpIva,;
OpcIva with FacElec.OpcionIva,;
IvaBase21 with lnIvaBase21,;
IvaImp21 with lnIvaImp21,;
IvaId21 with Iif(lcLetra = "A",5,0),;
IvaBase105 with lnIvaBase105,;
IvaImp105 with lnIvaImp105,;
IvaId105 with Iif(lcLetra = "A",4,0)
Return llRetVal
Y este es el método con el que tomo los datos desde wsafipfe
Local lResultado,lcTexto,llOk,lcQRArchivo,lcError
lResultado = .f.
With thisform
.FE.Tls = 12
Wait Clear
Wait Window "Procesando Solicitud CAE..." Nowait Noclear
lnNum = .Fe.F1CompUltimoAutorizado(curParam.PtoVta,curParam.CbteTipo) + 1
this.Numero = lnNum
lcQRArchivo = LugarFE+"\QR\QR_"+This.Comprobante+"_"+Alltrim(Str(lnNum))+".jpg"
.Fe.F1CabeceraCantReg = 1
.Fe.F1CabeceraPtoVta = curParam.PtoVta
.Fe.F1CabeceraCbteTipo = curParam.CbteTipo
.Fe.f1Indice = 0
.Fe.F1DetalleConcepto = 1
.Fe.F1DetalleDocTipo = curParam.DocTipo &&--- CUIT 80 / DNI 86
.Fe.F1DetalleDocNro = Iif(!Empty(curParam.DocNro),curParam.DocNro,"00000000000")
.Fe.F1DetalleCondicionIvaReceptor = Iif(clientes.Iva== 'R I',1,Iif(clientes.Iva== 'M T',5,4))
.Fe.F1DetalleCbteDesde = lnNum
.Fe.F1DetalleCbteHasta = lnNum
.Fe.F1DetalleCbteFch = curParam.Fecha
.Fe.F1DetalleImpTotal = curParam.ImpTotal &&--- Ejemplo 181.50
.Fe.F1DetalleImpTotalConc = 0
.Fe.F1DetalleImpNeto = curParam.ImpNeto &&--- Ejemplo 150
.Fe.F1DetalleImpOpEx = 0 && ANTES curParam.Nograva
.Fe.F1DetalleImpTrib = 0
.Fe.F1DetalleImpIva = curParam.ImpIva &&--- Ejemplo 31.50
.Fe.F1DetalleFchServDesde = "" &&Deben informarse si concepto = 2 o 3
.Fe.F1DetalleFchServHasta = ""
.Fe.F1DetalleFchVtoPago = ""
.Fe.F1DetalleMonId = "PES"
.Fe.F1DetalleMonCotiz = 1
.Fe.F1DetalleCanMisMonExt = "N"
.Fe.F1DetalleMonCotiz = 1
.fe.F1DetalleIvaItemCantidad = 1 &&--- Si tiene Iva 10.5 = 2 - si no = 1 1
If curParam.Letra = "A"
If curParam.OpcIva = 1
.fe.f1IndiceItem = 0
.fe.F1DetalleIvaId = curParam.IvaId21 &&--- Por Tabla es 5
.fe.F1DetalleIvaBaseImp = curParam.IvaBase21 &&--- 150
.fe.F1DetalleIvaImporte = curParam.IvaImp21 &&--- 31.50
Else
.fe.f1IndiceItem = 1
.fe.F1DetalleIvaId = curParam.IvaId105
.fe.F1DetalleIvaBaseImp = curParam.IvaBase105
.fe.F1DetalleIvaImporte = curParam.IvaImp105
Endif
Else
.fe.f1IndiceItem = 0
.fe.F1DetalleIvaId = 3
.fe.F1DetalleIvaBaseImp = curParam.ImpTotal &&--- 150
.fe.F1DetalleIvaImporte = 0 &&--- 31.50
Endif
If This.Es_Credito
=Seek(FacElec.IdFac,"Referencia","IdFac")
.Fe.F1DetalleCbtesAsocItemCantidad = 1
.Fe.f1IndiceItem = 0
.Fe.F1DetalleCbtesAsocTipo = Referencia.CbteTipo
.Fe.F1DetalleCbtesAsocPtoVta = Referencia.PtoVta
.Fe.F1DetalleCbtesAsocNroS = Referencia.Numero
.Fe.F1DetalleCbtesAsocCUIT = Referencia.DocNro
.Fe.f1DetalleCbtesAsocFecha = Referencia.cFecha
Endif
.Fe.F1DetalleCbtesAsocItemCantidad = 0
.Fe.F1DetalleOpcionalItemCantidad = 0
.Fe.ArchivoXMLRecibido = LugarFE+"\recibido.xml"
.Fe.ArchivoXMLEnviado = LugarFE+"\enviado.xml"
&&--- Agregado para QR
.Fe.F1DetalleQRArchivo = lcQRArchivo
.Fe.f1detalleqrtolerancia = 1
.Fe.f1detalleqrresolucion = 4
.Fe.f1detalleqrformato = 6
&&---
lResultado = .Fe.F1CAESolicitar()
Wait Clear
If lResultado Then...
Pero en caso de CF y MT lResultado siempre es = .f.
Muchas gracias de antemano.