Closed abelnexus closed 6 years ago
son documentos diferentes, tendrías que anular la ncr y luego la factura. Las boletas y sus notas (NCR, NDB) se anulan en el resumen diario, usando el status=3
entonces la nota de credito no reemplaza los datos que se genero anteriormente en una factura ? solo seria necesario usar la comunicacion de baja para facturas entocnes
mi idea es errada creo(segun yo si una factura esta errada hago una nota de credito para corregir esa factura errada poniendo en la nota de credito los datos correctos y eliminando los datos de la factura errada)
puedes corregirlo con nota de credito, o también puedes anularla comunicandola de baja (en este caso emites otra factura con la información correcta)
no se si el metodo que encontre para que no me salgan erradas las facturas y demas esta bien tu que opinas amigo: como puedes ver en este codigo solo almaceno el xml el cdr y el pdf "solo" si if ($res->isSuccess(), entonces cuando no lo es recibo el mensaje en pantalla mostrandome el error
por ejemplo si el ruc o dni esta mal me botara un mensaje asi pero mi gran duda es si no tendre problemas con sunat ya que por lo que veo se envia la factura asi este errada ($res = $see->send($invoice);) y ocurre todo si es correcto o no, pero se envia de todos modos
Para que sunat acepte una factura esta debe terminar en La Factura F00X-X ha sido aceptada
. No basta con $res->isSuccess()
, eso solo indica que sunat a emitido el CDR, pero este puede ser:
para ello debes verificar el codigo del $cdr
sea igual a cero.
if ($cdr->getCode() == '0') {
// accepted
}
ahhh ya te entiendo amigo entonces mientras no reciba el cdr no habra ningun problema :)
no ninguno, para la sunat ese comprobante estaría aun como no informado. De todos modos si intentas enviar una factura que previamente recibió un cdr, la sunat te indicara que el comprobante ya fue informado.
gracias amigo, lo que no puedo y no tengo idea :'( es como manejar las relaciones entre boletas con su ndc o ndb para el resumen diario
puede manejarse guardando el id de la boleta, o su tipo, serie, numero
, esa es la información que se requiere al momento de adjuntar una nota de credito o debito
ESOS DATOS YA LOS TENGO AMIGO, mi problema es uqe la boleta debe tener algo que diga que tiene una ndc o ndb para al momento de "jalarla" para armar el resumen se jale tambien su ndb o ndc y no se como manejarlo eso, mi cabeza se esta colgando
no tienes que hacer eso, tienes que listar todos los comprobantes que empiecen con las serie BXXX para una fecha determinada, ya que la ncr o ndb puede generarse otro dia, no se van enviar en el mismo resumen.
hola amigo,intentare hacer algo. lo estoy almacenando todos los comprobantes en una sola tabla crees que esta bien asi ? o deberia crear una tabla para cada comprobante ?
para mi esta bien tenerlo en una tabla
hola amigo, como te decia aqui radica mi problema
foreach ($this->model->listar_resumen() as $clave => $value) {
$syn = $value['serie'].'-'.$value['numeracion'];
$detiail1 = new SummaryDetail();
$detiail1 ->setTipoDoc($value['codigo_documento'])
->setSerieNro($syn)
->setEstado('2')
->setClienteTipo('6')
->setClienteNro('00000000')
->setTotal($value['total'])
->setMtoOperGravadas($value['gravadas'])
->setMtoIGV($value['igv']);
$items[] = $detiail1;
}
este codio me extrae las boletas generadas durante el dia y me las lista hasta ahi todo bacan pero cuando es una ndb o ndc ya cambia la estrucutura y necesita 2 datos mas
entonces eso no se puede o no se como hacerlo que tambien jale la nbd ->setDocReferencia((new Document()) ->setTipoDoc('03') ->setNroDoc('B001-122'))
tendrías que traer la información del documento de referencia (tipo, serie, correlativo) y aplicar una validación para cuando sea ncr o ndb.
foreach ($this->model->listar_resumen() as $clave => $value) {
$syn = $value['serie'].'-'.$value['numeracion'];
$tipo = $value['codigo_documento'];
$detiail = new SummaryDetail();
$detiail ->setTipoDoc($tipo)
->setSerieNro($syn)
->setEstado('2')
->setClienteTipo('6')
->setClienteNro('00000000')
->setTotal($value['total'])
->setMtoOperGravadas($value['gravadas'])
->setMtoIGV($value['igv']);
if ($tipo == '07' || $tipo == '08') {
$detail->setDocReferencia((new Document())
->setTipoDoc($value['tipo_ref'])
->setNroDoc($value['serie-ref'].'-'.$value['numero_ref']))
}
$items[] = $detiail;
}
mmmm entiendo... en todo caso debere aumentar tambien en mi bd esos 2 campos a ver como resulta :D
hola amigo, quizás sepas a que se debe este mensaje de error "El comprobante más "código de operación del ítem" no debe repetirse" en resumen diario
estos son los items que estan para el resumen
al parecer estas repitiendo la boleta 2 veces en el resumen
uno es ndb y el otro boleta y parece que hacen conflicto pero no deberia si la ndb o ndc tienen similar serie y correlativo pero son documentos diferentes :/
se diferencian por el tipo de venta, boleta - 03, ndb - 08; has corroborado en el xml que sea asi
si en el xml esta bien, pero eso no tiene que ver o si ? ya que genero el resumen con los datos de la bd no con el xml
me referia al xml del resumen diario
este codigo estoy usando o quizas tenga errores
bd
el problema es el codigo estas comparando con =
y debe ser ==
, por ello la primera condicion siempre se cumple y termina cambiando el tipo a boleta y ya que serie-correlativo son iguales, termina agregando la boleta 2 veces.
if ($value['codigo_documento'] == '03') {
}
ya encontre el error amigo, era que $items[] = $detiail1; estaba en ambos cuando solo debia haber uno para ambos y los == tambien para mas precisión en las condiciones
mmmm pero por alguna razón funciona y si me jala los datos
Al estar en distintos contextos se agrega una vez sea en if
o en else
, el problema es que en el primer if cambia el tipo de documento a 03
y como la nota de débito tiene la misma serie y correlativo, se termina agregando 2 veces '03-B001-000001'
yo creo que como es un foreach cuando llega y es 03 se genera ese "03" y luego pasa al siguiente y asi
solo una vez por item mientras se almacena en items[]
lo unico que compara es si es boleta("03") o es ndc(08) o ndb(07)
si eso después de corregir la comparación =
a ==
, ahora funciona correctamente. El estado si es modificar(2) no nuevo (1)?
si debo corregir eso ahora y al enviarse y generarse correctamente (el xml y cdr) debe ser estado 1 en la bd , al generarse una ndb debe pasar a estado 2 y al darle de baja debe pasar a ser estado 3 y todo debe estar en la bd para cuando jale los datos validar tam,bien el estado
al generarse un ndb no tiene que pasar al estado 2, se usa cuando por ejemplo en la boleta enviaste a sunat el total 1000 pero era 100, alli necesitas modificar la boleta. y volverla enviar.
ahhh entiendo, si se genero mal la boleta y creo un ndc solo envio la nota de credito mas no la boleta: pero aun asi necesito diferenciar de alguna forma las boletas que tienen asociadas ndb o ndc para ya no cargar esas boletas en el resumen
las boletas solo se envian en su fecha de emision, si se genera una ndb se envia este y el campo de referencia la boleta.
es posible en vez de enviar ndc solo darlo de baja y listo creo es mas simple y menos confuso(osea nunca enviar una ndc o ndb jajaja)
Eso depende de cada empresa, como quiere manejarlo, hay algunas empresas que nunca usan la comunicación de baja, siempre hacen ndc o ndb segun el caso
tienes razón si yo tendria mi empresa y sabiendo como es usaria solo bajas, pero debo hacer con ndc y ndb y comunicación de baja para que sea funcional el sistema que hago, ya en producción con las puteadas y presión aprenderé espero :'( y solo son facturas convencionales para lo que hago (solo total igv y gravados)
gracias de nuevo por tu apoyo amigo todo el avance que tengo hasta ahora es por tu ayuda :D
enviar el resumen es obligatorio ¿? tengo que hacer eso para boletas enviadas y procesadas por sunat ¿? como le doy de baja ¿? tengo que hacer nota de credito para cancelar la boleta o lo puedo hacer directamente dandole de baja ¿?.
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 )