Page 2 of 4

Re: FACTURA ELECTRONICA (ARGENTINA)

Posted: Sun Jan 26, 2014 1:49 am
by Roberto Lopez
danielmaximiliano wrote:
Roberto Lopez wrote: También, podría intemtarse desarrollar todo en HMG, es decir, haciendo que la aplicación se comunique directamente con los web services de AFIP, según las especificaciones que ellos dan:

http://www.afip.gov.ar/fe/documentos/ma ... MPG_v1.pdf
Hola Roberto :
el lunes voy al AFIP de Once que es la encargada de informatica y voy a preguntar sobre el desarrollo y pedir informacion sobre FE y que me den el visto bueno para poder hacer pruebas con mi CUIT.
Buen Finde.
Puede hacerse, pero el problema es el tiempo de investigación y desarrollo que se requiere.

Además de interpretar las especificaciones, debe hacerse vía SOAP, tema del que no hay demasiados ejemplos en Harbour.

De todas formas, aun no he abandonado el intento :)

Re: FACTURA ELECTRONICA (ARGENTINA)

Posted: Sun Jan 26, 2014 1:55 am
by Roberto Lopez

Re: FACTURA ELECTRONICA (ARGENTINA)

Posted: Sun Jan 26, 2014 2:11 am
by Roberto Lopez
Daniel,

Algo más...

En el grupo de Yahoo 'facturaelectronica_arg' en la sección de archivos hay ayudas sobre la obtención de certificados y gestiones en AFIP relacionadas con certificados de homologación y producción.

Re: FACTURA ELECTRONICA (ARGENTINA)

Posted: Sun Jan 26, 2014 2:13 am
by Roberto Lopez
Finalmente:

http://www.afip.gov.ar/fe/ (herramientas de asistencia).

Re: FACTURA ELECTRONICA (ARGENTINA)

Posted: Sun Jan 26, 2014 11:40 am
by Roberto Lopez
Daniel,

Puse en un archivo todo lo que encontré hasta ahora:

- Especificaciones oficiales de AFIP.
- Ejemplo de SOAP en Harbour.
- Tablas AFIP.
- Manuales de ayuda para obtener certificados del grupo 'facturaelectronica_arg'.

Con toda esta información voy a empezar a investigar el tema, para, en principio, tener una idea del tiempo requerido para investigación y desarrollo y determinar si (al menos en mi caso) es conveniente encararlo.

Re: FACTURA ELECTRONICA (ARGENTINA)

Posted: Sun Jan 26, 2014 7:47 pm
by danielmaximiliano
Roberto Lopez wrote:Daniel,

Con toda esta información voy a empezar a investigar el tema, para, en principio, tener una idea del tiempo requerido para investigación y desarrollo y determinar si (al menos en mi caso) es conveniente encararlo.
Gracias Roberto; dado que en un momento voy a tener que trabajar sobre FE aqui en Argentina voy a revisar toda esa informacion y mañana a ´rimer hora estoy en AFIP para entregar en mano mi documentacion para la aprobacion asi puedo utilizar el servidor WS para pruebas.
aqui solo estoy trabajando con impresoras fiscales y ahora tengo que empezar a usar utilizar los servidores de AFIP par entregar en balance mensual de los TICKET mediante WS.

Re: FACTURA ELECTRONICA (ARGENTINA)

Posted: Tue Jan 28, 2014 11:36 am
by danielmaximiliano
Hola Roberto :
para trabajar con SOAP temgo este demo, hice las pruebas con esta pagina de pruebas y me devuelve el archivo XML.

http://www.onlinesoaptest.com/

WSDL URL:
http://www.hfctechnics.hu/devel/smartco ... nnect.wsdl" onclick="window.open(this.href);return false;" onclick="window.open(this.href);return false;" onclick="window.open(this.href);return false;
Endpoint:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sc="http://www.hfctechnics.hu/ws/smartconnect"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
targetNamespace="http://www.hfctechnics.hu/ws/smartconnect"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<xsd:schema targetNamespace="http://www.hfctechnics.hu/ws/smartconnect">
<xsd:include schemaLocation="http://www.hfctechnics.hu/devel/smartco ... onnect.xsd" />
</xsd:schema>
</types>

