Page 1 of 1

Factura Electrónica / Fivewin (CHILE)

Posted: Thu Jul 24, 2014 7:40 pm
by checo176
Estimados

Alguien que tiene alguna experiencia con Factura Electrónica en Chile.

De ante mano muchas gracias :D

Saludos desde Santiago

Re: Factura Electrónica / Fivewin (CHILE)

Posted: Thu Jul 24, 2014 8:21 pm
by Adolfo
Checo ...

Lejos la mejor opcion es contratar un servicio con algun Holder de Facturas electronicas, quienes que entregan un demonio que instalas en un pc, el revisa si hay o no algun archivo xml. Si lo encuentra te hace el proceso completo de envio ,validacion, hosting y notificacion al SII. Tu solo generas el xml con la info sacada de tu sistema.

Saludos
Adolfo

Re: Factura Electrónica / Fivewin (CHILE)

Posted: Thu Jul 24, 2014 10:56 pm
by checo176
Adolfo:

Garcias por tu respuesta. Puede que tengas razón, ya que estuve revisando los requisitos del SII y son algo engorrosos. Ahora una consulta vital, cómo genero el archivo XML desde mi sistema? y sábes tu cuales son los datos que se deben extraer del sistema?

Saludos

Re: Factura Electrónica / Fivewin (CHILE)

Posted: Fri Jul 25, 2014 1:24 pm
by Lautaro
Checo,

Depende con que empresa vayas a trabajar, cada una tiene un formato distinto para capturar la informacion.

Ademas que los precios y la forma de almacenamiento de los documentos electronicos depende del servicio contratado.

Tambien recordar que los facturadores electronicos tienen que cumplir obligaciones tales como el responder a los documentos recibidos y a contar de agosto, solo podran usar el iva de las facturas a las que se les haya dado la recepcion conforme de mercaderias o servicios, ya sea en forma manual, firmando la guia de despacho que se recibio o en forma electronica, mediante el envio del archivo de aceptacion al proveedor y es importante saber como opera el proveedor del servicio de facturacion electronica respecto de esto.

Tambien tienen la obligacion de enviar los libros de compra y venta al SII cada mes.

Si gustas podemos verlo por privado, comunicate a mi email : lautaro_punto_moreira_arroba_gmail.com ( sustituir el _punto_ por . y el _arroba_ por @ )

Saludos

Lautaro
Osorno
Chile

Re: Factura Electrónica / Fivewin (CHILE)

Posted: Mon Jul 06, 2015 2:18 pm
by viceanto10
lautaro tiene la solucion para la facturacion en chile, pero no comparte nada ni vende, no se porque no lo hace si este foro es para ayudarnos..
saludos

Re: Factura Electrónica / Fivewin (CHILE)

Posted: Mon Jul 06, 2015 3:23 pm
by Lautaro
Estimado Viceanto10

Efectivamente para mi empresa he desarrollado una solucion de factura electronica, la cual estoy impedido de vender o entregar por un asunto legal y comercial.

Creo que la mayoria aqui entiende mi situacion, y si revisas, dentro del foro si he respondido , quizas no con el detalle ( codigo listo para usar ), que algunos quisieran, pero si he entregado mi experiencia en el tema.

No recuerdo que nos hayamos puesto en contacto alguna vez para hablar sobre el tema.

Sobre el no comparte nada ni vende, solo te puedo decir que nuestro producto es comercial y puede integrarse en forma transparente con otras aplicaciones via traspaso de archivos y tiene un valor de arriendo mensual bastante economico y sin limite de numero de documentos emitidos y para los programadores que lo integran con su aplicacion tenemos un sistema de comisiones con el cual varios colegas, incluyendo un que tambien usa fivewin, estan bastante conformes.

Si deseas mas informacion en este mismo hilo esta mi correo para contacto, el que anoto aqui nuevamente : lautaro_punto_moreira_arroba_gmail.com ( sustituir el _punto_ por . y el _arroba_ por @ )

Tal como he respondido en alguna ocasion, si puedo ayudar lo hare, pero me veo limitado a poner ejemplos con codigo.

En lo tecnico lo unico externo a harbour y fivewin que usamos es la utilidades xmlsec que pueden encontrar en : https://www.aleksey.com/xmlsec/

Saludos desde Osorno

Lautaro Moreira

