Coder Social home page Coder Social logo

thegreenter / greenter Goto Github PK

View Code? Open in Web Editor NEW
261.0 31.0 136.0 3.33 MB

Facturación Electrónica - SUNAT - PE :four_leaf_clover:

Home Page: https://greenter.dev

License: MIT License

PHP 73.21% HTML 0.30% XSLT 0.11% Twig 26.38%
facturacion-electronica sunat greenter php peru ubl20 ubl21

greenter's Introduction

Greenter Greenter

CI Codacy Badge Type Cover codecov Project Stats FOSSA Status

Esta librería le permite implementar la Facturación Electrónica en Perú, desde los sistemas desarrollados por el contribuyente, el cual esta normado por SUNAT.
Greenter realiza la mayoría de tareas del proceso, genera el XML según el estándar UBL, firma el XML con el certificado digital, , realiza el envío del comprobante a los webservice de SUNAT y procesa el CDR (Comprobante de Recepción), además incluye otras herramientas de utilidad.

Puede ver una demostración en @greenter/demo.

Quality gate

Requerimientos

  • PHP 7.4 o superior
  • Extensiones PHP: soap, zlib, openssl, curl.

Documentación

  • Lee esta guia para conocer mas sobre facturación electrónica.
  • Empieza con este ejemplo basico con greenter.
  • Tienes dudas o necesitas ayuda puedes hacerlo desde aqui.
  • Puedes seguirnos en Facebook para actualizaciones.

Community

API REST

Si trabajas con otro lenguaje de programación, puedes usar Lycet.

Soporte

JetBrains

JetBrains apoya nuestro proyecto de código abierto, proporcionando licencias para utilizar su pack de productos.

License

FOSSA Status

greenter's People

Contributors

bitgandtter avatar codacy-badger avatar djdnl13 avatar dlopez525 avatar eliutimana avatar erajuan avatar ericsonvb avatar fossabot avatar giansalex avatar gildus avatar jmanucornejo avatar lafi87 avatar p3dr0tg avatar thefantas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

greenter's Issues

duda

amigo en la comunicación de baja: si quiero dar de baja una boleta o factura que tenga relacionada una ndc o ndb, solo le doy de baja la ndb o ndc verdad ? (ya que 'supongo' al momento de generar la ndb o ndc la factura o boleta se reemplaza por la ndb o ndc )

No se pudo procesar su solicitud. (Ocurrio un error en el batch) - Detalle: xxx.xxx.xxx value='ticket: error: Elservidor remoto no se encuentra activo (codigo: 0200)

Buenas tardes @giansalex ,
Cada vez que intento darle de baja a una factura o boleta me da el siguiente error:

No se pudo procesar su solicitud. (Ocurrio un error en el batch) - Detalle: xxx.xxx.xxx value='ticket: error: Elservidor remoto no se encuentra activo (codigo: 0200)

A qué se puede deber?, estoy haciendo practicamente lo mismo que en tu repo con los ejemplos.
Saludos.

duda en nuevos campos 2.1

Se agregó TotalImpuestos es requerido.
Se agregó MtoBaseIgv es requerido.
no estoy seguro del valor de estos campos:
TotalImpuestos = suma del igv de los productos por item ?
MtoBaseIgv = ? (en el ejemplo veo que es igual al valor de venta) osea la suma del valor de los productos sin aplicar igv ?

¿Por cuanto tiempo es válido el ticket que te devuelve sunat al emitir una comunicación de baja?

Buenas noches @giansalex , el problema lo tengo en el ambiente de prueba de sunat o no sé si eso se dará porque es en este ambiente. Envío la comunicación de baja y me responde con status de aceptado pero después al consultar el ticket unos segundos después siempre me responde con ticket no existente.
¿Después de cuánto tiempo debería consultar el estado de la comunicación de baja?

Gracias de antemano.

consuta

