AfipSDK / afip.php

Libreria para usar los Web Services de AFIP
https://afipsdk.com/
MIT License
269 stars 119 forks source link

Factura a monotributistas. Error: "(10018) Si ImpIva es igual a 0 el objeto Iva y AlicIva son obligatorios. Id iva = 3 (iva 0)" #154

Closed Geroo-11 closed 9 months ago

Geroo-11 commented 9 months ago

Buenas tardes!

Estoy intentando crear facturas A con un cuit de un Responsable Inscripto.

Al intentar facturar a otro responsable inscripto todo sale bien, pero cuando intento hacer una factura a un monotributista me da el siguiente error: "(10018) Si ImpIva es igual a 0 el objeto Iva y AlicIva son obligatorios. Id iva = 3 (iva 0)". El arreglo que envio para realizar la factura es el siguiente:

$factura = [
                'CantReg'       => 1, // Cantidad de comprobantes a registrar
                'PtoVta'        => $this->puntoVenta, // Punto de venta
                'CbteTipo'      => $voucherType, // Tipo de comprobante (ver tipos disponibles)
                'Concepto'      => 2, // Concepto del Comprobante=> (1)Productos, (2)Servicios, (3)Productos y Servicios
                'DocTipo'       => 80, // Tipo de documento del comprador (ver tipos disponibles)
                'DocNro'        => $cuit, // Numero de documento del comprador
                // 'CbteDesde'  => $nroFactura, // Numero de comprobante o numero del primer comprobante en caso de ser mas de uno
                // 'CbteHasta'  => $nroFactura, // Numero de comprobante o numero del ultimo comprobante en caso de ser mas de uno
                'CbteFch'       => $date, // (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo
                'ImpTotal'      => $mount, // Importe total del comprobante
                'ImpTotConc'    => 0, // Importe neto no gravado
                'ImpNeto'       => $impNeto, // Importe neto gravado
                'ImpOpEx'       => 0, // Importe exento de IVA
                'ImpIVA'        => $iva, //Importe total de IVA
                'ImpTrib'       => 0, //Importe total de tributos
                'FchServDesde'  => $date, // (Opcional) Fecha de inicio del servicio (yyyymmdd), obligatorio para Concepto 2 y 3
                'FchServHasta'  => $date, // (Opcional) Fecha de fin del servicio (yyyymmdd), obligatorio para Concepto 2 y 3
                'FchVtoPago'    => $date, // (Opcional) Fecha de vencimiento del servicio (yyyymmdd), obligatorio para Concepto 2 y 3
                'MonId'         => 'PES', //Tipo de moneda usada en el comprobante (ver tipos disponibles)('PES' para pesos argentinos)
                'MonCotiz'      => 1, // Cotización de la moneda usada (1 para pesos argentinos)
                'items'         => [
                    [
                        'description' => 'Servicio de desarrollo de software',
                        'quantity' => 1,
                        'unit_price' => $mount,
                        'bonus_percentage' => 0,
                        'metric_unit' => 'unidades',
                    ]
                ]
            ];
            if($respInscripto == 1) {
                $factura['Iva'] = [
                    [
                        'Id'        => 5, // Id del tipo de IVA (ver tipos disponibles) 
                        'BaseImp'   => $impNeto, // Base imponible
                        'Importe'   => $iva // Importe 
                    ]
                ];
            }

Entiendo que cuando se intenta realizar una factura A de un responsable inscripto a un monotributista el ImpIVA deberia ser 0 y el array Iva no deberia estar. Pero quizas estoy entendiendo mal y enviando algun dato mal en el arreglo. Alguna sabe como solucionarlo?

ivanalemunioz commented 9 months ago

El IVA por lo general es 21%, el consumidor final es el que paga el IVA

Geroo-11 commented 9 months ago

Mmm... No entendi, deberia mandar algun otro id en la seccion Iva o enviarla vacia para que me lo tome? En caso de factura A a monotributista no estoy enviando nada, el if entra solo si es responsable inscripto

Ah tambien sumo la pregunta de si se pueden agregar un detalle de factura, intente enviar una clave que es items pero no sirve.

ivanalemunioz commented 9 months ago

El Iva siempre debe estar, incluso para consumidor final, ahí tenes un if que solo lo pone si es responsable inscripto

Geroo-11 commented 9 months ago

Le agregue el campo Iva vacio, pero me sigue dando el mismo error. Intente poner el campo Iva de la siguiente manera:

 $factura['Iva'] = [
                    [
                        'Id'        => 3, // Id del tipo de IVA (ver tipos disponibles) 
                        'BaseImp'   => $impNeto, // Base imponible
                        'Importe'   => $iva // Importe 
                    ]
                ];

ya que el mensaje de error dice Id iva = 3 (iva 0) y sigue el mismo error. Probe con:

 $factura['Iva'] = [
                    [
                        'Id'        => 0, // Id del tipo de IVA (ver tipos disponibles) 
                        'BaseImp'   => $impNeto, // Base imponible
                        'Importe'   => $iva // Importe 
                    ]
                ];

y tampoco...

ivanalemunioz commented 9 months ago

Por que IVA 0?

Geroo-11 commented 9 months ago

Claro yo antes a los monotributistas le hacia factura C que no llevaba el IVA, pero ahora a la factura A siempre tengo que agregar IVA mas alla de si es a un monotributista o responsable inscripto, es asi?