Re: Factura Electrónica / Fivewin (CHILE)

Posted: Mon Jul 06, 2015 3:37 pm
by viceanto10
lautaro, claro que nunca hemos hablado pero le he consultado a varios colegas y me dicen esto
que no compartes ni vende y eso de arriendo, es como amarrarte por siempre con alguien la idea es tener nuestro propio facturador.

gracias de todas manera.

Re: Factura Electrónica / Fivewin (CHILE)

Posted: Tue Jul 07, 2015 1:35 pm
by thefull
Buenas

Me gustaría dar mi opinión al respecto sobre este tema, pues creo que es muy común en varios paises.
He participado en varias soluciones de distintos paises, uno desde cero y en otros colaborando y en otros simplementa aportando un trabajo inicial.

Entiendo perfectamente a Lautaro, ha realizado un trabajo, y ese trabajo consiste que otros no tengan que hacer practicamente nada,
en muy poco tiempo puedas tener tu sistema corriendo.
La ventaja, es que cualquier cambio de legislacion, y creerme que ocurre, prácticamente no deberias hacer mucho para adaptarte, y además no deberías ni
estar pendiente de ello.
Esta solución la usamos en México con Rene, y en Brasil con otra empresa y es la mejor opción si no quieres problemas.

Ahora para Portugal lo hicimos desde cero, y si no tienes tiempo, estar pendiente de cambios de legislación o en su caso, que el cliente te informe
que la agencia tributaria no le valida los XML, el tiempo a emplear puede ser considerable.

Ahora bien, considero que esto es una comunidad, que no vivimos del trabajo de otros compañeros, se podria crear un proyecto, que pueda contener
las diversas facturas electronicas y que cualquier pueda usarlo.

Por lo que he visto, hay varios compañeros de diversos paises que podrían colaborar en realizar la factura electronica, solo es cuestión de ponerse de acuerdo,
y crear un proyecto común, libre, y que pueda ser usado y/o comercializado por cualquiera.

Si quieres algo, hazlo, y compartelo. Claro que no siempre es posible, porque en la empresa que se trabaja no te permite hacerlo.
Para Chile no he realizado nada, pero supongo que no será muy diferente a otras soluciones de otros paises.

Saludos Cordiales

Re: Factura Electrónica / Fivewin (CHILE)

Posted: Tue Jul 07, 2015 8:31 pm
by thefull
Buenas

Visto por encima, aparentemente no tiene demasiada complejidad, además , es similar en la manera de trabajar de Uruguay o Peru, que una base para
trabajar esta aquí mismo, a través de SOAP: http://forums.fivetechsupport.com/viewt ... 23#p167823

En https://github.com/niclabs/DTE teneis un trabajo realizado en Java, que además contiene todos los XSD de los esquemas para montar los XML.

También aquí, he encontrado info que podemos aprovechar para aprender que hacer.
http://lenguajedemaquinas.blogspot.com. ... ii_28.html

Mi consejo es que intenteis hacer una serie de clases similar a los esquemas XSD, de tal manera, que su mantenimiento sea muy sencilla a la hora de _, y
que montar los XML sea muy sencillo.
Info : http://www.sii.cl/factura_electronica/autenticacion.pdf

Si tengo un poco de tiempo, os monto un par de ejemplos, tal y como realizo en otros productos.

Saludos Cordiales

Re: Factura Electrónica / Fivewin (CHILE)

Posted: Mon Jul 13, 2015 1:33 am
by Patricio Avalos Aguirre
Hola a tod@s

Yo tuve que hacer los XML para la Empresa de servicio de BSOFT, el cual uno crea el xml y ellos hacen todo
pero el problema que estas empresas cobran por paquetes de documentos electronicos y no son baratos, ademas cobran por mantenimiento anual si nos les pagas te cortan el servicio a si de chanta
el problema pasa por las PYME que se les subiria el costo mensual que ademas no hacen tantas facturas.

Mis clientes Pyme han optado por hacer las Facturas electronicas a travez del SII que es gratis, doble trabajo, hacerlo por mi sistema y a la vez por el SII, podria haber una solucion para esto que pudiera hacer la factura electronica y que se conecten al SII y envien los libros de compra y venta

bueno tenia entendido que Lautaro habia implementado pero no sabia que uno podia adquerirlo

