thegreenter / demo

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

dudas y consultas #13

Closed abelnexus closed 6 years ago

abelnexus commented 6 years ago

hola amigo tengo algunas dudas que quisiera me ayudaras: primero en nota_credito ese esta variable ->setCodMotivo('07')

se refiere a esto? captura

giansalex commented 6 years ago

en la primera parte es la respuesta que envias a la pagina, pero el anterior era cuando envias la informacion al servidor, alli es donde surge el problema

abelnexus commented 6 years ago

alguna diea de como se enviaria ese $invoice ?

abelnexus commented 6 years ago

$salidaJson=array('respuesta' => $mensajeOk,'mensaje' => $mensajeError, 'invoice' => $invoice); echo json_encode($salidaJson);

en ese invoice lo tomo directamente de aca
"$invoice"->setDetails($items) ->setLegends([$legend]); y lo envio por el array

abelnexus commented 6 years ago

esta bien lo que estoy haciendo o no tiene sentido ?

giansalex commented 6 years ago

esto debe ser enviado por post: window.open("examples/report/factura.php?invoice="+response.invoice);, al igual que hacer por ajax

abelnexus commented 6 years ago

amigo ayuda !!! llegue hasta acá public function print_ticket() {

if (isset($_POST['Codigo'])) {
    $data = array('CODIGO' => trim($_POST['Codigo']));      
    $util = Util::getInstance();
    $invoice = $util->getInvoice();
    try {
    $pdf = $util->getPdf($invoice);
    $util->showPdf($pdf, $invoice->getName().'.pdf');
    } catch (Exception $e) {
    var_dump($e);
    }
    }else{
        header("Location:".URL.'ventas');
    }
}

esa variable Codigo es el $invoice como le aplico para que me cree dinamico (ya que me crea con el estatico)

abelnexus commented 6 years ago

probe reeemplazando el : $invoice = trim($_POST['Codigo']); y no crea el pdf

giansalex commented 6 years ago

código tiene el invoice, de que forma; es una cadena json? seria mejor si tienes el id de la venta, lo envias como parametro, luego consultas en la base de datos y armas el invoice.

abelnexus commented 6 years ago

entonces tendria que crear una tabla para cada comprobante D:

giansalex commented 6 years ago

en donde almacenas el invoice, de allí puedes tomar la información segun los datos de la venta

abelnexus commented 6 years ago

el detalle es que no son iguales, boleta,factura != ntc y ndb otros necesita mas datos que otro

abelnexus commented 6 years ago

como haria una cadena json ?

giansalex commented 6 years ago

y como generaste ese invoice, de la misma forma podrias volverlo hacer para generar el PDF, de esa forma no estas enviando información que ya esta disponible en el servidor. getPdf($invoice) recibe un DocumentInterface, el cual puede ser Invoice,Note, etc. podrias delegar ese trabajo en otra clase y que retorne el document object (invoice, note, ...) segun el tipo de venta (fac, bol, ncr, ndb) y se lo pasas a getPdf.

abelnexus commented 6 years ago

amigo ya logre solucionarlo funciona perfectamente siempre y cuando se envie y reciba el cdr :D mi reto sera ahora como hacer que reaccione el sistema en caso falle

abelnexus commented 6 years ago

quizas sepas amigo que: si en produccion envio un comprobante con el mismo numero de serie y numeracion me rechaza ?

giansalex commented 6 years ago

si, asi es. Te indica que el comprobante ya ha sido comunicado.

abelnexus commented 6 years ago

gracias amigo te pregunto esto por que estoy en duda si generar primero la bd o primero el comprobante, ya que al generar la bd y no envia el xml o ocurre algun error estara grabada la serie y correlativo mas no el cdr y habra inconsistencia

abelnexus commented 6 years ago

asi que mejor al ocurrir un error hago que no se cree nada ni el pdf ni el xml ni el cdr y ya cuando se solcuione el error recien se cree, bueno por el momento sera asi ya que no me queda tiempo para estructurarlo mejor

giansalex commented 6 years ago

hay una serie de errores que pueden salir, muchas de ellas generan rechazo de la factura, y se tiene que volver a generar. Para ello esta greenter-validator, pero aun no están todas las validaciones listadas por SUNAT, ya que la lista es un poco larga. La finalidad principal es evitar el rechazo del comprobante.

abelnexus commented 6 years ago

si entiendo, me estan presionando . despues de entregar este sistema lo volvere a hacer muy bien estructurado

abelnexus commented 6 years ago

mi intencion es que al recibir correcto me ingrese a la bd

abelnexus commented 6 years ago

no te molestes ya amigo, ya lo solucione :p

giansalex commented 6 years ago

ok, también toma en cuenta las notas del CDR, que vienen a ser las observaciones.

abelnexus commented 6 years ago

