FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Factura Electr贸nica / Fivewin (CHILE)
Posts: 83
Joined: Wed Apr 20, 2011 03:08 PM
Factura Electr贸nica / Fivewin (CHILE)
Posted: Thu Jul 24, 2014 07:40 PM

Estimados

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

De ante mano muchas gracias :D

Saludos desde Santiago

Sergio Vacarezza S.
Programador Freelance
sergio@vacarezza.cl
Santiago, Chile

Harbour 3.2.0dev (r2407221137) - FWH 24.08 - MariaDB 12.2.2 - FivEdit 22.0214

Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Re: Factura Electr贸nica / Fivewin (CHILE)
Posted: Thu Jul 24, 2014 08:21 PM

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

;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
Posts: 83
Joined: Wed Apr 20, 2011 03:08 PM
Re: Factura Electr贸nica / Fivewin (CHILE)
Posted: Thu Jul 24, 2014 10:56 PM

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

Sergio Vacarezza S.
Programador Freelance
sergio@vacarezza.cl
Santiago, Chile

Harbour 3.2.0dev (r2407221137) - FWH 24.08 - MariaDB 12.2.2 - FivEdit 22.0214

Posts: 337
Joined: Fri Oct 07, 2005 02:44 PM
Re: Factura Electr贸nica / Fivewin (CHILE)
Posted: Fri Jul 25, 2014 01:24 PM

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

Hola,

Soy un Contador que por necesidad aprendio a programar y se quedo programando.
Posts: 2
Joined: Mon Jul 06, 2015 02:14 PM
Re: Factura Electr贸nica / Fivewin (CHILE)
Posted: Mon Jul 06, 2015 02:18 PM

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

Posts: 337
Joined: Fri Oct 07, 2005 02:44 PM
Re: Factura Electr贸nica / Fivewin (CHILE)
Posted: Mon Jul 06, 2015 03:23 PM
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
Hola,

Soy un Contador que por necesidad aprendio a programar y se quedo programando.
Posts: 2
Joined: Mon Jul 06, 2015 02:14 PM
Re: Factura Electr贸nica / Fivewin (CHILE)
Posted: Mon Jul 06, 2015 03:37 PM

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.

Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Re: Factura Electr贸nica / Fivewin (CHILE)
Posted: Tue Jul 07, 2015 01:35 PM

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

Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Re: Factura Electr贸nica / Fivewin (CHILE)
Posted: Tue Jul 07, 2015 08:31 PM

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: viewtopic.php?f=6&t=29641&p=167823#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 los cambios, 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

Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: Factura Electr贸nica / Fivewin (CHILE)
Posted: Mon Jul 13, 2015 01:33 AM

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

Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Re: Factura Electr贸nica / Fivewin (CHILE)
Posted: Tue Jul 14, 2015 09:20 AM
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 (fw): Select all Collapse
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
Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 336
Joined: Wed May 16, 2007 09:40 PM
Re: Factura Electr贸nica / Fivewin (CHILE)
Posted: Fri Jul 17, 2015 07:36 PM

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

Fivewin-Xharbour 24.09, Iquique, Chile
Posts: 337
Joined: Fri Oct 07, 2005 02:44 PM
Re: Factura Electr贸nica / Fivewin (CHILE)
Posted: Thu Aug 13, 2015 03:40 PM
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 (fw): Select all Collapse
#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: <!-- m --><a class="postlink" href="https://palena.sii.cl/cvc_cgi/dte/ee_empresas_dte.html">https://palena.sii.cl/cvc_cgi/dte/ee_empresas_dte.html</a><!-- m -->")
   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
Hola,

Soy un Contador que por necesidad aprendio a programar y se quedo programando.
Posts: 115
Joined: Fri Oct 14, 2005 07:10 PM
Re: Factura Electr贸nica / Fivewin (CHILE)
Posted: Fri Aug 28, 2015 04:24 PM
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 (fw): Select all Collapse
   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.
Saludos,

Gonzalo

Puerto Montt - CHILE

FWH 22.12 - Harbour 3.2.0dev (r2008190002) - Borland/Embarcadero C++ 7.0(32-bit)
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Factura Electr贸nica / Fivewin (CHILE)
Posted: Fri Aug 28, 2015 05:03 PM
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/viewtopic.php?f=6&t=30989&p=178733#p178709

Saludos

Continue the discussion