hola amigo, estoy agregando guia de remision y los codigos no los encuentro todos
no entiendo todos los requisitos:
$baja = new Document();
$baja->setTipoDoc('09')
->setNroDoc('T001-00001');

    $rel = new Document();
    $rel->setTipoDoc('02') // Tipo: Numero de Orden de Entrega
    ->setNroDoc('213123');

    $transp = new Transportist();
    $transp->setTipoDoc('6')
        ->setNumDoc('20000000002')
        ->setRznSocial('TRANSPORTES S.A.C')
        ->setPlaca('ABI-453')
        ->setChoferTipoDoc('1')
        ->setChoferDoc('40003344');

    $envio = new Shipment();
    $envio->setModTraslado('01')
        ->setCodTraslado('01')
        ->setDesTraslado('VENTA')
        ->setFecTraslado(new \DateTime())
        ->setCodPuerto('123')
        ->setIndTransbordo(false)
        ->setPesoTotal(12.5)
        ->setUndPesoTotal('KGM')
        ->setNumBultos(2)
        ->setNumContenedor('XD-2232')
        ->setLlegada(new Direction('150101', 'AV LIMA'))
        ->setPartida(new Direction('150203', 'AV ITALIA'))
        ->setTransportista($transp);

    $despatch = new Despatch();
    $despatch->setTipoDoc('09')
        ->setSerie('T001')
        ->setCorrelativo('123')
        ->setFechaEmision(new \DateTime())
        ->setCompany($this->getCompany())
        ->setDestinatario($this->getClient())
        ->setTercero((new Client())
            ->setTipoDoc('6')
            ->setNumDoc('20000000003')
            ->setRznSocial('GREENTER SA'))
        ->setObservacion('NOTA GUIA')
        ->setDocBaja($baja)
        ->setRelDoc($rel)
        ->setEnvio($envio);

    $detail = new DespatchDetail();
    $detail->setCantidad(2)
        ->setUnidad('ZZ')
        ->setDescripcion('PROD 1')
        ->setCodigo('PROD1')
        ->setCodProdSunat('P001');

    $items = $this->getItems($detail, 4);
    $despatch->setDetails($items);

Error en producción Bad Gateway

object(Greenter\Model\Response\Error)#121 (2) {
["code":protected]=>
string(4) "HTTP"
["message":protected]=>
string(11) "Bad Gateway"
}

He probado en modo beta funciona bien, pero al mandar en modo producción me manda ese error, añadí una excepción en el firewall con las dns de sunat pero de 10 intentos 4 fallan.

De hecho cuando abro en el navegador la url.. aparece esto con error 500

An error occurred.

Sorry, the page you are looking for is currently unavailable.
Please try again later.

If you are the system administrator of this resource then you should check the error log for details.

Faithfully yours, nginx.

https://e-factura.sunat.gob.pe/ol-ti-itcpfegem/billService?wsdl

En conclusión subir los comprobantes en tiempo real no es recomendable?

duda

hola amigo, no entiendo y no encuentro nada al respecto de esto amigo:
$baja = new Document();
$baja->setTipoDoc('09')
->setNroDoc('T001-00001');

    $rel = new Document();
    $rel->setTipoDoc('02') // Tipo: Numero de Orden de Entrega
    ->setNroDoc('213123');

lo que entiendo es que es para dar de baja pero tiene que ir junto a los demas datos de la guia de remision ?
y $rel no entiendo nada

duda

hola amigo, mi duda es si en las notas de debito o credito se envian sin items(sin ningun detail) dependiendo del motivo

Error al generar notas de crédito y débito relacionadas con boletas

Buenas noches @giansalex , ¿ me puedes indicar porque me está saliendo este error al mandar notas de crédito relacionada con boletas?

La base imponible a nivel de línea difiere de la información consignada en el comprobante - Detalle: xxx.xxx.xxx value='ticket: 1540190174993 error: Error en la linea: 3: 4294 (nodo: "cac:TaxSubtotal/cbc:TaxableAmount" valor: "2.65")'