si eso me esta complicando y no se como manejarlo ya que mis items y todo estan en bd y para cambiar el precio o descuento o aumento y esas cosas se debe cambiar la bd misma y no hay usabilidad en ese aspecto :(

giansalex commented 6 years ago

Si, debe tener la posibilidad de edición.

abelnexus commented 6 years ago

amigo para el tema de envio de la representacion impresa a los correos de los clientes ya lo viste ese tema? no tengo idea de eso

giansalex commented 6 years ago

Creo que esa la parte que falta para completar todo el proceso. El mas conocido para enviar mail es https://github.com/PHPMailer/PHPMailer sera el que use.

abelnexus commented 6 years ago

amigo vez algo que este mal en esta factura ? captura

giansalex commented 6 years ago

A que te refieres, al cálculo? . cosas que se deberian cambiar

abelnexus commented 6 years ago

mis operaciones gravadas esta correcto ? y tengo duda de la fecha de vencimiento

giansalex commented 6 years ago

el total gravados esta bien, acerca de la fecha de vencimiento es dato opcional

abelnexus commented 6 years ago

entonces quito la fecha de vencimiento. amigo recuerdas este codigo: if (codigo_documento == '07'|| codigo_documento == '08') { $("#note").show()

tengo problemas para validar que el campo no este vacio ya que cuando genero una factura no me crea por que en el documento de referencia (imput de la ndc) tengo puesto required

abelnexus commented 6 years ago

ya lo arregle amigaso :D

abelnexus commented 6 years ago

amigo en resumen diario de boletas:

    $detiail2 = new SummaryDetail();
    $detiail2->setTipoDoc('07')
        ->setSerieNro('B001-4')
        ->setDocReferencia((new Document())
            ->setTipoDoc('03')
            ->setNroDoc('0001-122'))
        ->setEstado('1')
        ->setClienteTipo('1')
        ->setClienteNro('00000000')
        ->setTotal(200)
        ->setMtoOperGravadas(40)
        ->setMtoOperExoneradas(30)
        ->setMtoOperInafectas(120)
        ->setMtoIGV(7.2)
        ->setMtoISC(2.8);

setdocreferencia a que se refiere ? a que se ah dado de baja o se emitio una ndc o ndb ?

abelnexus commented 6 years ago

AMIGO LA SERIE DE NDB Y NDC SON iguales ? (FF01)

giansalex commented 6 years ago

la NCR y NDB depende del documento de referencia, si son para boletas es con BXXX, para factura FXXX

abelnexus commented 6 years ago

me refiero a esto amigo captura N0 FF01-XXXXXX DEBE SER IGUAL PARA NOTA DE DEBITO ?

giansalex commented 6 years ago

si es igual para ambos, si se relacionan a una factura(FXX) o boleta(BXXX)

abelnexus commented 6 years ago

diablos !!! eso me da un terrible error la validación de mis datos no me deja guardar comprobantes con la misma serie y correlativo :(

giansalex commented 6 years ago

tienen que validarse junto con el tipo de documento, asi puede existir FAC F001-1 y NCR F001-1

abelnexus commented 6 years ago

buen día amigo, una consulta si una boleta fue enviada correctamente en que estado debe estar captura

abelnexus commented 6 years ago

y sobre mi nota de credito estoy muy confundido: si tengo esta serie y numeracion de mi nota de credito: F001-000001, B001-000002, F001-000003, B001-000004,B001-000005, EN MI NOTA DE CREDITO CAMBIA LA SERIE DE ACUERDO AL TIPO DE COMPROBANTE(SI ES BOLETA O FACTURA) PERO SE DEBE MANTENER EL CORRELATIVO(NUMERACION) ? O DEBE SER DIFERENTES NOTAS DE CREDITO PARA BOLETA Y FACTURA

giansalex commented 6 years ago

Las boletas no se envian individualmente (solo en servicio beta), en produccion se envia un resumen diario, en este caso el estado es 1-Adicionar si vas anular 3-anulado,

el 4 actualmente no es valido.

Las notas de credito y debito solo comparte el formato de la serie (FXXX O BXXX), el correlativo es independiente para cada documento. ejm: NCR FC01-1 emitidad a FAC F001-234 NCR B002-1 emitida a BOL BA01-3

abelnexus commented 6 years ago

entonces no me saldra errores si lo manejo asi :D ? captura

giansalex commented 6 years ago

no habra problema

abelnexus commented 6 years ago

entonces si solo se envia el resumen diario en la boleta no es necesario firmalo ni crear su xml si no almacernalo en una bd para luego enviarlo en un solo resumen diario

abelnexus commented 6 years ago

y en boletas solo tendria que ser dni y nro de documento? o en produccion te admite ruc, y se supone que las boletas no tiene igv :( que estresante es todo esto :'(

giansalex commented 6 years ago

tienes que generar el xml para el cliente, si creo hay casos en los que se puede emitir boleta a un RUC, y por otro lado las boletas si tienen igv.

Este hilo se extendió mas de la cuenta.