thefull sería interesante que pudieras hacer una solucion por lo menos yo estoy dispuesto a invertir como muchos de los chilenos que tenemos estos problemas

Re: Factura Electrónica / Fivewin (CHILE)

Posted: Tue Jul 14, 2015 9:20 am
by thefull
Buenas
Os dejo aqui un trabajo inicial, que espero podais continuar , es un boceto de como debería hacerse.
Tiene 2 partes,

1) Parte. Conexion por SOAPClient
El ejemplo tiene una ejemplo de como obtener una semilla a través de Soap, esto os debe de abrir la mente de como
podéis hacer la comunicacion.

2) Boceto de construccion del XML EnvioDTE. Teneis la base sobre la que trabajar, por si os corre prisa.
Ojo, no está ni mucho menos acabada, pero es para que os hagais una idea de como hacer clases independientes por cada
seccion del XSD, de esta manera, el mantenimiento es super sencillo.
Podeis ver como los objetos se llaman unos a otros para escribir cada uno su parte del XML, en cascada.

3) Tema de Cifrado, hay que buscar ayuda de como usar openssl. MI CONSEJO es usarlo EXTERNO a la aplicacion,
de lo contrario, os aseguro que como en el sistema exista algún OpenSSL con una version distintas, el sufrimiento no merece
la pena ;-)
Por lo que poco que he visto , creo que funciona muy similar al de Portugal, pero no me hacerme mucho caso, porque no
he podido apenas mirar nada.

Espero que os ayude un poco.
Nota:
#SOPORTE PARA MXML
MXML_LIB=$(HARBOUR_LIB_DIR)\mxml.lib
HB_MXML_LIB=$(HARBOUR_LIB_DIR)\hbmxml.lib

Code: Select all

function Chile()
       Local cValue := ""
       Local oSoapClient
       Local lOk, orespuesta, i
       Local cDominio_WebServices := "https://palena.sii.cl/DTEWS/CrSeed.jws?WSDL"
       Local oEnvioDte, cXml
       
       lOk := .T.
      

       // Ejemplo para obtener una semilla --------------------------------------------------

       oSoapClient  := CreateObject( "MSSOAP.SoapClient30" )  // Conecta a SOAP 3.0
       oSoapClient:msSoapInit( cDominio_WebServices )
 
       try
          cXml := oSoapClient:getSeed() 
          alert( cXml )
       catch
          cValue := oSOAPClient:faultString + Hb_OsNewLine() + oSOAPClient:detail
          alert( "error:"+cValue )
       end

       oSoapClient := NIL

       // Ejemplo para obtener una semilla --------------------------------------------------


       // Ejemplo de como formar XML electronico.
       oEnvioDte := EnvioDTE():New()
          
       oEnvioDte:oSetDTE:ID := "1"
       oEnvioDte:oSetDTE:oCaratula:RutEmisor    := "1"
       oEnvioDte:oSetDTE:oCaratula:RutEnvia     := "2"
       oEnvioDte:oSetDTE:oCaratula:RutReceptor  := "3"
       oEnvioDte:oSetDTE:oCaratula:FchResol     := "2015-01-01"
       oEnvioDte:oSetDTE:oCaratula:TmstFirmaEnv :=  hb_TSToStr( hb_DateTime() )
       oEnvioDte:oSetDTE:oCaratula:oSubTotDTE:TpoDTE := "33"
     
       // Creamos un documentro tributario Electronico
       oDte := DTE():New()
       oDte:version = "2"
       oEnvioDte:AddDTE( oDte )

       oDte := DTE():New()
       oDte:version = "23"
       oEnvioDte:AddDTE( oDte )
    
       Alert( oEnvioDte:WriteXML() )


    quit
return nil


#include "hbclass.ch"
/****************************************************************************/
/****************************************************************************/
CLASS EnvioDTE FROM TResponse
      DATA version INIT "1.0"  
      DATA oSetDTE
      DATA oSignature  // TODO:objeto signature


      METHOD New() CONSTRUCTOR
      METHOD WriteXML() 
      METHOD AddDTE( oDTE ) INLINE ::oSetDTE:AddDTE( oDTE )

END CLASS

METHOD New() CLASS EnvioDTE
    
    ::Operacion := "EnvioDTE"
    ::oSetDTE := SetDTE():New()

RETURN Self      

