Giter Site home page Giter Site logo

Comments (29)

agustinbus avatar agustinbus commented on August 9, 2024 1

Hola Guille!, Probé también con intval('20180627') y sigo con el mismo error. El dump me arroja int(20180627). La versión que estoy utilizando de PHP es la 7.0.0. Probé tambien con la 5.1.6, 5.2.7, 5.6.10. Además intenté cambiar la configuración del timezone del php.ini, pero nada. Me esta matando el error :(

from afip.php.

ivanalemunioz avatar ivanalemunioz commented on August 9, 2024 1

from afip.php.

NicoMachado avatar NicoMachado commented on August 9, 2024 1

Hola @tecnoher, si estaria bueno que te pases a la libreria!, la verdad me sorprendio la simpleza.
no no hay nada como una funcion asi, ya tenes que tener el CUIT/CUIL de antemano.

from afip.php.

davidfabbretti avatar davidfabbretti commented on August 9, 2024 1

Hola! https://es.wikipedia.org/wiki/Clave_Única_de_Identificación_Tributaria acá explica cómo obtener el CUIT desde un DNI.

from afip.php.

ivanalemunioz avatar ivanalemunioz commented on August 9, 2024

from afip.php.

agustinbus avatar agustinbus commented on August 9, 2024

Hola Ivan! Si, probe con la función date y tambien "hardcodeando" la fecha. Ademas probe pasarle NULL, y tambien no pasar el campo CbteFch. Ahi paso el código:

`<?php
include '../src/Afip.php';

$data = array(
'CantReg' => 1, // Cantidad de comprobantes a registrar
'PtoVta' => 3, // Punto de venta
'CbteTipo' => 11, // Tipo de comprobante (ver tipos disponibles)
'Concepto' => 1, // Concepto del Comprobante: (1)Productos, (2)Servicios, (3)Productos y Servicios
'DocTipo' => 80, // Tipo de documento del comprador (ver tipos disponibles)
'DocNro' => 20306370708, // Numero de documento del comprador
'CbteDesde' => 1, // Numero de comprobante o numero del primer comprobante en caso de ser mas de uno
'CbteHasta' => 1, // Numero de comprobante o numero del ultimo comprobante en caso de ser mas de uno
'CbteFch' => intval(date('Ymd')), // (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo
'ImpTotal' => 1, // Importe total del comprobante
'ImpTotConc' => 0, // Importe neto no gravado
'ImpNeto' => 1, // Importe neto gravado
'ImpOpEx' => 0, // Importe exento de IVA
'ImpIVA' => 0, //Importe total de IVA
'ImpTrib' => 0, //Importe total de tributos
'FchServDesde' => NULL, // (Opcional) Fecha de inicio del servicio (yyyymmdd), obligatorio para Concepto 2 y 3
'FchServHasta' => NULL, // (Opcional) Fecha de fin del servicio (yyyymmdd), obligatorio para Concepto 2 y 3
'FchVtoPago' => NULL, // (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)
);

$afip = new Afip(array('CUIT' => 27328056807, 'production' => true, 'cert' => 'CN27328056807_6254f0c7b9d1978b.crt', 'key' => '27328056807.key'));

$res = $afip->ElectronicBilling->CreateVoucher($data);

echo $res['CAE']; //CAE asignado el comprobante
echo $res['CAEFchVto']; //Fecha de vencimiento del CAE (yyyy-mm-dd)

?>
`

from afip.php.

ivanalemunioz avatar ivanalemunioz commented on August 9, 2024

from afip.php.

agustinbus avatar agustinbus commented on August 9, 2024

Probe con string y con int, y tambien me tira error

from afip.php.

agustinbus avatar agustinbus commented on August 9, 2024

Ahora voy a hacer unas pruebas en un server con linux a ver como se comporta!

from afip.php.

guillebalmacedaonline avatar guillebalmacedaonline commented on August 9, 2024

Buenas chicos, probe la libreria y esta funcionando full. Tambien estoy con ganas de hacer el paso a Laravel jeje esa seria una actualizacion... Mi proyecto esta en laravel y me hice maña para hacerlo funcionar. Con respecto al error con la fecha del Comprobante. Dime que version de PHP estas utilizando... y si haces un var_dump() de intval(date('Ymd')), prueba tambien hardcodeando lo siguiente con fecha actual intval('20180627')

from afip.php.

guillebalmacedaonline avatar guillebalmacedaonline commented on August 9, 2024

Muy extraño hermano. Lo que si, ese error ya lo da afip por lo que entiendo. Puede que se tenga que depurar el archivo ElectronicBilliing.php para ver como confecciona el archivo xml con el que hace soap.

from afip.php.

agustinbus avatar agustinbus commented on August 9, 2024

Si la verdad muy raro, acabo de hacer una prueba en un servidor con linux y va de 10! Debe ser algun problema de configuración de mi XAMPP, versión php, etc. ya que como vos decis el error lo devuelve el webservice de Afip.

from afip.php.

guillebalmacedaonline avatar guillebalmacedaonline commented on August 9, 2024

Yo uso xamp la ultima version. Pero si tube problema con una version anterior. En mi caso fue con la ejecucion de soap.

from afip.php.

ivanalemunioz avatar ivanalemunioz commented on August 9, 2024

Pudiste solucionar el problema Agustin?

from afip.php.

estebanbordon avatar estebanbordon commented on August 9, 2024

Hola gente, comparto lo que me soluciono este problema:

quitar la referencia (&) en el parametro $data dentro del metodo CreateVoucher.

Ivan, excelente trabajo, saludos

from afip.php.

tecnoher avatar tecnoher commented on August 9, 2024

@agustinbus disculpa que vuelva con este tema, estoy teniendo un inconveniente similar al que te paso con lo de la fecha "Campo CbteFch No corresponde a una fecha valida con formato YYYYMMDD" también veo que en un servidor cuando cargo el wsdl con FECAESolicitar, me carga bien la CABECERA pero no el DETALLE, queda vacio, tal vez por esto de la fecha, como lo solucionaste?

from afip.php.

NicoMachado avatar NicoMachado commented on August 9, 2024

Hola @tecnoher

Probaron asi?

'CbteFch' => intval(date('Ymd', strtotime($cbteFch))), // (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo

donde $cbteFch = $cuota->fecha_creacion;
osea un campo fecha

Saludos

from afip.php.

tecnoher avatar tecnoher commented on August 9, 2024

Hola @NicoMachado gracias por tu respuesta.
En el wsdl el campo CbteFch está declarado como string
<s:element minOccurs="0" maxOccurs="1" name="CbteFch" type="s:string"/>

y en el documento de AFIP dice que es un STRING de 8, es muy raro lo que pasa por que no se me llena ni un campo del
<s:complexType name="FEDetRequest">

from afip.php.

NicoMachado avatar NicoMachado commented on August 9, 2024

hola @tecnoher , te pego aca como armo mi request...

                    //Ver Ejemplo de afipSDK
                    $data = array(
                            'CantReg' 		=> 1, // Cantidad de comprobantes a registrar
                            'PtoVta' 		=> $ptoVta, // Punto de venta
                            'CbteTipo' 		=> $CbteTipo, // Tipo de comprobante (ver tipos disponibles) 
                            'Concepto' 		=> 2, // Concepto del Comprobante: (1)Productos, (2)Servicios, (3)Productos y Servicios
                            'DocTipo' 		=> $docTipo, // Tipo de documento del comprador (ver tipos disponibles)
                            'DocNro' 		=> $docNro, // Numero de documento del comprador
                            'CbteDesde' 	=> $UltNro, // Numero de comprobante o numero del primer comprobante en caso de ser mas de uno
                            'CbteHasta' 	=> $UltNro, // Numero de comprobante o numero del ultimo comprobante en caso de ser mas de uno
                            //'CbteFch' 		=> intval(date('Ymd')), // (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo
                            'CbteFch' 		=> intval(date('Ymd', strtotime($cbteFch))), // (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo
                            'ImpTotal' 		=> $imp_total, // Importe total del comprobante
                            'ImpTotConc'            => $imp_total_conceptos, // Importe neto no gravado
                            'ImpNeto' 		=> $imp_neto, // Importe neto gravado
                            'ImpOpEx' 		=> 0, // Importe exento de IVA
                            'ImpIVA' 		=> 0, //Importe total de IVA
                            'ImpTrib' 		=> 0, //Importe total de tributos
                            'FchServDesde' 	=> intval(date('Ymd',  strtotime($recibo->fecha))), // (Opcional) Fecha de inicio del servicio (yyyymmdd), obligatorio para Concepto 2 y 3
                            'FchServHasta' 	=> intval(date('Ymd',  strtotime($recibo->fecha))), // (Opcional) Fecha de fin del servicio (yyyymmdd), obligatorio para Concepto 2 y 3
                            'FchVtoPago' 	=> intval(date('Ymd',  strtotime($recibo->fecha))), // (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)  
                            'Opcionales' 	=> array( // (Opcional) Campos auxiliares
                                    array(
                                            'Id' 		=> 10, // Codigo de tipo de opcion (ver tipos disponibles) 
                                            'Valor' 	=> 1 // Valor 
                                    ),
                                    array(
                                        'Id' => 1011,
                                        'Valor' => $docTipo
                                    ),
                                    array(
                                        'Id' => 1012,
                                        'Valor' => (float) $docNro
                                    ),
                            ), 
                    );

luego solo invoco al metodo...

                    try {
                         $result = $afip->ElectronicBilling->CreateVoucher($data);
                         var_dump($result);
                    } catch (Exception $ex) {
                         $error = utf8_decode($ex->getMessage());
                    }      


Fijate si te da alguna punta.
Postea como armas el request, si queres.

from afip.php.

tecnoher avatar tecnoher commented on August 9, 2024

Te muestro lo que cargo en el WSDL en la etiqueta FECAESolicitar -> FeCAEReq

de ahí me carga bien el FeCabReq pero el FeDetReq lo deja vacio, osea que el error no es tanto por el campo CbteFch en sí, sino por que no hay datos a ese nivel

subo una imagen acá por que se pegó horrible el array
https://i.imgur.com/Di0iKLr.png

https://i.imgur.com/VgwyX1g.png

"FeCAEReq" => array:2 [▼ "FeCabReq" => array:3 [▼ "CantReg" => 1 "PtoVta" => 17 "CbteTipo" => 6 ] "FeDetReq" => array:1 [▼ "FECAEDetRequest" => array:1 [▼ 0 => & array:18 [▼ "Concepto" => 1 "DocTipo" => 80 "DocNro" => 2030749807.0 "CbteDesde" => 1 "CbteHasta" => 1 "CbteFch" => "20190227" "ImpTotal" => 7018.0 "ImpTotConc" => 0.0 "ImpNeto" => 5800.0 "ImpOpEx" => 0.0 "ImpTrib" => 0 "ImpIVA" => 1218.0 "FchServDesde" => "" "FchServHasta" => "" "FchVtoPago" => "" "MonId" => "PES" "MonCotiz" => 1 "Iva" => array:1 [▼ "AlicIva" => array:1 [▼ 0 => array:3 [▼ "Id" => 5 "BaseImp" => 5800.0 "Importe" => 1218.0 ] ] ] ] ] ] ]

este es el response con los errores
+"FeDetResp": {#417 ▼ +"FECAEDetResponse": {#385 ▼ +"Concepto": 0 +"DocTipo": 0 +"DocNro": 0 +"CbteDesde": 0 +"CbteHasta": 0 +"Resultado": "R" +"CAE": "" +"CAEFchVto": "" } } +"Errors": {#391 ▼ +"Err": array:2 [▼ 0 => {#388 ▼ +"Code": 10016 +"Msg": "Campo CbteFch No corresponde a una fecha valida con formato YYYYMMDD" } 1 => {#421 ▼ +"Code": 10008 +"Msg": "Campo CbteDesde se encuentre entre entre 1 y 99999999." } ] } }

from afip.php.

NicoMachado avatar NicoMachado commented on August 9, 2024

Me llama la atencion eso que remarco, justamente el elemento FECAEDetRequest parece ser un array con un formato cod =>valor ...
Y deberia ser solo un array...

image

podes pegar el codigo fuente de como armas el $data ?

from afip.php.

tecnoher avatar tecnoher commented on August 9, 2024

si es raro, pero bueno estbaa usando otra libreria, ahora me estoy pasando a esta libreria, te re agradezco igual haberte tomado el tiempo de ayudarme.
Te hago una consulta sencilla ya que estamos, hay un metodo de consulta de dni? algo donde por dni me traiga el cuit de la persona?

from afip.php.

tecnoher avatar tecnoher commented on August 9, 2024

Y probaste poniendo la fecha como numero?

On Wed, 27 Feb 2019 at 19:32 Hernan T @.***> wrote: si es raro, pero bueno estbaa usando otra libreria, ahora me estoy pasando a esta libreria, te re agradezco igual haberte tomado el tiempo de ayudarme. Te hago una consulta sencilla ya que estamos, hay un metodo de consulta de dni? algo donde por dni me traiga el cuit de la persona? — You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub <#6 (comment)>, or mute the thread https://github.com/notifications/unsubscribe-auth/Aaa8Th16OXkQk8yCviW5Mvpg_3gJPsafks5vRweagaJpZM4U5pE5 .

Sisi, pero el tema es que usaba otra libreria, que acaba de pasar a mejor vida jaja, ahora está funcionando todo de 10

ya que te tengo acá Ivan, te felicito por la SDK,

sabes que en la otra librería que usaba se hacía una consulta de constancia de inscripcion, que si no encontraba a la persona inscripta, de todas maneras te daba el nombre completo, dni (igual es el parámetro que se le pasa a la funcion) y dirección a veces..

https://www.afip.gob.ar/ws/WSCI/manualwssrwsconstanciainscripcionv2.0.pdf

estoy tratando de hacerlo funcionar pero si pongo el servicio en el TA me da un error

$ta = $this->afip->GetServiceTA('ws_sr_constancia_inscripcion');

from afip.php.

tecnoher avatar tecnoher commented on August 9, 2024

Hola @tecnoher, si estaria bueno que te pases a la libreria!, la verdad me sorprendio la simpleza.
no no hay nada como una funcion asi, ya tenes que tener el CUIT/CUIL de antemano.

Gracias Nicolas es simple y clara (no tan simple igual ehh tiene su buen trabajito). Ya la estoy utilizando :)

from afip.php.

tecnoher avatar tecnoher commented on August 9, 2024

casi me da un infarto... usanto en producción esta librería me salió el mismo mensaje del campo CbteFch incorrecto..
lo que hice fué sacar la referencia de la variable $data (&$data) en el método CreateVoucher y funcionó!

'FECAEDetRequest' => $data

tal cual lo dijo "estebanbordon" en este thread

gracias gente!

from afip.php.

NicoMachado avatar NicoMachado commented on August 9, 2024

Hola @tecnoher @estebanbordon , solo para sacarme la curiosidad
en mi caso funciona la linea:

...
'FeDetReq' => array(
'FECAEDetRequest' => &$data
)
...

Con el operador por referencia.
Que version de PHP estan corriendo ?
en mi caso estoy corriendo un XAMPP, con PHP Version 5.3.1.

Gracias

from afip.php.

tecnoher avatar tecnoher commented on August 9, 2024

Si lo ejecuto local (docker, apache y php7.1) funciona esa linea pero en el servidor que tengo no funciona.
El servidor esun VPS con Centos7 y PHP 7.0.33 (cli)
Estoy casi seguro que es por la versión de PHP

from afip.php.

tecnoher avatar tecnoher commented on August 9, 2024

Aca vengo de nuevo con un UPGRADE, finalmente encontré que actualizando el WSDL de la consulta A13 se puede obtener un CUIT por DNI

Se llama al "getIdPersonaListByDocumento" y el WS te devuelve el cuit de la persona

Tenés que actualizar el archivo "ws_sr_padron_a13-production.wsdl" por el que está en este link:
wsdl -> https://aws.afip.gov.ar/sr-padron/webservices/personaServiceA13?WSDL

from afip.php.

esclaudio avatar esclaudio commented on August 9, 2024

Hola!

Confirmo que la solución que dieron @tecnoher y @NicoMachado funciona (pasar la variable $data por valor). El problema surge concretamente con PHP 7.0.

En mi caso, lo que hice fue cambié el orden de las asignaciones para respetar el funcionamiento anterior:

file: src/Afip_res/Class/ElectronicBilling.php

public function CreateVoucher($data, $return_response = FALSE)
{
    $req = array(
        'FeCAEReq' => array(
            'FeCabReq' => array(
                'CantReg' 	=> $data['CbteHasta']-$data['CbteDesde']+1,
                'PtoVta' 	=> $data['PtoVta'],
                'CbteTipo' 	=> $data['CbteTipo']
                ),
            'FeDetReq' => array( 
                'FECAEDetRequest' => null // CAMBIÉ ESTO!
            )
        )
    );

    unset($data['CantReg']);
    unset($data['PtoVta']);
    unset($data['CbteTipo']);

    if (isset($data['Tributos'])) 
        $data['Tributos'] = array('Tributo' => $data['Tributos']);

    if (isset($data['Iva'])) 
        $data['Iva'] = array('AlicIva' => $data['Iva']);

    if (isset($data['Opcionales'])) 
        $data['Opcionales'] = array('Opcional' => $data['Opcionales']);

    $req['FeCAEReq']['FeDetReq']['FECAEDetRequest'] = $data; // Y AGREGUÉ ESTO!

Gracias!

from afip.php.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.