Y este otro al generar notas de débito relacionada con boletas
La serie o numero del documento modificado por la Nota de Debito no cumple con el formato establecido - Detalle: xxx.xxx.xxx value='ticket: 1540190177244 error: INFO: 2205 (nodo: "cac:InvoiceDocumentReference/cbc:ID" valor: "B002-6")'

Gracias de antemano

Error gzinflate() cuando utilizo getStatus($ticket)

He hecho un envío de resumen diario en producción y todo bien, me devolvió un ticket para consultar el CDR.

Ahora intento obtener la respuesta con el ticket pero obtengo un error en la implementación de la consulta. Esta consulta es posterior al envío ya que la sunat no devuelve la respuesta
inmediatamente, como saben.

El código de la consulta es:

public function leer_status_ticket($file,$ticket) {

$util = Util::getInstance();
$see = $util->getSee(SunatEndpoints::FE_PRODUCCION);
$result = $see->getStatus($ticket);
if ($result->isSuccess() && in_array($result->getCode(), ['0', '99'])) { 
$cdr = $result->getCdrResponse();
//$util->writeCdr($sum, $result->getCdrZip());
$util->writeFile('R-'.$file.'.zip', $result->getCdrZip() );
echo $util->getResponseFromCdr($cdr);
} else {
var_dump($result->getError());
}

}

donde $file es el nombre del archivo xml que se generó sin la extensión xml y $ticket
es el ticket que devolvió la sunat cuando se envió el resumen diario.

El error que tengo es:
gzinflate(): data error
cuando se ejecuta $see->getStatus($ticket);

consulta

hola amigo, mi consulta es sobre ubigeo y dirección en la guia de remisión

->setLlegada(new Direction('150101', 'AV LIMA'))
->setPartida(new Direction('150203', 'AV ITALIA'))

aca entiendo que al poner la dirección el ubigeo debe generarse de acuerdo a la direccion ingresada
hay alguna manera de automatizar esto y que al poner o seleccionar la direccion(departamento,provincia,distrito) te vote el ubigeo exacto automaticamente}

Add Parser

  • Summary Parser
  • Retention Parser
  • Perception Parser

Update Greenter Docs

  • Agregar manual para pasar a producción
  • Agregar consideraciones de issues y notas publicadas por sunat
  • Agregar lista de Requerimientos
    • Version de PHP
    • Extensiones PHP
    • Configuraciones en php.ini

Anular Boletas

Hola amigo :D , sunat no deja dar de baja boletas de venta ni notas de credito y debito que tengan serie "B001" eso tiene que ver con la version de UBL ?

duda

hola amigo, mi duda es si el resumen diario se puede dar de baja(que ocurre si envio 2 resumenes diarios por error con boletas del mismo dia pero con diferente correlativo)

Tipo de operación Cat17 vs Cat51

