fertandil87 / sifen
There is no license information available for the latest version (0.2) of this package.
0.2
2024-06-09 21:37 UTC
Requires
- dompdf/dompdf: ^2.0
README
CLASE de Conexión y Generación de Factura de la SET/SIFEN Paraguay
Aquí iremos actualizando todo lo que se pueda sobre el sistema de facturación de la SIFEN y esta nueva CLASE con todo lo necesario.
Hasta el momento se puede ver el código y cualquier mejora que se necesite bienvenido sea las sugerencias. De momento hago una pequeña descripción de la clase
Notas:
Se debe crear una carpeta llaves dentro de la cual se deberá meter las llaves necesarias para el funcionamiento de la de la clase
Modo de USO de las librerías:
- Se incluye la librería sifen.php
- Se crear un objeto de la clase
- Se Genera un archivo xml enviado los datos necesarios en formato JSON al objeto con la función generar_xml()
- Se devuelve un array con el indice 0 con el archivo XML generado y firmado y en el indice 1 el Id del documento
- Se procede a enviar el documento generado anteriormente colocando el número de Id devuelto en el array
- Se guarda de manera automática lo devuelto por los servidores de la SIFEN dentro de la carpeta de/ donde se encuentra la clase
Necesidades de PHP
- En el archivo ini.php o en su servidor habilitar openssl para todo lo referente a la firma
- Para la utilización de aravo.php se debe habilitar socket
Ayudas
- Si necesitan alguna ayuda con la implementación de la misma pueden contactar con PAULO DANIEL VILLAMAYOR al +595 992 625873 Tracertsystem
- O Juan Zamphirópolos +595 961 804041
sifen.php
El archivo sifen.php ya es una clase en si misma. Se lo puede incluir directamente en su proyecto y hacer llamada directa
include 'sifen.php'; //Incluimos la librería $xml = new sifen(); //Creamos un objeto de la clase sifen $arreglo = $xml->generar_xml($json, "contraseña", "llave_privada.key", "certificado.cer"); //Llamamos a la función generar_xml enviando los parametros a ser usados $xml->enviar_xml($arreglo[1],'llave_privada_abierta.key','certificado.cer'); //Llamamos a la función para enviar el archivo a la SIFEN
Composición del Archivo JSON a enviar a la función generar_xml()
- Cargar todo el contenido del JSON en una variable y enviarlo, en el ejemplo la variable $json contiene todo lo siguiente
{"DE":[ { "dSisFact":1, "iTipEmi":1, "dDesTipEmi":"Normal", "dInfoEmi":1, "iTiDE":1, "dDesTiDE":"Factura electrónica", "dNumTim":12560693, "dEst":"001", "dPunExp":"001", "dNumDoc":"0000004", "dFeIniT":"2022-11-21", "dFeEmiDE":"2023-10-01T00:00:00", "iTipTra":1, "dDesTipTra":"Venta de mercadería", "iTImp":1, "dDesTImp":"IVA", "cMoneOpe":"PYG", "dDesMoneOpe":"Guarani", "dRucEm":80130124, "dDVEmi":6, "iTipCont":2, "dNomEmi":"TracertSystem", "dDirEmi":"Salustiano Merardo Moreno esq. jhon Whitehead", "dNumCas":1907, "cDepEmi":1, "dDesDepEmi":"CAPITAL", "cDisEmi":1, "dDesDisEmi":"ASUNCION (DISTRITO)", "cCiuEmi":1, "dDesCiuEmi":"ASUNCION (DISTRITO)", "dTelEmi":981427733, "dEmailE":"paulodvs@gmail.com", "cActEco":620, "dDesActEco":"ACTIVIDADES DE PROGRAMACIÓN Y CONSULTORÍA INFORMÁTICAS Y OTRAS ACTIVIDADES CONEXAS", "iNatRec":1, "iTiOpe":2, "cPaisRec":"PRY", "dDesPaisRe":"Paraguay", "iTiContRec":1, "dRucRec":2278132, "dDVRec":3, "dNomRec":"Paulo Villamayor", "iIndPres":1, "dDesIndPres":"Operación presencial", "iCondOpe":1, "dDCondOpe":"Contado", "iTiPago":3, "dDesTiPag":"Tarjeta de crédito", "dMonTiPag":600.00, "cMoneTiPag":"PYG", "dDMoneTiPag":"Guarani", "iDenTarj":99, "dDesDenTarj":"Infonet - Debito", "iForProPa":2 } ], "items":[ { "dCodInt":41, "dDesProSer":"BOLSA", "dCantProSer":1, "dPUniProSer":200, "dTasaIVA":10 }, { "dCodInt":52, "dDesProSer":"Remera Blanca Mediano", "dCantProSer":1, "dPUniProSer":15800, "dTasaIVA":10 }, { "dCodInt":63, "dDesProSer":"Zapato XL", "dCantProSer":1, "dPUniProSer":185000, "dTasaIVA":10 } ] }