<!-- ping -->
<message name="pingRequestMessage">
<part name="parameters" element="sc:ping" />
</message>
<message name="pingResponseMessage">
<part name="result" element="sc:pingResponse" />
</message>

<!-- checkStatus -->
<message name="checkStatusRequestMessage">
<part name="parameters" element="sc:checkStatus" />
</message>
<message name="checkStatusResponseMessage">
<part name="result" element="sc:checkStatusResponse" />
</message>

<!-- createNode -->
<message name="createNodeRequestMessage">
<part name="parameters" element="sc:createNode" />
</message>
<message name="createNodeResponseMessage">
<part name="result" element="sc:createNodeResponse" />
</message>

<!-- addDevice -->
<message name="addDeviceRequestMessage">
<part name="parameters" element="sc:addDevice" />
</message>
<message name="addDeviceResponseMessage">
<part name="result" element="sc:nodeUpdateResponse" />
</message>

<!-- removeDevice -->
<message name="removeDeviceRequestMessage">
<part name="parameters" element="sc:removeDevice" />
</message>
<message name="removeDeviceResponseMessage">
<part name="result" element="sc:nodeUpdateResponse" />
</message>

<!-- removeNode -->
<message name="removeNodeRequestMessage">
<part name="parameters" element="sc:removeNode" />
</message>
<message name="removeNodeResponseMessage">
<part name="result" element="sc:generalResponse" />
</message>

<!-- auditNode -->
<message name="auditNodeRequestMessage">
<part name="parameters" element="sc:auditNode" />
</message>
<message name="auditNodeResponseMessage">
<part name="result" element="sc:auditNodeResponse" />
</message>

<!-- checkPackage -->
<message name="checkPackageRequestMessage">
<part name="parameters" element="sc:checkPackage" />
</message>
<message name="checkPackageResponseMessage">
<part name="result" element="sc:checkPackageResponse" />
</message>

<!-- packageReport -->
<message name="packageReportRequestMessage">
<part name="parameters" element="sc:packageReport" />
</message>
<message name="packageReportResponseMessage">
<part name="result" element="sc:generalResponse" />
</message>

<!-- authorizeNode -->
<message name="authorizeNodeRequestMessage">
<part name="parameters" element="sc:authorizeNode" />
</message>
<message name="authorizeNodeResponseMessage">
<part name="result" element="sc:generalResponse" />
</message>

<!-- deauthorizeNode -->
<message name="deauthorizeNodeRequestMessage">
<part name="parameters" element="sc:deauthorizeNode" />
</message>
<message name="deauthorizeNodeResponseMessage">
<part name="result" element="sc:generalResponse" />
</message>

<!-- pairForNode -->
<message name="pairForNodeRequestMessage">
<part name="parameters" element="sc:pairForNode" />
</message>
<message name="pairForNodeResponseMessage">
<part name="result" element="sc:generalResponse" />
</message>

<!-- sendMessageForNode -->
<message name="sendMessageForNodeRequestMessage">
<part name="parameters" element="sc:sendMessageForNode" />
</message>
<message name="sendMessageForNodeResponseMessage">
<part name="result" element="sc:generalResponse" />
</message>

<!-- sendMessageForNodes -->
<message name="sendMessageForNodesRequestMessage">
<part name="parameters" element="sc:sendMessageForNodes" />
</message>
<message name="sendMessageForNodesResponseMessage">
<part name="result" element="sc:generalResponse" />
</message>

<!-- setPINForNode -->
<message name="setPINForNodeRequestMessage">
<part name="parameters" element="sc:setPINForNode" />
</message>
<message name="setPINForNodeResponseMessage">
<part name="result" element="sc:generalResponse" />
</message>

<!-- setPINForNodes -->
<message name="setPINForNodesRequestMessage">
<part name="parameters" element="sc:setPINForNode" />
</message>
<message name="setPINForNodesResponseMessage">
<part name="result" element="sc:generalResponse" />
</message>

