thegreenter / demo

Ejemplos utilizando Greenter (UBL 2.1, SOAP, Firma digital, PDF, QR)
https://greenter-sample.herokuapp.com
MIT License
60 stars 51 forks source link

Representacion Impresa #10

Closed abelnexus closed 6 years ago

abelnexus commented 6 years ago

ayudame amigo no puedo conseguir que este array se ingrese en los items captura

abelnexus commented 6 years ago

trato de reemplazar esto por el array captura

abelnexus commented 6 years ago

lo cambie asi y si me genera el archivo xml y cdr de respuesta pero me bota un error siempre captura

giansalex commented 6 years ago

cual es el error que te muestra.

abelnexus commented 6 years ago

ya no me manda el mensaje de confirmacion, si no que se cuelga ahi captura

abelnexus commented 6 years ago

creo saber de que se trata el error es por mi documento xml esta mal pero no me envia el mensaje de error por eso se cuelga

abelnexus commented 6 years ago

ya lo solucione, el error era que en mi bd la unidad de medida estaba como "niu" y solo acepta "NIU" en mayuscula al igual que "PEN"

abelnexus commented 6 years ago

aun asi hay errores que no entiendo, por ejejmplo al momento de crear al $invoice: ->setMtoOperGravadas(0) ->setMtoOperExoneradas(0) ->setMtoOperInafectas(0) esos valores deben ser 0 por que en mi factura solo debe haber el total, el subtoal y el igv pero sunat me rechaza diciendo que no peude estar en cero :/

giansalex commented 6 years ago

pero tus facturas tienen igv, entonces debe haber Operaciones Gravadas, que es la suma del valor de venta de los items que tienen tipo de afectacion de IGV = 10

abelnexus commented 6 years ago

mmm eso no sabia, y los de "tipo afectacion igv = 10" =

10,GRAVADO - OPERACION ONEROSA. son solo para productos o servicios ?

giansalex commented 6 years ago

eso forma parte de temas de contabilidad, segun me informaron hay productos que son exonerados o inafectos a IGV, los servicios creo siempre son gravados con igv

abelnexus commented 6 years ago

entonces las gravadas vienen a ser el precio del producto - igv y la sumatoria de todos los items mmmm ahora como saco eso de mi array D:

abelnexus commented 6 years ago

sunat es una m.. no se entiende sus explicaciones, o se refiere al precio con el tu compraste el producto ? creo que ese es el valor de venta

giansalex commented 6 years ago

es que esos temas lo debe saber generalmente un contador. Para obtener total gravados se suma el valor venta de cada ítem, el valor venta es cantidad*precio unitario (sin igv).

abelnexus commented 6 years ago

ahh ya te entendi entonces de esta venta mi operacion gravada es 293.8 captura

abelnexus commented 6 years ago

gracias amigo no se donde estaria sin tu ayuda :)

abelnexus commented 6 years ago

ahhh no estoy mal esos mis precios ya tienen igv :'(

abelnexus commented 6 years ago

te refieres a ese que dice "valor unitario" verdad ? factura-spot

giansalex commented 6 years ago

ese valor unitario vendría al precio sin igv, he estado pensando en crear un Github Pages, donde se puedan publicar estas cosas y que se pueda crear una guía para todos. También conertirlos manuales de sunat a paginas web y con la opcion que da github puedan editar o agregar cosas.

abelnexus commented 6 years ago

me agrada tu idea yo te apoyo, entonces si es la suma de "ese valor unitario"?

giansalex commented 6 years ago

seria la suma de ese valor unitario * cantidad

abelnexus commented 6 years ago

ya ahora si la tengo clara

abelnexus commented 6 years ago

gracias

abelnexus commented 6 years ago

una duda mas amigo quizás tengas alguna idea, tengo esta tabla y quisiera que en la columna estado se vea el estado del xml si ah sido aceptado o rechasado ya sea leendolo directamente desde el archivo xml o guardando la respuesta de sunat en la bd captura

abelnexus commented 6 years ago

creo que eso es mas complejo ya

giansalex commented 6 years ago

igual como muestras estado ABIERTA de la misma forma, cuando recibas la respuesta de SUNAT guardas el código y descripción

abelnexus commented 6 years ago

captura

abelnexus commented 6 years ago

llegue a eso maximo uso este codigo:

require 'vendor/autoload.php';

$util = Util::getInstance();

$invoice = $util->getInvoice();

try { $pdf = $util->getPdf($invoice); $util->showPdf($pdf, $invoice->getName().'.pdf'); } catch (Exception $e) { var_dump($e); }

abelnexus commented 6 years ago

ahora si utilizo este codigo: use Greenter\Model\Sale\Document; use Greenter\Model\Sale\Invoice; use Greenter\Model\Sale\SaleDetail; use Greenter\Model\Sale\Legend; use Greenter\Ws\Services\SunatEndpoints; use Greenter\Model\Client\Client; use Greenter\Model\Company\Company; use Greenter\Model\Company\Address;

