(trim($parametros["documento_tipo"]) == '' ? "DNI" : $parametros["documento_tipo"] ) , "razon_social" => utf8_encode($parametros["razon_social"]), "email" => $parametros["email"], "domicilio" => utf8_encode($parametros["domicilio"]), "documento_nro" => $parametros["documento_nro"], "provincia" => (intval($parametros["provincia"]) != 0 ? $parametros["provincia"] : $this->tabla_referencia_provincia($parametros["provincia"]) ), "envia_por_mail" => (trim($parametros["envia_por_mail"])!= '' ? $parametros["envia_por_mail"] : "N"), "condicion_pago" => intval($parametros["condicion_pago"]), "condicion_pago_otra" => intval($parametros["condicion_pago_otra"]), "condicion_iva" => $parametros["condicion_iva"] ); return($cliente); } /************************************************************** * * FUNCIONALIDAD: Genera la entidad "item" de concepto para el detalle de un comprobante * * La entidad item, es parte del detalle de conceptos del comprobante * * DOCUMENTACION: * https://developers.tusfacturas.app/api-factura-electronica-afip/facturacion-nuevo-comprobante#estructura-de-detalle-de-conceptos * * PARAMETROS: * * @param object $parametros Todos los datos requeridos para armar el producto: * cantidad Campo numérico con 2 decimales. Separador de decimales: punto. Ejemplo: 1.50 afecta_stock Campo alfanumérico de 1 posición. Valores posibles: "S" (si), "N" (no) Ejemplo: S producto Según estructura de producto actualiza_precio Campo alfanumérico de 1 posición. Valores posibles: "S" (si), "N" (no) Ejemplo: S leyenda Campo alfanumérico. Longitud máxima 100 caracteres. Contenido opcional. Será una descripción que acompañe al producto. Ejemplo: Blanca, cepillada * bonificacion_porcentaje Campo numérico con 2 decimales. Separador de decimales: punto. Ejemplo: 1.50 * * RESPUESTA: * @return object $producto El array requerido * * @last-update 2020-04-20 *************************************************************** */ function comprobante_detalle_item($parametros) { if (intval($parametros["cantidad"])> 0) { $item = array( "cantidad" => $parametros["cantidad"], "bonificacion_porcentaje" => $parametros["bonificacion_porcentaje"], "afecta_stock" => (trim($parametros["afecta_stock"]) != '' ? $parametros["afecta_stock"] : "N"), "leyenda" => utf8_encode( $parametros["leyenda"]), "producto" => $parametros["producto"], "actualiza_precio" => (trim($parametros["actualiza_precio"]) == '' ? "N" : $parametros["actualiza_precio"]) ); }else{ $item = array( "cantidad" => 0, "afecta_stock" => "N", "bonificacion_porcentaje" => 0, "leyenda" => "", "actualiza_precio" => "N" , "producto" => array() ); } return($item); } /************************************************************** * * FUNCIONALIDAD: Genera la entidad "producto" requerida para * crear un nuevo comprobante. * * La entidad producto, es parte de cada item * del detalle de conceptos del comprobante * * DOCUMENTACION: * https://developers.tusfacturas.app/api-factura-electronica-afip/facturacion-nuevo-comprobante#estructura-de-concepto-producto * * PARAMETROS: * * @param object $parametros Todos los datos requeridos para armar el producto: * * descripcion Campo alfanumérico. Longitud máxima 255 caracteres. Ejemplo: Papa blanca unidad_bulto Campo numérico entero. Indica la cantidad de unidades que componen un bulto. Ejemplo: 12 lista_precios Campo alfanumérico. Longitud máxima 255 caracteres. Nombre de la lista de precios a la cual pertenece. Ejemplo: Verdura Orgánica codigo Campo alfanumérico. Longitud máxima 10 caracteres. campo Opcional Ejemplo: ABX780 precio_unitario_sin_iva Campo numérico con 2 decimales. separador de decimales: punto Ejemplo: 645.67 alicuota Indica la alicuota de IVA con la que grava ese producto. Valores Permitidos: 21 , 10.5 Ejemplo: 10.5 unidad_medida Campo numérico que indica la unidad de medida, según tabla de referencia Unidades de Medida(**). Ejemplo: 7 actualiza_precio Campo alfanumérico de 1 posición. Valores posibles: "S" (si), "N" (no) Ejemplo: S impuestos_internos_alicuota Indica la alicuota de Impuestos internos con la que grava ese producto. Ejemplo: 10.5 * * RESPUESTA: * @return object $producto El array requerido * * @last-update 2020-04-20 *************************************************************** */ function producto($parametros) { $producto = array( "codigo" => utf8_encode( $parametros["codigo"]) , "descripcion" => utf8_encode( $parametros["descripcion"]), "unidad_bulto" => ( intval($parametros["unidad_bulto"]) != 0 ? $parametros["unidad_bulto"] : 1), "lista_precios" => utf8_encode(trim($parametros["lista_precios"]) != '' ? $parametros["lista_precios"] : 'Lista general'), "precio_unitario_sin_iva" => round($parametros["precio_unitario_sin_iva"] ,3) , "alicuota" => doubleval($this->tabla_referencia_alicuota($parametros["alicuota"])), "impuestos_internos_alicuota" => doubleval($parametros["impuestos_internos_alicuota"]), "actualiza_precio" => $parametros["actualiza_precio"], "unidad_medida" => ( intval($parametros["unidad_medida"]) != 0 ? $parametros["unidad_medida"] : 7) ); return($producto); } /************************************************************** * * FUNCIONALIDAD: Me devuelve la provincia que corresponde * segun tabla de referencia * * DOCUMENTACION: * https://developers.tusfacturas.app/tablas-de-referencia#provincias * * PARAMETROS: * * @param string el nombre de la provincia * RESPUESTA: * @return number el nro asociado a esa provincia * * @last-update 2020-04-12 *************************************************************** */ function tabla_referencia_provincia($provincia ) { switch(strtoupper(trim($provincia ))) { case "BUENOS AIRES": return 2; break; case "CATAMARCA": return 3; break; case "CHACO": return 4; break; case "CHUBUT": return 5; break; case "CIUDAD AUTONOMA DE BUENOS AIRES": return 1; break; case "CORDOBA": return 6; break; case "CORRIENTES": return 7; break; case "ENTRE RIOS": return 8; break; case "FORMOSA": return 9; break; case "JUJUY": return 10; break; case "LA PAMPA": return 11; break; case "LA RIOJA": return 12; break; case "MENDOZA": return 13; break; case "MISIONES": return 14; break; case "NEUQUEN": return 15; break; case "OTRO": return 25; break; case "RIO NEGRO": return 16; break; case "SALTA": return 17; break; case "SAN JUAN": return 18; break; case "SAN LUIS": return 19; break; case "SANTA CRUZ": return 20; break; case "SANTA FE": return 21; break; case "SANTIAGO DEL ESTERO": return 22; break; case "TIERRA DEL FUEGO": return 23; break; case "TUCUMAN": return 24; break; default: return 26; } } /************************************************************** * * FUNCIONALIDAD: Me devuelve la alicuota que corresponde * segun tabla de referencia * * DOCUMENTACION: * https://developers.tusfacturas.app/tablas-de-referencia#alicuotas-de-iva * * PARAMETROS: * * @param string alicuota Indica la alicuota de IVA con la que grava ese producto. * Valores Permitidos: segun tabla de referencia https://developers.tusfacturas.app/tablas-de-referencia#alicuotas-de-iva * * RESPUESTA: * @return number alicuota * * @last-update 2020-04-12 *************************************************************** */ function tabla_referencia_alicuota($alicuota) { $alicuota = str_replace("%","",$alicuota); switch ($alicuota) { case "IVA EXENTO": case "EXENTO": return (-1); break; case "IVA NO GRAVADO": case "NO GRAVADO": return (-2); break; default: return doubleval($alicuota); break; } } } ?>