METHOD WriteXML() CLASS EnvioDTE
    Local pNode, pMsgs, pTree
    Local oSuplement

    pNode := ::CreateXML( )
             mxmlElementSetAttr( pNode, "version", ::version )
             

    ::oSetDTE:WriteXML( pNode )

    
    ::GetXML()

RETURN ::cXML


/*
SetDTE , sección del documento que contiene toda  la data del envío, esto es la 
Carátula y 1 o más DTE, y su  respectiva firma electrónica 
*/
CLASS SetDTE
      DATA ID INIT "ID_1"
      DATA oCaratula
      DATA aoDTEs

      METHOD New() CONSTRUCTOR 
      METHOD WriteXML() 
      METHOD AddDTE( oDTE ) INLINE aadd( ::aoDTEs, oDTE )

END CLASS

METHOD new() CLASS SetDTE
    
    ::aoDTEs := {}  // Arrays de objetos DTE
    ::oCaratula := Caratula():New()

RETURN Self

METHOD WriteXML( pNode )  CLASS SetDTE
      Local pSetDte, oDte

      pSetDte := mxmlNewElement( pNode, "SetDTE" )
                 mxmlElementSetAttr( pSetDte, "ID", ::ID )
       
      ::oCaratula:WriteXML( pSetDte )  
   
      for each oDte in ::aoDTEs
          oDte:WriteXML( pSetDte )
      next      


RETURN pSetDte

/*****************************************************************/
/* Resumen de información enviada                                */
/*****************************************************************/
CLASS Caratula 
      DATA version      INIT "1"
      DATA RutEmisor    INIT "0"
      DATA RutEnvia     INIT "0"
      DATA RutReceptor  INIT "0"
      DATA FchResol     INIT "2000-01-01"
      DATA NroResol     INIT "123456"
      DATA TmstFirmaEnv INIT "2000-01-01T00:00:00"
      DATA oSubTotDTE

      METHOD New() CONSTRUCTOR 
      METHOD WriteXML() 

END CLASS

METHOD new() CLASS Caratula
     ::oSubTotDTE := SubTotDTE():New()
RETURN Self


METHOD WriteXML( pNode )  CLASS Caratula
      Local pCaratula, node

      pCaratula := mxmlNewElement( pNode, "Caratula" )
           mxmlElementSetAttr( pCaratula, "version", ::version )
           
           node := mxmlNewElement( pCaratula, "RutEmisor")
           mxmlNewText(node, 0, ::RutEmisor)
           
           node := mxmlNewElement( pCaratula, "RutEnvia")
           mxmlNewText(node, 0, ::RutEnvia)

           node := mxmlNewElement( pCaratula, "RutReceptor")
           mxmlNewText(node, 0, ::RutReceptor )
           
           node := mxmlNewElement( pCaratula, "FchResol")
           mxmlNewText(node, 0, ::FchResol)
           
           node := mxmlNewElement( pCaratula, "NroResol")
           mxmlNewText(node, 0, ::NroResol )

           node := mxmlNewElement( pCaratula, "TmstFirmaEnv")
           mxmlNewText(node, 0, ::TmstFirmaEnv )

      ::oSubTotDTE:WriteXML( pCaratula )
                   

RETURN pCaratula


/****************************************************************************/
/* Subtotales de DTE enviados                                                */
/****************************************************************************/
CLASS SubTotDTE 
      DATA TpoDTE INIT "0"
      DATA NroDTE INIT "0"

      METHOD New() CONSTRUCTOR 
      METHOD WriteXML( pNode) 

END CLASS

METHOD new() CLASS SubTotDTE
RETURN Self

METHOD WriteXML( pNode )  CLASS SubTotDTE
      Local pSubTotDTE, node

      pSubTotDTE := mxmlNewElement( pNode, "SubTotDTE" )

           node := mxmlNewElement( pSubTotDTE, "TpoDTE")
           mxmlNewText(node, 0, Cstr( ::TpoDTE ) )

           node := mxmlNewElement( pSubTotDTE, "NroDTE")
           mxmlNewText(node, 0, Cstr( ::NroDTE ) )

RETURN pSubTotDTE



/****************************************************************************/
/* Documento Tributario Electronico                                         */
/****************************************************************************/
CLASS DTE
      DATA version INIT "1"
      DATA oDocumento 

      METHOD New() CONSTRUCTOR 
      METHOD WriteXML( pNode )   