<!-- checkAuthorizationForNode -->
<message name="checkAuthorizationForNodeRequestMessage">
<part name="parameters" element="sc:checkAuthorizationForNode" />
</message>
<message name="checkAuthorizationForNodeResponseMessage">
<part name="result" element="sc:generalResponse" />
</message>

<!-- checkAuthorizationForSmartcards -->
<message name="checkAuthorizationForSmartcardsRequestMessage">
<part name="parameters" element="sc:checkAuthorizationForSmartcards" />
</message>
<message name="checkAuthorizationForSmartcardsResponseMessage">
<part name="result" element="sc:generalResponse" />
</message>

<!-- readCheckAuthorizationResult -->
<message name="readCheckAuthorizationResultRequestMessage">
<part name="parameters" element="sc:readCheckAuthorizationResult" />
</message>
<message name="readCheckAuthorizationResultResponseMessage">
<part name="result" element="sc:checkAuthorizationResult" />
</message>

<!-- auditSms -->
<message name="auditSmsRequestMessage">
<part name="parameters" element="sc:auditSms" />
</message>
<message name="auditSmsResponseMessage">
<part name="result" element="sc:auditSmsResponse" />
</message>

<portType name="SmartConnectPortType">
<operation name="ping">
<input message="sc:pingRequestMessage" />
<output message="sc:pingResponseMessage" />
</operation>
<operation name="checkStatus">
<input message="sc:checkStatusRequestMessage" />
<output message="sc:checkStatusResponseMessage" />
</operation>
<operation name="createNode">
<input message="sc:createNodeRequestMessage" />
<output message="sc:createNodeResponseMessage" />
</operation>
<operation name="removeNode">
<input message="sc:removeNodeRequestMessage" />
<output message="sc:removeNodeResponseMessage" />
</operation>
<operation name="auditNode">
<input message="sc:auditNodeRequestMessage" />
<output message="sc:auditNodeResponseMessage" />
</operation>
<operation name="addDevice">
<input message="sc:addDeviceRequestMessage" />
<output message="sc:addDeviceResponseMessage" />
</operation>
<operation name="removeDevice">
<input message="sc:removeDeviceRequestMessage" />
<output message="sc:removeDeviceResponseMessage" />
</operation>
<operation name="checkPackage">
<input message="sc:checkPackageRequestMessage" />
<output message="sc:checkPackageResponseMessage" />
</operation>
<operation name="packageReport">
<input message="sc:packageReportRequestMessage" />
<output message="sc:packageReportResponseMessage" />
</operation>
<operation name="authorizeNode">
<input message="sc:authorizeNodeRequestMessage" />
<output message="sc:authorizeNodeResponseMessage" />
</operation>
<operation name="deauthorizeNode">
<input message="sc:deauthorizeNodeRequestMessage" />
<output message="sc:deauthorizeNodeResponseMessage" />
</operation>
<operation name="pairForNode">
<input message="sc:pairForNodeRequestMessage" />
<output message="sc:pairForNodeResponseMessage" />
</operation>
<operation name="sendMessageForNode">
<input message="sc:sendMessageForNodeRequestMessage" />
<output message="sc:sendMessageForNodeResponseMessage" />
</operation>
<operation name="sendMessageForNodes">
<input message="sc:sendMessageForNodeRequestMessage" />
<output message="sc:sendMessageForNodesResponseMessage" />
</operation>
<operation name="setPINForNode">
<input message="sc:setPINForNodeRequestMessage" />
<output message="sc:setPINForNodeResponseMessage" />
</operation>
<operation name="setPINForNodes">
<input message="sc:setPINForNodesRequestMessage" />
<output message="sc:setPINForNodesResponseMessage" />
</operation>
<operation name="checkAuthorizationForNode">
<input message="sc:checkAuthorizationForNodeRequestMessage" />
<output message="sc:checkAuthorizationForNodeResponseMessage" />
</operation>
<operation name="checkAuthorizationForSmartcards">
<input message="sc:checkAuthorizationForSmartcardsRequestMessage" />
<output message="sc:checkAuthorizationForSmartcardsResponseMessage" />
</operation>
<operation name="readCheckAuthorizationResult">
<input message="sc:readCheckAuthorizationResultRequestMessage" />
<output message="sc:readCheckAuthorizationResultResponseMessage" />
</operation>
<operation name="auditSms">
<input message="sc:auditSmsRequestMessage" />
<output message="sc:auditSmsResponseMessage" />
</operation>
</portType>

