
EMISION DE XML A PARTIR DE CLIPPER HARBOUR O CUALQUIER WEA XBASE
Clipper/FiveWin
Publicado el 24 de Marzo del 2017 por Julio Cesar
4.321 visualizaciones desde el 24 de Marzo del 2017
PRG programa generador de XML
FUNCTION DTE()
Private cCabeza := space(1000)
Private cEmisor := Space(1000)
Private cCuerpo := space(2000)
Private cTotales := space(500)
PRIVATE L1,L2,L3
PRIVATE cTotal := 0
PRIVATE cIvaT := 0
PRIVATE cIva := 0
PRIVATE cTotalT := 0
SET DELE ON
SELE FACTURAS
DBGOTOP()
PRIVATE cTipoDTE := " "
DO CASE
CASE AllTrim(cTipo) = "FACTURA" ; cTipoDTE:= "33"
CASE AllTrim(cTipo) = "GUIA"
If cNoConst = .t.
cEsto:= "ESTO NO CONSTITUYE VENTA SOLO TRASLADO DE MERCADERIA"
else
cEsto:= ""
EndIf
cTipoDTE := "52"
ENDCASE
Do Case
Case AllTrim(cN_REF) = "ORDEN DE COMPRA" ; VAR := "801"
Case AllTrim(cN_REF) = "CONTRATO" ; VAR := "803"
Case AllTrim(cN_REF) = "NOTA DE PEDIDO" ; VAR := "802"
Case AllTrim(cN_REF) = "PROCESO CHILE COMPRA" ; VAR := "805"
Case AllTrim(cN_REF) = "RESOLUCION" ; VAR := "804"
Case AllTrim(cN_REF) = "HOJA ENTRADA SERVICIO" ; VAR := "HES"
Case AllTrim(cN_REF) = "NO APLICA" ; VAR := "NOA"
ENDCASE
IF Empty(VAR)
MsgInfo("NO HAY REFERENCIA ACTIVA EN LA FACTURA")
ENDIF
IF VAR != "NOA"
// FWrite(cDTE,"1" + ";" + VAR + ";" + AllTrim(cNId) + ";" + + ";" + ";" + ";")
ENDIF
NOTE ------------------------------
cFac := FACTURAS->NFAC
cRut := FACTURAS->RUT
cDig := FACTURAS->DIG
cRutTot := alltrim(FACTURAS->RUT) + "-" + alltrim( FACTURAS->DIG )
cNombre := FACTURAS->Nombre
cGiro := FACTURAS->GIRO
cDirec := alltrim(FACTURAS->Direc)
cCiudad := Alltrim(FACTURAS->CIUDAD)
cFonos := Alltrim(FACTURAS->FONOS)
cDTE := fCreate("f"+ALLTRIM(STR(cFAC))+".XML")
cVer := "1.0"
FWrite(cDTE,"<integracion>"+ CRLF )
FWrite(cDTE, " <DTE version=" + Chr(34) + cVer + Chr(34) + ">" + CRLF )
FWrite(cDTE,"<Documento ID=" + Chr(34) + "ID1" + Chr(34) + ">"+CRLF)
FWrite(cDTE,"<Encabezado>"+CRLF )
FWrite(cDTE,"<IdDoc>"+CRLF )
FWrite(cDTE,"<TipoDTE>" + cTipoDTE + "</TipoDTE>"+CRLF )
FWrite(cDTE,"<Folio>" + ALLTRIM(STR(cFac)) + "</Folio>"+CRLF )
FWrite(cDTE,"<FchEmis>"+ dtoc(CFecha) + "</FchEmis>"+CRLF )
FWrite(cDTE,"<FchVenc>"+ dtoc(CFecha) + "</FchVenc>"+CRLF )
FWrite(cDTE,"</IdDoc>"+CRLF )
FWrite(cDTE,"<Emisor>"+CRLF )
FWrite(cDTE,"<RUTEmisor>" + AllTrim(ERUT) + "-" + AllTrim(EDig) + "</RUTEmisor>"+CRLF )
FWrite(cDTE,"<RznSoc>" + AllTrim(ENombre) + "</RznSoc>" + CRLF )
FWrite(cDTE,"<GiroEmis>" + AllTrim(EGIRO) + "</GiroEmis>" + CRLF )
FWrite(cDTE,"<Acteco>" + "523410" + "</Acteco>" + CRLF )
FWrite(cDTE,"<DirOrigen>" + AllTrim(EDirec) + "</DirOrigen>" + CRLF )
FWrite(cDTE,"<CmnaOrigen>" + AllTrim(ECIUDAD) + "</CmnaOrigen>" + CRLF )
FWrite(cDTE,"<CiudadOrigen>" + AllTrim(ECIUDAD) + "</CiudadOrigen>" + CRLF )
FWrite(cDTE,"</Emisor>" + CRLF )
FWrite(cDTE,"<Receptor>" + CRLF )
FWrite(cDTE,"<RUTRecep>" + cRutTot + "</RUTRecep>" + CRLF )
FWrite(cDTE,"<RznSocRecep>" + AllTrim(cNombre) + "</RznSocRecep>" + CRLF )
FWrite(cDTE,"<GiroRecep>" + AllTrim(CGiro) + "</GiroRecep>" + CRLF )
FWrite(cDTE,"<Contacto>" + "" + "</Contacto>" + CRLF )
FWrite(cDTE,"<DirRecep>" + AllTrim(cDirec) + "</DirRecep>" + CRLF )
FWrite(cDTE,"<CmnaRecep>" + AllTrim(cCiudad) + "</CmnaRecep>" + CRLF )
FWrite(cDTE,"<CiudadRecep>" + cCiudad + "</CiudadRecep>" + CRLF )
FWrite(cDTE,"</Receptor>" + CRLF )
FWrite(cDTE,"<Totales>" + CRLF )
FWrite(cDTE,"<MntNeto>" + alltrim(str(Round(cNetoT,0))) + "</MntNeto>" + CRLF )
FWrite(cDTE,"<MntExe>" + "0" + "</MntExe>" + CRLF )
FWrite(cDTE,"<TasaIVA>" + "19" + "</TasaIVA>" + CRLF )
FWrite(cDTE,"<IVA>" + alltrim(str(Round(cTIva,0) )) + "</IVA>" + CRLF )
FWrite(cDTE,"<MntTotal>" + alltrim(str(round(cPAGARET,0))) + "</MntTotal>" + CRLF )
FWrite(cDTE,"</Totales>" + CRLF )
FWrite(cDTE,"</Encabezado>" + CRLF )
NRO := 1
DBGOTOP()
DO WHILE.NOT.EOF()
VAR1 := AllTrim(TRANSFORM(FACTURAS->NETO1, '999999999.999'))
VAR2 := AllTrim(TRANSFORM(FACTURAS->neto1 * FACTURAS->Cantidad,"999999999"))
FWrite(cDTE,"<Detalle>" + CRLF )
FWrite(cDTE,"<NroLinDet>" + ALLTRIM(str(Nro)) + "</NroLinDet>" + CRLF )
FWrite(cDTE,"<CdgItem>" + CRLF )
FWrite(cDTE,"<TpoCodigo>" + "INT1" + "</TpoCodigo>" + CRLF )
FWrite(cDTE,"<VlrCodigo>" + AllTrim(FACTURAS->CODIGO) + "</VlrCodigo>" + CRLF )
FWrite(cDTE,"</CdgItem>" + CRLF )
FWrite(cDTE,"<NmbItem>" + AllTrim(FACTURAS->DESCRIP) + "</NmbItem>" + CRLF )
FWrite(cDTE,"<QtyItem>" + AllTrim(STR(FACTURAS->CANTIDAD)) + "</QtyItem>" + CRLF )
FWrite(cDTE,"<PrcItem>" + VAR1 + "</PrcItem>" + CRLF )
FWrite(cDTE,"<MontoItem>" + VAR2 + "</MontoItem>" + CRLF )
FWrite(cDTE,"</Detalle>" + CRLF )
SKIP
NRO ++
ENDDO
FWrite(cDTE,"</Documento> " + CRLF )
FWrite(cDTE,"</DTE> " + CRLF )
FWrite(cDTE,"<Adicional> " + CRLF )
FWrite(cDTE,"<Uno></Uno>" + CRLF )
FWrite(cDTE,"<Dos></Dos>" + CRLF )
FWrite(cDTE,"<Tres></Tres>" + CRLF )
FWrite(cDTE,"<Cuatro></Cuatro>" + CRLF )
FWrite(cDTE,"<Cinco></Cinco>" + CRLF )
FWrite(cDTE,"<Seis></Seis>" + CRLF )
FWrite(cDTE,"<Siete></Siete>" + CRLF )
FWrite(cDTE,"<Ocho>" + "observacion prueba" + " </Ocho>" + CRLF )
FWrite(cDTE,"<Nueve></Nueve>" + CRLF )
FWrite(cDTE,"<Diez></Diez>" + CRLF )
FWrite(cDTE,"<Once></Once>" + CRLF )
FWrite(cDTE,"<Doce></Doce>" + CRLF )
FWrite(cDTE,"<Trece></Trece>" + CRLF )
FWrite(cDTE,"<Catorce></Catorce>" + CRLF )
FWrite(cDTE,"<Quince></Quince>" + CRLF )
FWrite(cDTE,"<Dieciseis></Dieciseis>" + CRLF )
FWrite(cDTE,"<Diecisiete></Diecisiete>" + CRLF )
FWrite(cDTE,"<Dieciocho></Dieciocho>" + CRLF )
FWrite(cDTE,"<Diecinueve></Diecinueve>" + CRLF )
FWrite(cDTE,"<Veinte></Veinte>" + CRLF )
FWrite(cDTE,"<Veintiuno></Veintiuno>" + CRLF )
FWrite(cDTE,"<Veintidos></Veintidos>" + CRLF )
FWrite(cDTE,"<Veintitres></Veintitres>" + CRLF )
FWrite(cDTE,"<Veinticuatro></Veinticuatro>" + CRLF )
FWrite(cDTE,"<Veinticinco></Veinticinco>" + CRLF )
FWrite(cDTE,"<Veintiseis></Veintiseis>" + CRLF )
FWrite(cDTE,"<Veintisiete></Veintisiete>" + CRLF )
FWrite(cDTE,"<Veintiocho></Veintiocho>" + CRLF )
FWrite(cDTE,"<Veintinueve></Veintinueve>" + CRLF )
FWrite(cDTE,"<Treinta></Treinta>" + CRLF )
FWrite(cDTE,"<Treintayuno></Treintayuno>" + CRLF )
FWrite(cDTE,"<Treintaydos></Treintaydos>" + CRLF )
FWrite(cDTE,"<Treintaytres></Treintaytres>" + CRLF )
FWrite(cDTE,"<Treintaycuatro></Treintaycuatro>" + CRLF )
FWrite(cDTE,"<Treintaycinco></Treintaycinco>" + CRLF )
FWrite(cDTE,"<Treintayseis></Treintayseis>" + CRLF )
FWrite(cDTE,"<Treintaysiete></Treintaysiete>" + CRLF )
FWrite(cDTE,"<Treintayocho></Treintayocho>" + CRLF )
FWrite(cDTE,"<Treintaynueve></Treintaynueve>" + CRLF )
FWrite(cDTE,"<Cuarenta></Cuarenta><Cuarentayuno>" + CRLF )
FWrite(cDTE,"</Cuarentayuno><Cuarentaydos></Cuarentaydos>" + CRLF )
FWrite(cDTE,"<Cuarentaytres></Cuarentaytres>" + CRLF )
FWrite(cDTE,"<Cuarentaycuatro></Cuarentaycuatro>" + CRLF )
FWrite(cDTE,"<Cuarentaycinco></Cuarentaycinco>" + CRLF )
FWrite(cDTE,"<Cuarentayseis></Cuarentayseis>" + CRLF )
FWrite(cDTE,"<Cuarentaysiete></Cuarentaysiete>" + CRLF )
FWrite(cDTE,"<Cuarentayocho></Cuarentayocho>" + CRLF )
FWrite(cDTE,"<Cuarentaynueve></Cuarentaynueve>" + CRLF )
FWrite(cDTE,"<Cincuenta></Cincuenta>" + CRLF )
FWrite(cDTE,"</Adicional>" + CRLF )
FWrite(cDTE,"</integracion>" + CRLF )
FClose(cDTE)
PRIVATE c_Orig :=cDte
PRIVATE c_Dest :="C:\STAT\"
RUN COPY *.XML c:\DTE\PROCESO
RUN DEL *.XML
return nil
Comentarios sobre la versión: 1.2 (1)
En tal caso me interesaria establecer contacto para este desarrollo.