END CLASS

METHOD new() CLASS DTE
    ::oDocumento := Documento():New()
RETURN Self

METHOD WriteXML( pNode ) CLASS DTE
      Local pDTE, node

      pDte := mxmlNewElement( pNode, "DTE" )
              mxmlElementSetAttr( pDte, "version", ::version )

      ::oDocumento:WriteXML( pDte )        

RETURN pDTE


/****************************************************************************/
/* Información Tributaria del DTE                                           */
/****************************************************************************/
CLASS Documento
      DATA ID INIT "1"
      DATA oEncabezado
      DATA oDetalle
      DATA oSubTotInfo

      METHOD New() CONSTRUCTOR 
      METHOD WriteXML( pNode )   

END CLASS

METHOD new() CLASS Documento
RETURN Self

METHOD WriteXML( pNode ) CLASS Documento
      Local pDTE, node

      pDte := mxmlNewElement( pNode, "Documento" )
              mxmlElementSetAttr( pDte, "ID", ::ID )

RETURN pDTE


/****************************************************************************/
/****************************************************************************/
CLASS TResponse
      DATA Error     INIT .F.
      DATA oDoc
      DATA lUTF8     INIT .F.
      DATA cXML      INIT ""
      DATA Operacion INIT "" 

      METHOD New() INLINE Self
      METHOD CreateXML()
      METHOD WriteXMLFile( cFile ) VIRTUAL
      METHOD WriteXML()
      METHOD GetXML() 
      METHOD Destroy() 

ENDCLASS


METHOD CreateXML( ) CLASS TResponse
   Local oNode, oNodeP

   ::oDoc := mxmlNewXML("1.0") 

   oNodeP := mxmlNewElement( ::oDoc, ::Operacion )
             mxmlElementSetAttr( oNodeP, "xmlns", "http://www.sii.cl/SiiDte" )
             mxmlElementSetAttr( oNodeP, "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance")
             mxmlElementSetAttr( oNodeP, "xsi:schemaLocation", "http://www.sii.cl/SiiDte EnvioDTE_v10.xsd")

RETURN oNodeP  

METHOD WriteXML() CLASS  TResponse
   
   ::CreateXML( )
   ::GetXML()
   ::Destroy()
    
RETURN ::cXML

METHOD GetXML( ) CLASS TResponse
   
    ::cXML := MXMLSAVEALLOCSTRING( ::oDoc )
   
   // TODO: Hay que hacer una conversion de UTf-8 a iso-8859-1, y cambiar encoding="utf-8"  a iso-8859-1
   if !::lUTF8
   endif

RETURN ::cXML

METHOD Destroy() CLASS TResponse
    if !empty( ::oDoc )
        mxmlDelete( ::oDoc )
    endif    
RETURN NIL          

 

Re: Factura Electrónica / Fivewin (CHILE)

Posted: Fri Jul 17, 2015 7:36 pm
by elmoiquique
Yo me anoto, para ayudar, tambien tengo que desarrollar la aplicacion que firme las los XML,,, lo que es comunicacion con los webservice y creacion de xml, es sencillo,,, lo mas complicado es firmar las facturas

Re: Factura Electrónica / Fivewin (CHILE)

Posted: Thu Aug 13, 2015 3:40 pm
by Lautaro
Hola,

Como nadie mas aporta algo, aqui va como descargar la lista de facturadores electronicos y sus correos registrados en el SII ( Servicio de Impuestos Internos ), correo al cual deben enviarse obligatoriamente los documentos emitidos a otros facturadores electronicos.

Esto descarga el archivo en formato .csv con el cual se puede alimentar una base de datos u otra.

Sobre uso de hbcurl y libcurl favor leer ejemplos y manuales en http://curl.haxx.se , yo no soy experto en la materia, y ahi encontraran los ejemplos necesarios.

Tambien ver ejemplos de uso en harbour en la carpeta \contrib\hbcurl\tests

Saludos,

Lautaro Moreira
Audisoft SPA
Osorno
Chile

Code: Select all

#include "fivewin.ch"
#include "hbcurl.ch"