<binding name="SmartConnectBinding" type="sc:SmartConnectPortType">
<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-sec ... icy/200702">
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken />
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax />
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
</wsp:Policy>
</sp:TransportBinding>
<sp:SignedSupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-sec ... icy/200702">
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-sec ... oRecipient">
<wsp:Policy>
<sp:HashPassword/>
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedSupportingTokens>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
<operation name="ping">
<soap:operation soapAction="sc#ping"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="checkStatus">
<soap:operation soapAction="sc#checkStatus"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="createNode">
<soap:operation soapAction="sc#createNode"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="addDevice">
<soap:operation soapAction="sc#addDevice"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="removeDevice">
<soap:operation soapAction="sc#removeDevice"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="removeNode">
<soap:operation soapAction="sc#removeNode"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="auditNode">
<soap:operation soapAction="sc#auditNode"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="checkPackage">
<soap:operation soapAction="sc#checkPackage"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="packageReport">
<soap:operation soapAction="sc#packageReport"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="authorizeNode">
<soap:operation soapAction="sc#authorizeNode"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="deauthorizeNode">
<soap:operation soapAction="sc#deauthorizeNode"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="pairForNode">
<soap:operation soapAction="sc#pairForNode"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="sendMessageForNode">
<soap:operation soapAction="sc#sendMessageForNode"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="setPINForNode">
<soap:operation soapAction="sc#setPINForNode"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="checkAuthorizationForNode">
<soap:operation soapAction="sc#checkAuthorizationForNode"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="checkAuthorizationForSmartcards">
<soap:operation soapAction="sc#checkAuthorizationForSmartcards"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="readCheckAuthorizationResult">
<soap:operation soapAction="sc#readCheckAuthorizationResult"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="auditSms">
<soap:operation soapAction="sc#auditSms"/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<service name="SmartConnectService">
<port name="SmartConnectPort" binding="sc:SmartConnectBinding">
<soap:address location="http://smartconnect.hfctechnics.hu:9090 ... artconnect" />
</port>
</service>
</definitions>
tengo que corregir el error "TOLEAUTO:NEW"

Re: FACTURA ELECTRONICA (ARGENTINA)

Posted: Tue Jan 28, 2014 4:57 pm
by Roberto Lopez
danielmaximiliano wrote:Hola Roberto :
para trabajar con SOAP temgo este demo,
<...>
Ok. Le voy a dar una mirada.

Muchas Gracias.

Re: FACTURA ELECTRONICA (ARGENTINA)

Posted: Wed Jan 29, 2014 2:11 am
by danielmaximiliano
Roberto Lopez wrote:Daniel,

Puse en un archivo todo lo que encontré hasta ahora:

- Ejemplo de SOAP en Harbour.
Hola Roberto : en Windows 7 no funciona SOAP30 ya que fue reemplazada por WebService .NET,
dado que has subido un ejemplo para CURL me dispuse a probar.

compile las librerias .a desde \Harbour\Contrib\HBCurl que tienen que ser copiadas en la carpeta \LIB de HMG.3.2
estas Libs estan dentro del archivo .RAR que adjunto en este post como todo lo necesario para que funcione HBCURL

hbcurl.ch tiene que ser copiado a \INCLUDE de HMG.3.2