$client = new Client(); $client->setTipoDoc('6') ->setNumDoc('10486113532') ->setRznSocial('FERNANDO ABEL'); // Emisor $address = new Address(); $address->setUbigueo('150101') ->setDepartamento('LIMA') ->setProvincia('LIMA') ->setDistrito('LIMA') ->setUrbanizacion('NONE') ->setDireccion('AV LS');

$company = new Company(); $company->setRuc('20000000001') ->setRazonSocial('EMPRESA SAC') ->setNombreComercial('EMPRESA') ->setAddress($address); // Venta $invoice = new Invoice(); $invoice ->setFecVencimiento(new DateTime()) ->setTipoDoc('01') ->setSerie('F001') ->setCorrelativo('000001') ->setFechaEmision(new DateTime()) ->setTipoMoneda('PEN') ->setClient($client) ->setMtoOperGravadas(100) ->setMtoIGV(18) ->setMtoImpVenta(100) ->setCompany($company);

$item1 = new SaleDetail(); $item1 ->setUnidad('NIU')
->setCantidad(2) ->setDescripcion('LANA') ->setIgv(18) ->setTipAfeIgv('10') ->setMtoValorVenta(82) ->setMtoValorUnitario(100) ->setMtoPrecioUnitario(100);

$legend = new Legend(); $legend->setCode('1000') ->setValue('SON CIEN CON 00/100 SOLES');

$invoice->setDetails($item1) ->setLegends([$legend]);

try { $pdf = Util::getPdf($invoice); Util::showPdf($pdf, $invoice->getName().'.pdf'); } catch (Exception $e) { var_dump($e); }

abelnexus commented 6 years ago

me bota este error :(

captura

giansalex commented 6 years ago

tienes la ultima version del codigo?

abelnexus commented 6 years ago

si hoy mismo lo volvi a descargar

giansalex commented 6 years ago

el codigo que muestra a cambiado, ahora se hace asi.

// $invoice = $util->getInvoice();

$util = Util::getInstance();

try {
    $pdf = $util->getPdf($invoice);
    $util->showPdf($pdf, $invoice->getName().'.pdf');
} catch (Exception $e) {
    var_dump($e);
}

tambien elimina los archivos de cache

abelnexus commented 6 years ago

sigue el mismo error, parece que es alguna interferencia con mi controlador o mi framework por que si lo habro directamente si genera el pdf captura

abelnexus commented 6 years ago

pero el detalle es que no puede estar afuera ya que tiene que el reporte tiene que ser dinamico

giansalex commented 6 years ago

y en que parte intentas mostar el PDF, deberia estar tal vez en un iframe

abelnexus commented 6 years ago

bueno te explico detalladamente quizas me das otra solucion

abelnexus commented 6 years ago

en esa pagina frmventas hay un diseño que te muestra algo para imprimir (trato de mostrar el reporte pdf en vez de ese diseño para imprimir) captura

abelnexus commented 6 years ago

con ese codigo javascript habro el frmventas y envio el codigo de la venta para obtener los datos captura

abelnexus commented 6 years ago

al darle click sobre eso me habre esta ventana con los datos de esa factura captura

abelnexus commented 6 years ago

estaba pensando quizas darle ahi mismo la apariencia de la factura yde ahi luego imprimirlo o bien convertilo en pdf directamente con la funcion de goolge chrome , pero el detalle es que como hare para lo del codigo qr no tengo ni la ams minima idea de como se genera eso

abelnexus commented 6 years ago

ahora si reemplazo ese codigo del frmventas por el codigo que hay en example/report/factura.php me sale esto :/ captura

abelnexus commented 6 years ago

y al darle imprimir cuando es una ventana modal me da esta opcion es un pop-up creo captura

giansalex commented 6 years ago

EL problema debe ser que los estas mostrando como si fuera un HTML y no lo es, para abrirlo en una ventana puedes usarse window.open("data:application/pdf," + escape(pdfString));

abelnexus commented 6 years ago

y ese codigo donde lo aplicaria?

giansalex commented 6 years ago

cuando recibes la respuesta del PDF, reemplazarla en la linea donde lanzas la ventana y actualmente te sale todo esos garabatos

abelnexus commented 6 years ago

lo coloque asi pero sigue botando esos garabatos captura

giansalex commented 6 years ago

el problema es que ya no debes llamar $util->showPdf(), pdfString no existe esa variable, tiene que ser $pdf.

try{
$pdf = $utl->getPdf($invoice);
echo '<script>window.open("data:application/pdf," + escape("'.$pdf.'"));</script>';
}
catch (Exception $e){
}
abelnexus commented 6 years ago

ahora no ocurre nada al darle click captura

abelnexus commented 6 years ago

captura

giansalex commented 6 years ago

he actualizado el script.

try{
$pdf = $utl->getPdf($invoice);
echo '<script>window.open("data:application/pdf," + escape("'.$pdf.'"));</script>';
}
catch (Exception $e){
}