/*
Funcion para bajar lista de facturadores electronicos del SII
usa la lib hbcurl 
esta pensada para ser llamada desde msgmeter por eso los  parametros ometer,otext,odlg,lend si no lo llaman asi, comentar todo lo relacionado a ello.
notar que el tamaño de la descarga no se puede saber con anticipacion

Basado en codigo publicado en edreams.cl

Programado por Lautaro Moreira - Audisoft SPA
Si va a usar esta funcion no borrar esta informacion

Funcion bajalistafacturadores

curl        = url del archivo a bajar [opcional]
cfile       = Archivo a bajar [opcional]
cdestino  = Nombre del destino para el archivo bajado [opcional]
ometer    = objeto tmeter
otext       = objeto tsay 
odlg         = objeto tdialog
lend         = si es .t. indica que el usuario aborto [funcion no la usa]

retorna texto con ruta de archivo bajado.


*/
FUNCTION bajalistafacturadores(curl,cfile,cdestino,ometer,otext,odlg,lend)


   LOCAL aHeader
   LOCAL curlHandle
   LOCAL ncontador
   LOCAL ddate := date()

   DO WHILE DoW(ddate) == 7 .OR. DoW(ddate) == 1 // solo dias habiles
      --ddate
   ENDDO

   DEFAULT cfile := "ce_empresas_dwnld_"+DToS(ddate)+".csv" 
   DEFAULT cdestino := GetEnv("TEMP")+"\"+cfile
   DEFAULT curl  := "https://palena.sii.cl/cvc_cgi/dte/ee_consulta_empresas_dwnld?NOMBRE_ARCHIVO="+cfile

   ncontador := 0

   ometer:settotal( 10000 )
   ometer:SET(0)



   curlHandle:= curl_easy_init()

   aHeader:={}
   AAdd(aHeader,"Referer: https://palena.sii.cl/cvc_cgi/dte/ee_empresas_dte.html")
   AAdd(aHeader,"Accept-Encoding: gzip, deflate, sdch")
   AAdd(aHeader,"User-Agent: Mozilla/5.0") // (compatible; PROG 1.0; Windows NT 5.0; YComp 5.0.2.4)")

   otext:settext("Descargando Archivo desde el SII")

   IF .NOT. Empty(curlhandle)

      curl_easy_setopt( curlhandle, HB_CURLOPT_HTTPHEADER,aHeader)
      curl_easy_setopt( curlHandle, HB_CURLOPT_URL, cUrl )
      curl_easy_setopt( curlHandle, HB_CURLOPT_SSLVERSION,3)
      curl_easy_setopt( curlHandle, HB_CURLOPT_SSL_VERIFYPEER, .F. )
      curl_easy_setopt( curlHandle, HB_CURLOPT_CONNECTTIMEOUT , 60 )
      curl_easy_setopt( curlHandle, HB_CURLOPT_DL_FILE_SETUP, cdestino )
      curl_easy_setopt( curlHandle, HB_CURLOPT_NOPROGRESS, 0 )
      curl_easy_setopt( curlHandle, HB_CURLOPT_VERBOSE, .F.  ) //lVerbose )
      curl_easy_setopt( curlHandle, HB_CURLOPT_PROGRESSBLOCK, {| nPos, nLen |IF(ncontador>=10000,(ncontador:=0,sysrefresh()),ncontador++), ometer:SET( ncontador ) } )
      /* Do everything */
      curlErr := curl_easy_perform(curlHandle)

      /* Report any errors */
     if .NOT. empty(curlErr)
        msgalert(curl_easy_strerror(curlErr),"Error")
     ENDIF

     curl_easy_reset( curlHandle )

   ELSE
      msgalert("No handle")
   ENDIF

   if !empty(curlHandle)
      curl_easy_cleanup( curlHandle )
   else
      msgalert( "Error")
   endif


RETURN cdestino
 

Re: Factura Electrónica / Fivewin (CHILE)

Posted: Fri Aug 28, 2015 4:24 pm
by gdeteran
Mi experiencia ha sido mas fácil. Contraté con ACEPTA.COM su servicio que consiste en que por cada factura que hago, al momento de imprimir, me piden que deje una copia de la factura en formato XML en una carpeta. Me instalaron un Servicio que revisa permanentemente esta carpeta y si encuentra un archivo, le inserta la firma electrónica y la envía a la impresora y a continuación hace el envío al SII. Si por algún motivo no hay internet, hace el envío una vez que se restablezca la Red.
Estoy haciendo un promedio de 650 facturas mensuales y me cobran 102.000 pesos chilenos aprox. que es un poco menos de lo que me gastaba en talonarios de facturas.

