Facturación en Controlador Fiscal (Argentina)
Moderator: Rathinagiri
- Roberto Lopez
- HMG Founder
- Posts: 4004
- Joined: Wed Jul 30, 2008 6:43 pm
Facturación en Controlador Fiscal (Argentina)
Consulta:
Alguien sabe cual es el estado actual de la normativa de AFIP respecto del software de facturación para controladores fiscales?
Sigue siendo necesaria la presentación de un formulario y el código fuente de la aplicación ante AFIP?
Muchas Gracias.
Alguien sabe cual es el estado actual de la normativa de AFIP respecto del software de facturación para controladores fiscales?
Sigue siendo necesaria la presentación de un formulario y el código fuente de la aplicación ante AFIP?
Muchas Gracias.
Regards/Saludos,
Roberto
(Veritas Filia Temporis)
Roberto
(Veritas Filia Temporis)
- danielmaximiliano
- Posts: 2612
- Joined: Fri Apr 09, 2010 4:53 pm
- Location: Argentina
- Contact:
Re: Facturación en Controlador Fiscal (Argentina)
Perdón por no responder ya que estoy sin internet desde el 2 enero 2017..
Estoy desconectado del foro x ese motivo; si todavía tiene ese problema.Me fijo en mi cuenta afip
Pueden usar mi celular que está más abajo para comunicarse conmigo mediante WhatsApp
Estoy desconectado del foro x ese motivo; si todavía tiene ese problema.Me fijo en mi cuenta afip
Pueden usar mi celular que está más abajo para comunicarse conmigo mediante WhatsApp
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
- Roberto Lopez
- HMG Founder
- Posts: 4004
- Joined: Wed Jul 30, 2008 6:43 pm
Re: Facturación en Controlador Fiscal (Argentina)
Gracias por tu respuesta Daniel.danielmaximiliano wrote: ↑Thu Mar 09, 2017 11:32 pm Perdón por no responder ya que estoy sin internet desde el 2 enero 2017..
Estoy desconectado del foro x ese motivo; si todavía tiene ese problema.Me fijo en mi cuenta afip
Pueden usar mi celular que está más abajo para comunicarse conmigo mediante WhatsApp
Encontré en otro foro, que, ahora, quién vaya a ser usuario de tu software, debe, desde la web de AFIP (con clave fiscal) declarar el CUIT del programador (o empresa) responsable del software y que la otra parte, debe aceptar la responsabilidad (con su clave fiscal) para que el trámite quede completo.
Mucho más sencillo de lo que era.
Muchas Gracias.
Regards/Saludos,
Roberto
(Veritas Filia Temporis)
Roberto
(Veritas Filia Temporis)
- danielmaximiliano
- Posts: 2612
- Joined: Fri Apr 09, 2010 4:53 pm
- Location: Argentina
- Contact:
Re: Facturación en Controlador Fiscal (Argentina)
Si, exactamente lo que hice, fue declarar la impresora fiscal bajo mi cargo y que el programaba cumple los requisitos que es la conmitancia que es lo que el scanner lee se imprime ...
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
- Roberto Lopez
- HMG Founder
- Posts: 4004
- Joined: Wed Jul 30, 2008 6:43 pm
Re: Facturación en Controlador Fiscal (Argentina)
Ahora estoy tratando de ponerme al día con las impresoras fiscales de segunda generación Hasar y viendo el tema de los reportes obligatorios que deben descargarse de la IF para elevar a AFIP.danielmaximiliano wrote: ↑Sat Mar 11, 2017 10:00 pm Si, exactamente lo que hice, fue declarar la impresora fiscal bajo mi cargo y que el programaba cumple los requisitos que es la conmitancia que es lo que el scanner lee se imprime ...
Además, como trato de no usar el OCX (uso directamente winfis32.dll) tengo una lucha adicional.
Nunca terminamos de aprender lo suficiente
Regards/Saludos,
Roberto
(Veritas Filia Temporis)
Roberto
(Veritas Filia Temporis)
- danielmaximiliano
- Posts: 2612
- Joined: Fri Apr 09, 2010 4:53 pm
- Location: Argentina
- Contact:
Re: Facturación en Controlador Fiscal (Argentina)
Te mando mis rutinas simple de winfis
Code: Select all
*-------------------------------------------------------------*
Function AbrirPuerto( lRetorno )
*-------------------------------------------------------------*
nHandler := CallDll32( "OpenComFiscal" , "WINFIS32.DLL" , 1 , 0 )
If nHandler >= 0
Principal.StatusBar.Item(2) :="Puerto de impresora OK "
nError := CallDll32( "InitFiscal" , "WINFIS32.DLL" , nHandler )
If nError = 0
lRetorno := .T.
Else
alerror( nError )
Principal.StatusBar.Item(2) := " La impresora no se puede Inicializar"
lRetorno := .T.
Endif
Else
alerror( nHandler )
Principal.StatusBar.Item(2) :=" Hubo un error de abrir puerto Comm "
lRetorno := .T.
Endif
Return ( lRetorno )
*-------------------------------------------------------------*
Function CerrarPuerto()
*-------------------------------------------------------------*
CallDll32 ( "CloseComFiscal" , "WINFIS32.DLL" , nHandler)
Return
*-------------------------------------------------------------*
FUNCTION Cierrez()
*-------------------------------------------------------------*
Local Cierrez
cFecha := DtoC( Date() )
Cierrez := "9" + Se + "Z"
If MsgYesno( '¿ Realizar Cierre Z ? ' + ChR(10)+ ;
' Fecha : ' + cFecha , " Mensaje de atención ")
nError := CallDll32 ( "MandaPaqueteFiscal" , "WINFIS32.DLL" , nHandler , Cierrez )
If nError == 0
msginfo( "Se Realizo el cierre Z", "Informacion" )
CerrarPuerto()
Else
msginfo( "Intente Realizar nuevo cierre Z " , " Mesaje de atención " )
endif
Endif
Return
*-------------------------------------------------------------*
FUNCTION Cierrex()
*-------------------------------------------------------------*
Local Cierrex
cFecha := DtoC( Date() )
Cierrez := "9" + Se + "X"
If MsgYesno( ' ¿ Realizar Cierre X ? ' + ChR(10)+ ;
' Fecha : ' + cFecha , " Mensaje de atención " )
nError := CallDll32 ( "MandaPaqueteFiscal" , "WINFIS32.DLL" , nHandler , Cierrez )
If nError == 0
msginfo( "Se Realizo el cierre X " , " Información " )
CerrarPuerto()
Else
msginfo( " Intente Realizar nuevo cierre X ", " Mensaje de atención ")
Endif
endif
Return
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
- Roberto Lopez
- HMG Founder
- Posts: 4004
- Joined: Wed Jul 30, 2008 6:43 pm
Re: Facturación en Controlador Fiscal (Argentina)
Muchas Gracias Daniel.danielmaximiliano wrote: ↑Mon Mar 13, 2017 1:11 am Te mando mis rutinas simple de winfisCode: Select all
*-------------------------------------------------------------* Function AbrirPuerto( lRetorno ) *-------------------------------------------------------------* nHandler := CallDll32( "OpenComFiscal" , "WINFIS32.DLL" , 1 , 0 ) If nHandler >= 0 Principal.StatusBar.Item(2) :="Puerto de impresora OK " nError := CallDll32( "InitFiscal" , "WINFIS32.DLL" , nHandler ) If nError = 0 lRetorno := .T. Else alerror( nError ) Principal.StatusBar.Item(2) := " La impresora no se puede Inicializar" lRetorno := .T. Endif Else alerror( nHandler ) Principal.StatusBar.Item(2) :=" Hubo un error de abrir puerto Comm " lRetorno := .T. Endif Return ( lRetorno ) *-------------------------------------------------------------* Function CerrarPuerto() *-------------------------------------------------------------* CallDll32 ( "CloseComFiscal" , "WINFIS32.DLL" , nHandler) Return *-------------------------------------------------------------* FUNCTION Cierrez() *-------------------------------------------------------------* Local Cierrez cFecha := DtoC( Date() ) Cierrez := "9" + Se + "Z" If MsgYesno( '¿ Realizar Cierre Z ? ' + ChR(10)+ ; ' Fecha : ' + cFecha , " Mensaje de atención ") nError := CallDll32 ( "MandaPaqueteFiscal" , "WINFIS32.DLL" , nHandler , Cierrez ) If nError == 0 msginfo( "Se Realizo el cierre Z", "Informacion" ) CerrarPuerto() Else msginfo( "Intente Realizar nuevo cierre Z " , " Mesaje de atención " ) endif Endif Return *-------------------------------------------------------------* FUNCTION Cierrex() *-------------------------------------------------------------* Local Cierrex cFecha := DtoC( Date() ) Cierrez := "9" + Se + "X" If MsgYesno( ' ¿ Realizar Cierre X ? ' + ChR(10)+ ; ' Fecha : ' + cFecha , " Mensaje de atención " ) nError := CallDll32 ( "MandaPaqueteFiscal" , "WINFIS32.DLL" , nHandler , Cierrez ) If nError == 0 msginfo( "Se Realizo el cierre X " , " Información " ) CerrarPuerto() Else msginfo( " Intente Realizar nuevo cierre X ", " Mensaje de atención ") Endif endif Return
Son muy similares a las que uso con las IF de primera generación. .
Lo que pasa es que el tema con las nuevas (P-HAS-5100-FAR, SMH/PT-1000F y SMH/PT-250F) es que, si usás winfis32.dll, necesitas enviar un checksum, que me está costando bastante calcular ya que no hay ejemplos de programación con la dll directamente y yo estoy tratando de no usar el OCX.
Por ejemplo, para abrir un comprobante, tenés que enviar algo así (según el comprobante que quieras abrir):
Code: Select all
STX
SN
ESC
40 hexa/64 decimal (ASCII '@')
FS
1 Código de Comprobante
ETX
BCC
Regards/Saludos,
Roberto
(Veritas Filia Temporis)
Roberto
(Veritas Filia Temporis)
- danielmaximiliano
- Posts: 2612
- Joined: Fri Apr 09, 2010 4:53 pm
- Location: Argentina
- Contact:
Re: Facturación en Controlador Fiscal (Argentina)
Veo mañana cuando regrese este tema Roberto.
Slds
Slds
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
-
- Posts: 2
- Joined: Fri Oct 21, 2016 1:06 pm
Re: Facturación en Controlador Fiscal (Argentina)
Roberto:
Buscando info sobre las Impresoras Fiscales de nueva generación vi tu post.
Si entendí bien y no es tarde, el BCC que mencionás se puede obtener con la siguiente función:
* ------------------------------------------------------------------------------
* FUNCTION CF_GetCRC( cCmd )
* CF: Obtener Caracteres de Verificación de Bloque (CRC)
* ------------------------------------------------------------------------------
* Procedimiento: Obtener los Caracteres de Verificación de Bloque (CRC)
* Parámetros : cCmd: Cadena de caracteres para obtener su CRC
* Retorna : Caracteres de Verificación de Bloque (CRC)
* ------------------------------------------------------------------------------
FUNCTION CF_GetCRC( cCmd )
LOCAL nCRC := 0
LOCAL nI
FOR nI := 1 TO Len( cCmd )
nCRC += Asc( SubStr( cCmd, nI, 1 ) )
NEXT
RETURN ( Upper( PadL( NtoC( nCRC, 16 ), 4, '0' ) ) )
* ------------------------------------------------------------------------------
Buscando info sobre las Impresoras Fiscales de nueva generación vi tu post.
Si entendí bien y no es tarde, el BCC que mencionás se puede obtener con la siguiente función:
* ------------------------------------------------------------------------------
* FUNCTION CF_GetCRC( cCmd )
* CF: Obtener Caracteres de Verificación de Bloque (CRC)
* ------------------------------------------------------------------------------
* Procedimiento: Obtener los Caracteres de Verificación de Bloque (CRC)
* Parámetros : cCmd: Cadena de caracteres para obtener su CRC
* Retorna : Caracteres de Verificación de Bloque (CRC)
* ------------------------------------------------------------------------------
FUNCTION CF_GetCRC( cCmd )
LOCAL nCRC := 0
LOCAL nI
FOR nI := 1 TO Len( cCmd )
nCRC += Asc( SubStr( cCmd, nI, 1 ) )
NEXT
RETURN ( Upper( PadL( NtoC( nCRC, 16 ), 4, '0' ) ) )
* ------------------------------------------------------------------------------
- Roberto Lopez
- HMG Founder
- Posts: 4004
- Joined: Wed Jul 30, 2008 6:43 pm
Re: Facturación en Controlador Fiscal (Argentina)
Ese problema (gracias a la ayuda de gente de este foro) lo resolví, pero, también descubrí, que en realidad, hay una forma muchísimo más sencilla de controlar la IF, y es vía la interfase http de la impresora (que incorpora un servidor web).jkazmirchuk wrote: ↑Wed Aug 16, 2017 8:16 pm Roberto:
Buscando info sobre las Impresoras Fiscales de nueva generación vi tu post.
Si entendí bien y no es tarde, el BCC que mencionás se puede obtener con la siguiente función:
* ------------------------------------------------------------------------------
* FUNCTION CF_GetCRC( cCmd )
* CF: Obtener Caracteres de Verificación de Bloque (CRC)
* ------------------------------------------------------------------------------
* Procedimiento: Obtener los Caracteres de Verificación de Bloque (CRC)
* Parámetros : cCmd: Cadena de caracteres para obtener su CRC
* Retorna : Caracteres de Verificación de Bloque (CRC)
* ------------------------------------------------------------------------------
FUNCTION CF_GetCRC( cCmd )
LOCAL nCRC := 0
LOCAL nI
FOR nI := 1 TO Len( cCmd )
nCRC += Asc( SubStr( cCmd, nI, 1 ) )
NEXT
RETURN ( Upper( PadL( NtoC( nCRC, 16 ), 4, '0' ) ) )
* ------------------------------------------------------------------------------
Si bien, finalmente el proyecto cambió y se optó por IFs de primera generación, yo avancé bastante en la investigación (basándome en ejemplos).
Los comandos pueden enviarse a la impresora, por medio del utilitario "curl" y mi experimento se basó en el, pero, seguramente, podría hacerse, directamente desde Harbour, usando la librería HBTIP (no lo he probado).
Para abrir un comprobante:
Code: Select all
curl http://127.0.0.1/fiscal.xml -H "Content-Type: text/xml" --data-binary @abrircomprobante.xml >resp.txt
Code: Select all
<AbrirDocumento>
<CodigoComprobante>TiqueFacturaB</CodigoComprobante>
</AbrirDocumento>
Code: Select all
curl http://127.0.0.1/fiscal.xml -H "Content-Type: text/xml" --data-binary @imprimiritem.xml >resp.txt
Code: Select all
<ImprimirItem>
<Descripcion>Cable miniplug 1.5</Descripcion>
<Cantidad>1.0</Cantidad>
<PrecioUnitario>200.00</PrecioUnitario>
<CondicionIVA>Gravado</CondicionIVA>
<AlicuotaIVA>21.00</AlicuotaIVA>
<OperacionMonto>ModoSumaMonto</OperacionMonto>
<TipoImpuestoInterno>IIVariableKIVA</TipoImpuestoInterno>
<MagnitudImpuestoInterno>0.00</MagnitudImpuestoInterno>
<ModoDisplay>DisplayNo</ModoDisplay>
<ModoBaseTotal>ModoPrecioTotal</ModoBaseTotal>
<UnidadReferencia>20</UnidadReferencia>
<CodigoProducto>779123456789</CodigoProducto>
<CodigoInterno>C1130</CodigoInterno>
<UnidadMedida>Pack</UnidadMedida>
</ImprimirItem>
Code: Select all
curl http://127.0.0.1/fiscal.xml -H "Content-Type: text/xml" --data-binary @subtotal.xml >resp.txt
Code: Select all
<ConsultarSubtotal>
<Impresion>ImprimeSubtotal</Impresion>
<ModoDisplay>DisplayNo</ModoDisplay>
</ConsultarSubtotal>
Code: Select all
curl http://127.0.0.1/fiscal.xml -H "Content-Type: text/xml" --data-binary @imprimirpago.xml >resp.txt
Code: Select all
<ImprimirPago>
<Descripcion>Tarjeta de Crédito</Descripcion>
<Monto>200.00</Monto>
<Operacion>Pagar</Operacion>
<ModoDisplay>DisplayNo</ModoDisplay>
<DescripcionAdicional>Nro.: *******3245</DescripcionAdicional>
<CodigoFormaPago>TarjetaDeCredito</CodigoFormaPago>
<Cuotas>6</Cuotas>
<Cupones>12345678</Cupones>
<Referencia>ABC123</Referencia>
</ImprimirPago>
Code: Select all
curl http://127.0.0.1/fiscal.xml -H "Content-Type: text/xml" --data-binary @cerrarcomprobante.xml >resp.txt
Code: Select all
<CerrarDocumento>
<Copias>2</Copias>
<DireccionEMail>cliente@suempresa.com.ar</DireccionEMail>
</CerrarDocumento>
Regards/Saludos,
Roberto
(Veritas Filia Temporis)
Roberto
(Veritas Filia Temporis)