el ejemplo con modificacion funciona y este es el extracto de la descarga
soapanswer.txt
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetCityForecastByZIPResponse xmlns="http://ws.cdyne.com/WeatherWS/">
<GetCityForecastByZIPResult>
<Success>true</Success>
<ResponseText>City Found</ResponseText>
<State>NY</State>
<City>Schenectady</City>
<WeatherStationCity>Albany</WeatherStationCity>
<ForecastResult>
<Forecast>
<Date>2014-01-28T00:00:00</Date>
<WeatherID>-1</WeatherID>
<Desciption />
<Temperatures>
<MorningLow>0</MorningLow>
<DaytimeHigh>13</DaytimeHigh>
</Temperatures>
<ProbabilityOfPrecipiation>
<Nighttime>10</Nighttime>
<Daytime>10</Daytime>
</ProbabilityOfPrecipiation>
</Forecast>
<Forecast>
<Date>2014-01-29T00:00:00</Date>
<WeatherID>-1</WeatherID>
<Desciption />
<Temperatures>
<MorningLow>0</MorningLow>
<DaytimeHigh>17</DaytimeHigh>
</Temperatures>
<ProbabilityOfPrecipiation>
<Nighttime>00</Nighttime>
<Daytime>10</Daytime>
</ProbabilityOfPrecipiation>
</Forecast>
<Forecast>
<Date>2014-01-30T00:00:00</Date>
<WeatherID>2</WeatherID>
<Desciption>Partly Cloudy</Desciption>
<Temperatures>
<MorningLow>4</MorningLow>
<DaytimeHigh>26</DaytimeHigh>
</Temperatures>
<ProbabilityOfPrecipiation>
<Nighttime>10</Nighttime>
<Daytime>10</Daytime>
</ProbabilityOfPrecipiation>
</Forecast>
<Forecast>
<Date>2014-01-31T00:00:00</Date>
<WeatherID>3</WeatherID>
<Desciption>Mostly Cloudy</Desciption>
<Temperatures>
<MorningLow>16</MorningLow>
<DaytimeHigh>31</DaytimeHigh>
</Temperatures>
<ProbabilityOfPrecipiation>
<Nighttime>20</Nighttime>
<Daytime>20</Daytime>
</ProbabilityOfPrecipiation>
</Forecast>
<Forecast>
<Date>2014-02-01T00:00:00</Date>
<WeatherID>3</WeatherID>
<Desciption>Mostly Cloudy</Desciption>
<Temperatures>
<MorningLow>18</MorningLow>
<DaytimeHigh>32</DaytimeHigh>
</Temperatures>
<ProbabilityOfPrecipiation>
<Nighttime>20</Nighttime>
<Daytime>30</Daytime>
</ProbabilityOfPrecipiation>
</Forecast>
<Forecast>
<Date>2014-02-02T00:00:00</Date>
<WeatherID>3</WeatherID>
<Desciption>Mostly Cloudy</Desciption>
<Temperatures>
<MorningLow>22</MorningLow>
<DaytimeHigh>32</DaytimeHigh>
</Temperatures>
<ProbabilityOfPrecipiation>
<Nighttime>30</Nighttime>
<Daytime>30</Daytime>
</ProbabilityOfPrecipiation>
</Forecast>
<Forecast>
<Date>2014-02-03T00:00:00</Date>
<WeatherID>2</WeatherID>
<Desciption>Partly Cloudy</Desciption>
<Temperatures>
<MorningLow>15</MorningLow>
<DaytimeHigh>31</DaytimeHigh>
</Temperatures>
<ProbabilityOfPrecipiation>
<Nighttime>20</Nighttime>
<Daytime>10</Daytime>
</ProbabilityOfPrecipiation>
</Forecast>
</ForecastResult>
</GetCityForecastByZIPResult>
</GetCityForecastByZIPResponse>
</soap:Body>
</soap:Envelope>
soap-example Work.rar
(1.47 MiB) Downloaded 536 times

Re: FACTURA ELECTRONICA (ARGENTINA)

Posted: Wed Jan 29, 2014 1:03 pm
by Roberto Lopez
danielmaximiliano wrote:el ejemplo con modificacion funciona y este es el extracto de la descarga
Ok. Lo voy a probar.