Code: Select all


   cFile    := "C:\Acepta\DTEService\input\" + cTipo + "F" + LTRIM(TRANSFORM(nNumero,"@ZZZZZZZZ"))+ ".XML"

    oPrn := TTxtFile():New( cFile )

    IF oPrn:Open()

       oPrn:Add( "<Documento>")
        oPrn:Add( "<Encabezado>")
            oPrn:Add("<IdDoc>")
                oPrn:Add("<TipoDTE>"            + (cTIDOCV)->Tipo               +   "</TipoDTE>")
               oPrn:Add("<Folio>"         + LTRIM(TRANSFORM(nNumero,"@ZZZZZZZZ")) + "</Folio>")
               oPrn:Add("<FchEmis>"       + cFecha                          +   "</FchEmis>")
//             oPrn:Add("<IndNoRebaja>"   + ""                              +   "</IndNoRebaja>")

                    IF (cTIDOCV)->Tipo = "52"

                    oPrn:Add("<TipoDespacho>"  + "2"                            +   "</TipoDespacho>") // Despacho por cuenta del emisor
                                                                                           // a intalaciones del cliente
                        IF  SUBSTR((cTIDOCV)->Estado,1,1) = "T"
                        oPrn:Add("<IndTraslado>"   + "6"                        +   "</IndTraslado>")  // 6=Otros traslados no venta
                    oPrn:Add("<FmaPago>"       + "3" + "</FmaPago>")                             // 3=Sin Costo(entrega gratuita)
                    ELSE
                        oPrn:Add("<IndTraslado>"   + "1"                        +   "</IndTraslado>")  // 1=Operacion constituye venta
                    oPrn:Add("<FmaPago>"       + IF((cTIDOCV)->Dias_CR = 0,"1","2" ) + "</FmaPago>") // 1=Contado; 2=Credito; 3
                    ENDIF
               ELSE
                oPrn:Add("<FmaPago>"       + IF((cTIDOCV)->Dias_CR = 0,"1","2" ) + "</FmaPago>") // 1=Contado; 2=Credito; 3
               ENDIF

               oPrn:Add("<FchVenc>"       + cFVencim                        +   "</FchVenc>")

            oPrn:Add("</IdDoc>")

            oPrn:Add("<Emisor>")
               oPrn:Add("<RUTEmisor>"    + LTRIM(cRutEmis)              + "</RUTEmisor>")
               oPrn:Add("<RznSoc>"       + RTRIM((cPARAM)->Nombre)  + "</RznSoc>")
               oPrn:Add("<GiroEmis>"     + RTRIM((cPARAM)->Giro)        + "</GiroEmis>")
               oPrn:Add("<Acteco>"       + RTRIM((cPARAM)->Activid)     + "</Acteco>")
               oPrn:Add("<Sucursal>"     + RTRIM((cPARAM)->Ciudad)  + "</Sucursal>")
//             oPrn:Add("<CdgSIISucur>"  + ""                               + "</CdgSIISucur>")
               oPrn:Add("<DirOrigen>"    + RTRIM(LimpiaString((cPARAM)->Direcc))    + "</DirOrigen>")
               oPrn:Add("<CmnaOrigen>"   + RTRIM((cPARAM)->Ciudad)  + "</CmnaOrigen>")
               oPrn:Add("<CiudadOrigen>" + RTRIM((cPARAM)->Ciudad)  + "</CiudadOrigen>")
               oPrn:Add("<CdgVendedor>"  + (cTIDOCV)->CodVen            + "</CdgVendedor>")
            oPrn:Add("</Emisor>")



    oPrn:Close()


 

Esta es una parte del código para generar el formato que me pide ACEPTA.COM, entiendo que hay otros proveedores que piden formato distinto.

Re: Factura Electrónica / Fivewin (CHILE)

Posted: Fri Aug 28, 2015 5:03 pm
by horacio
Hace un tiempo postee las fuentes de factura electrónica en argentina, allí están las rutinas para firmar un archivo xml.
http://forums.fivetechsupport.com/viewt ... 33#p178709

Saludos