Estoy migrando de UBL 2.0 a 2.1 y quería saber si el catálogo para tipo de operación (Cat17) seguirá usándose en documentos de la sunat (ejm factura, boleta) en su versión 2.1 (para desestimarlo y grabar las nuevas facturas con este nuevo catálogo.

Saludos.

UBL 2.1

¿Tienes pensado incorporar la versión UBL 2.1 en los comprobantes?

Estado Exitoso `isSuccess` cuando cdr es rechazado

Hola,
Tengo un problema con documentos que para Sunat son erroneos pero para Greenter es exitoso o valido, el caso específico es cuando no coincide el tipo de documento del receptor:

"El numero de documento de identidad del recepetor debe ser RUC - El numero de documento de identidad del recepetor debe ser RUC Detalle: xxx.xxx.xxx value='ticket: 201802887228306 error: INFO: 2017 (nodo: "cac:AccountingCustomerParty/cbc:CustomerAssignedAccountID" valor: "REGULARIZAR127")' ".
Todo este mensaje viene en la clase CdrResponse (entorno producción)

El tema es que cuando quiero reproducirlo en entorno de desarrollo, Greenter se comporta correctamente, lo trata como un Error, con respuesta no valida.

Al entrar a la plataforma de Sunat, indica estado "En error".

De que puede depender esto?

Saludos.

Error `store:///notfound` en beta

Hola, estoy obteniendo el siguiente error en beta, alguna idea de por qué?

  +"faultstring": " - Detalle: Error opening URL 'store:///notfound'"
  +"faultcode": "soap-env:Server.200"

Gracias!

Comunicación de baja

He revisado la documentación disponible de SUNAT acerca de la facturación electronica, pero no encuentra información detallada acerca de la comunicación de baja.
¿Cuál sería la manera correcta para anular una factura? ¿Mediante la comunicación de baja o nota de crédito?
O en qué escenarios se utiliza cada uno de esos documentos.

Summary Problema en Fechas / Resumen de Boletas

Hola Giancarlos estoy realizando el resumen de boleta con documentos de fechas anterior y la fecha de resumen actual y me devuelve error:

Error

2220 | 23456789012|TIENDA SAC | El ID debe coincidir con el nombre del
archivo - Detalle: xxx.xxx.xxx value='ticket: 1539450675386 error: INFO :
2220 (nodo: "SummaryDocuments/cbc:ID" valor: "RC-20181010-2")'

y se a seteado de la siguiente manera:

$summary = (new Summary())
->setCorrelativo('2')
->setFecGeneracion(new DateTime("2018-10-10"))//Fecha de generación de los documentos a enviar en el resumen. // ReferenceDate
->setFecResumen(new DateTime("2018-10-13"))//Fecha de emision de resumen //IssueDate
->setCompany($company);

Error generando PDF, wkhtmltopdf

Hola mi estimado, ya logre integrar todo y funciona perfectamente, pero me aparece el siguiente error al quiere generar la factura, podrias ayudarme por favor.

Error: Failed without error message: /home/systemat/public_html/systematic.com.pe/vendor/bin/wkhtmltopdf --no-outline --no-outline --viewport-size '1280x1024' --page-width '21cm' --page-height '29.7cm' --footer-html '/home/systemat/public_html/systematic.com.pe/greenter/resources/footer.html' '/tmp/tmp_wkhtmlto_pdf_9Dmmrs.html' '/tmp/tmp_wkhtmlto_pdf_eIXMsb.pdf'
captura de pantalla 2018-11-07 a la s 13 35 06

Muchas gracias por tu apoyo.

Creación y anulación de Boletas

Buenas tardes @giansalex ,
¿cómo debo hacer con las boletas ?, ¿se deberían registrar siempre como resument diario?, ¿si las hago de formas síncrona se pueden anular?. Gracias de antemano.

Print Ticket Format

amigo para emitir tickets, es un documento diferente o solo es una factura con el aspecto diferente no hay en sunat informacion sobre tickets electronicos(para dar comprobantes con esas maquinas que imprimen tickets )

ayuda

amigo logre solucionar el problema del servidor (ni yo se como la verdad) que no me dejaba crear los xml
ahora si me los crea y realiza todo perfecto el detalle es que no puedo abrir el pdf (que ya esta creado) solo abrirlo no me deja

Error al enviar factura sin nombre comercial: Código de error 1037

Al momento de generar el xml y enviarlo me da este error:
El XML no contiene el tag o no existe informacion de RegistrationName del emisor del documento - Detalle: xxx.xxx.xxx value='ticket: 1539991936365 error: INFO: 1037 (nodo: "cac:PartyLegalEntity/cbc:RegistrationName" valor: "")'

He revisado el xml generado y al parece donde debería ir la razón social está imprimiendo el nombre comercial, tal vez me equivoque

problems

C:\xampp\htdocs\greenter>composer require greenter/greenter
Using version ^2.0 for greenter/greenter
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

Problem 1
- The requested package greenter/greenter No version set (parsed as 1.0.0) is satisfiable by greenter/greenter[No version set (parsed as 1.0.0)] but these conflict with your requirements or minimum-stability.

Installation failed, reverting ./composer.json to its original content.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.