Skip to content

Commit 0905194

Browse files
committed
Version 0.5 released
1 parent 98e7a18 commit 0905194

15 files changed

+2040
-599
lines changed

README.md

Lines changed: 21 additions & 207 deletions
Original file line numberDiff line numberDiff line change
@@ -1,225 +1,39 @@
11
# AFIP SDK
22
SDK Para los Web Services de AFIP (Argentina)
33

4-
## Acerca de
5-
El SDK fue programado con la intención de facilitar el acceso a los Web services de la AFIP.
6-
**Esta primera versión del SDK solo cubre algunos items de la especificación del Web Service de Facturacion Electronica (wsfe1)** pero en el futuro se irán agregando los que restan, hasta tener el SDK completo.
7-
Es un software libre en el que cualquier programador puede contribuir.
8-
9-
*Este software y sus desarroladores no tienen ninguna relación con la AFIP.*
10-
11-
## Instalación
12-
1. Clonarlo con `git clone` o descargar el repositorio desde [aqui](https://github.com/ivanalemunioz/afip-php/archive/master.zip "Dercargar repositorio").
13-
2. Copiar el contenido de la carpeta *res* a tu aplicación.
14-
3. Remplazar *Afip_res/cert* por tu certificado provisto por AFIP y *Afip_res/key* por la clave generada.
15-
4. Procuren que la carpeta *Afip_res* no sea accesible desde internet ya que allí se guardara toda la informacion para acceder a los web services
16-
17-
Ir a http://www.afip.gob.ar/ws/paso4.asp para obtener mas información de como generar la clave y certificado
18-
19-
## Como usarlo
20-
Lo primero es incluir el SDK en tu aplication
21-
````php
22-
include 'Afip.php';
23-
````
24-
25-
Luego creamos una instancia de la clase Afip pasandole un Array como parámetro.
26-
Opciones disponibles:
27-
* **CUIT** *(int)* El CUIT a usar en los Web Services
28-
* **production** *(bool)* (default FALSE) (Opcional) TRUE para usar los Web Services en modo produccion
29-
````php
30-
$afip = new Afip(array('CUIT' => 20111111112));
31-
````
32-
Una vez realizado esto podemos comenzar a usar el SDK
33-
34-
> Nota: Aquí hablaremos de comprobante indistintamente si es una factura, nota de crédito, etc
35-
36-
### Métodos disponibles para Facturación Electrónica (wsfe)
37-
1. [Obtener número del último comprobante creado *(FECompUltimoAutorizado)*](#obtener-número-del-último-comprobante-creado)
38-
2. [Crear y asignar CAE a un comprobante *(FECAESolicitar)*](#crear-y-asignar-cae-a-un-comprobante)
39-
3. [Crear y asignar CAE a siguiente comprobante *(FECompUltimoAutorizado + FECAESolicitar)*](#crear-y-asignar-cae-a-siguiente-comprobante)
40-
4. [Obtener información de un comprobante *(FECompConsultar)*](#obtener-información-de-un-comprobante)
41-
42-
La especificación de este Web Service se encuentra disponible en http://www.afip.gob.ar/fe/documentos/manual_desarrollador_COMPG_v2_10.pdf
43-
44-
#### Obtener número del último comprobante creado
45-
Debemos utilizar el método `GetLastVoucher` con los parámetros punto de venta y tipo de comprobante que queremos consultar.
46-
````php
47-
$last_voucher = $afip->GetLastVoucher(1,6) //Devuelve el número del último comprobante creado para el punto de venta 1 y el tipo de comprobante 6 (Factura B)
48-
````
49-
#### Crear y asignar CAE a un comprobante
50-
Debemos utilizar el método `CreateVoucher` pasándole como parámetro un Array con los detalles del comprobante y si queremos tener la respuesta completa enviada por el WS debemos pasarle como segundo parámetro TRUE, en caso de no enviarle el segundo parámetro nos devolverá como respuesta `array(CAE => CAE asignado el comprobante, CAEFchVto => Fecha de vencimiento del CAE (yyyy-mm-dd))`.
51-
````php
52-
$data = array(
53-
'CantReg' => 1, // Cantidad de comprobantes a registrar
54-
'PtoVta' => 1, // Punto de venta
55-
'CbteTipo' => 6, // Tipo de comprobante (ver tipos disponibles)
56-
'Concepto' => 1, // Concepto del Comprobante: (1)Productos, (2)Servicios, (3)Productos y Servicios
57-
'DocTipo' => 80, // Tipo de documento del comprador (ver tipos disponibles)
58-
'DocNro' => 20111111112, // Número de documento del comprador
59-
'CbteDesde' => 1, // Número de comprobante o numero del primer comprobante en caso de ser mas de uno
60-
'CbteHasta' => 1, // Número de comprobante o numero del último comprobante en caso de ser mas de uno
61-
'CbteFch' => intval(date('Ymd')), // (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo
62-
'ImpTotal' => 184.05, // Importe total del comprobante
63-
'ImpTotConc' => 0, // Importe neto no gravado
64-
'ImpNeto' => 150, // Importe neto gravado
65-
'ImpOpEx' => 0, // Importe exento de IVA
66-
'ImpIVA' => 26.25, //Importe total de IVA
67-
'ImpTrib' => 7.8, //Importe total de tributos
68-
'FchServDesde' => NULL, // (Opcional) Fecha de inicio del servicio (yyyymmdd), obligatorio para Concepto 2 y 3
69-
'FchServHasta' => NULL, // (Opcional) Fecha de fin del servicio (yyyymmdd), obligatorio para Concepto 2 y 3
70-
'FchVtoPago' => NULL, // (Opcional) Fecha de vencimiento del servicio (yyyymmdd), obligatorio para Concepto 2 y 3
71-
'MonId' => 'PES', //Tipo de moneda usada en el comprobante (ver tipos disponibles)('PES' para pesos argentinos)
72-
'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos)
73-
'CbtesAsoc' => array( // (Opcional) Comprobantes asociados
74-
array(
75-
'Tipo' => 6, // Tipo de comprobante (ver tipos disponibles)
76-
'PtoVta' => 1, // Punto de venta
77-
'Nro' => 1, // Numero de comprobante
78-
'Cuit' => 20111111112 // (Opcional) Cuit del emisor del comprobante
79-
)
80-
),
81-
'Tributos' => array( // (Opcional) Tributos asociados al comprobante
82-
array(
83-
'Id' => 99, // Id del tipo de tributo (ver tipos disponibles)
84-
'Desc' => 'Ingresos Brutos', // (Opcional) Descripción
85-
'BaseImp' => 150, // Base imponible para el tributo
86-
'Alic' => 5.2, // Alícuota
87-
'Importe' => 7.8 // Importe del tributo
88-
)
89-
),
90-
'Iva' => array( // (Opcional) Alícuotas asociadas al comprobante
91-
array(
92-
'Id' => 5, // Id del tipo de IVA (ver tipos disponibles)
93-
'BaseImp' => 100, // Base imponible
94-
'Importe' => 21 // Importe
95-
)
96-
),
97-
'Opcionales' => array( // (Opcional) Campos auxiliares
98-
array(
99-
'Id' => 17, // Código de tipo de opción (ver tipos disponibles)
100-
'Valor' => 2 // Valor
101-
)
102-
),
103-
'Compradores' => array( // (Opcional) Detalles de los clientes del comprobante
104-
array(
105-
'DocTipo' => 80, // Tipo de documento (ver tipos disponibles)
106-
'DocNro' => 20111111112, // Número de documento
107-
'Porcentaje' => 100 // Porcentaje de titularidad del comprador
108-
)
109-
)
110-
);
111-
112-
$res = $afip->CreateVoucher($data);
1134

114-
$res['CAE']; //CAE asignado el comprobante
115-
$res['CAEFchVto']; //Fecha de vencimiento del CAE (yyyy-mm-dd)
116-
````
117-
118-
Para mas información acerca de este método ver el item 4.1 de la [especificación del Web service](http://www.afip.gob.ar/fe/documentos/manual_desarrollador_COMPG_v2_10.pdf)
119-
120-
#### Crear y asignar CAE a siguiente comprobante
121-
122-
Debemos utilizar el método `CreateNextVoucher` pasándole como parámetro un Array con los detalles del comprobante al igual que el método `CreateVoucher`, nos devolverá como respuesta array(CAE => CAE asignado al comprobante, CAEFchVto => Fecha de vencimiento del CAE (yyyy-mm-dd), voucher_number => Número asignado al comprobante).
123-
````php
124-
$res = $afip->CreateNextVoucher($data);
125-
126-
$res['CAE']; //CAE asignado el comprobante
127-
$res['CAEFchVto']; //Fecha de vencimiento del CAE (yyyy-mm-dd)
128-
$res['voucher_number']; //Número asignado al comprobante
129-
````
130-
#### Obtener información de un comprobante
131-
Con este método podemos obtener toda la información relacionada a un comprobante o simplemente saber si el comprobante existe, debemos ejecutar el método `GetVoucherInfo` pasándole como parámetros el número de comprobante, el punto de venta y el tipo de comprobante, nos devolverá un Array con toda la información del comprobante o NULL si el comprobante no existe.
132-
````php
133-
$voucher_info = $afip->GetVoucherInfo(1,1,6); //Devuelve la información del comprobante 1 para el punto de venta 1 y el tipo de comprobante 6 (Factura B)
134-
135-
if($voucher_info === NULL){
136-
echo 'El comprobante no existe';
137-
}
138-
else{
139-
echo 'Esta es la información del comprobante:';
140-
echo '<pre>';
141-
print_r($voucher_info);
142-
echo '</pre>';
143-
}
144-
````
145-
146-
Para mas información acerca de este método ver el item 4.19 de la [especificación del Web service](http://www.afip.gob.ar/fe/documentos/manual_desarrollador_COMPG_v2_10.pdf)
147-
148-
### Métodos para obtener los tipos de datos disponibles en WSFE
149-
1. [Obtener tipos de comprobantes disponibles *(FEParamGetTiposCbte)*](#obtener-tipos-de-comprobantes-disponibles)
150-
2. [Obtener tipos de conceptos disponibles *(FEParamGetTiposConcepto)*](#obtener-tipos-de-conceptos-disponibles)
151-
3. [Obtener tipos de documentos disponibles *(FEParamGetTiposDoc)*](#obtener-tipos-de-documentos-disponibles)
152-
4. [Obtener tipos de alícuotas disponibles *(FEParamGetTiposIva)*](#obtener-tipos-de-al%C3%ADcuotas-disponibles)
153-
5. [Obtener tipos de monedas disponibles *(FEParamGetTiposMonedas)*](#obtener-tipos-de-monedas-disponibles)
154-
6. [Obtener tipos de opciones disponibles para el comprobante *(FEParamGetTiposOpcional)*](#obtener-tipos-de-opciones-disponibles-para-el-comprobante)
155-
7. [Obtener tipos de tributos disponibles *(FEParamGetTiposTributos)*](#obtener-tipos-de-tributos-disponibles)
156-
157-
#### Obtener tipos de comprobantes disponibles
158-
159-
````php
160-
$voucher_types = $afip->GetVoucherTypes();
161-
````
162-
163-
Para mas información acerca de este método ver el item 4.4 de la [especificación del Web service](http://www.afip.gob.ar/fe/documentos/manual_desarrollador_COMPG_v2_10.pdf)
164-
#### Obtener tipos de conceptos disponibles
165-
````php
166-
$concept_types = $afip->GetConceptTypes();
167-
````
5+
## Acerca de
6+
El SDK fue programado con la intención de facilitar el acceso a los web services de la AFIP.
1687

169-
Para mas información acerca de este método ver el item 4.5 de la [especificación del Web service](http://www.afip.gob.ar/fe/documentos/manual_desarrollador_COMPG_v2_10.pdf)
170-
#### Obtener tipos de documentos disponibles
171-
````php
172-
$document_types = $afip->GetDocumentTypes();
173-
````
8+
Esta versión del SDK (0.5) esta destinada a facilitar la integración de otros web services, ademas de agregar los web services de consulta al padrón de AFIP alcance 4, 5 y 10.
1749

175-
Para mas información acerca de este método ver el item 4.6 de la [especificación del Web service](http://www.afip.gob.ar/fe/documentos/manual_desarrollador_COMPG_v2_10.pdf)
176-
#### Obtener tipos de alícuotas disponibles
177-
````php
178-
$aloquot_types = $afip->GetAliquotTypes();
179-
````
10+
Es un software libre en el que cualquier programador puede contribuir.
18011

181-
Para mas información acerca de este método ver el item 4.7 de la [especificación del Web service](http://www.afip.gob.ar/fe/documentos/manual_desarrollador_COMPG_v2_10.pdf)
182-
#### Obtener tipos de monedas disponibles
183-
````php
184-
$currencies_types = $afip->GetCurrenciesTypes();
185-
````
12+
Este software y sus desarrolladores no tienen ninguna relación con la AFIP.
18613

187-
Para mas información acerca de este método ver el item 4.8 de la [especificación del Web service](http://www.afip.gob.ar/fe/documentos/manual_desarrollador_COMPG_v2_10.pdf)
188-
#### Obtener tipos de opciones disponibles para el comprobante
189-
````php
190-
$option_types = $afip->GetOptionsTypes();
191-
````
19214

193-
Para mas información acerca de este método ver el item 4.9 de la [especificacion del Web service](http://www.afip.gob.ar/fe/documentos/manual_desarrollador_COMPG_v2_10.pdf)
194-
#### Obtener tipos de tributos disponibles
195-
````php
196-
$tax_types = $afip->GetTaxTypes();
197-
````
15+
## ¡¡Importante!!
16+
En la versión 0.5 se hicieron cambios importantes en el código para facilitar la integración de otros Web Services, por esto los que estuvieran utilizando la versión 0.1 para la Facturación Electrónica deberán hacer algunos pequeños cambios al migrar a la versión 0.5
19817

199-
Para mas información acerca de este método ver el item 4.10 de la [especificación del Web service](http://www.afip.gob.ar/fe/documentos/manual_desarrollador_COMPG_v2_10.pdf)
18+
[Migrar de v0.1 a v0.5](https://github.com/ivanalemunioz/afip-php/wiki/Migrar-de-v0.1-a-v0.5)
20019

201-
### Otros métodos disponibles en el SDK
202-
1. [Transformar formato de fecha que utiliza AFIP (yyyymmdd) a yyyy-mm-dd](#transformar-formato-de-fecha-que-utiliza-afip-yyyymmdd-a-yyyy-mm-dd)
203-
2. [Enviar consulta al Web Service](#enviar-consulta-al-web-service)
20+
# Indice
21+
**Empezar**
22+
1. [Instalación](https://github.com/ivanalemunioz/afip-php/wiki/Instalaci%C3%B3n)
23+
2. [Como usarlo](https://github.com/ivanalemunioz/afip-php/wiki/Como-usarlo)
20424

205-
#### Transformar formato de fecha que utiliza AFIP (yyyymmdd) a yyyy-mm-dd
206-
Para esto utilizaremos el método `FormatDate` pasándole la fecha como parámetro
207-
````php
208-
$date = $afip->FormatDate('19970508'); //Nos devuelve 1997-05-08
209-
````
25+
**Web Services disponibles**
26+
- [Facturación Electrónica](https://github.com/ivanalemunioz/afip-php/wiki/Facturaci%C3%B3n-Electr%C3%B3nica)
27+
- [Consulta al padron de AFIP alcance 4](https://github.com/ivanalemunioz/afip-php/wiki/Consulta-al-padron-de-AFIP-alcance-4)
28+
- [Consulta al padron de AFIP alcance 5](https://github.com/ivanalemunioz/afip-php/wiki/Consulta-al-padron-de-AFIP-alcance-5)
29+
- [Consulta al padron de AFIP alcance 10](https://github.com/ivanalemunioz/afip-php/wiki/Consulta-al-padron-de-AFIP-alcance-10)
21030

211-
#### Enviar consulta al Web Service
212-
Podemos utilizar este método para enviar otras consultas al Web Service, para esto utilizaremos el método `ExecuteRequest` pasándole como primer parámetro el Web Service a ejecutar, segundo parámetro la operación a realizar y como tercer parámetro le pasaremos los parámetros que serán enviados el Web Service (excepto el parámetro 'Auth' que es agregado automáticamente)
213-
````php
214-
$response = $afip->ExecuteRequest('wsfe', 'FEParamGetCotizacion', array('MonId' => 'DOL')); //Ejecuta la operación FEParamGetCotizacion del wsfe
31+
**Migración**
32+
- [Migrar de v0.1 a v0.5](https://github.com/ivanalemunioz/afip-php/wiki/Migrar-de-v0.1-a-v0.5)
21533

216-
echo 'La cotización de la moneda es:';
217-
echo '<pre>';
218-
print_r($response->ResultGet);
219-
echo '</pre>';
220-
````
22134

35+
Toda la documentacion de la libreria esta disponible en https://github.com/ivanalemunioz/afip-php/wiki
22236

22337
## Soporte y contacto
22438

225-
39+
Ivan Muñoz [email protected]

examples/CreateVoucher.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?php
2-
include '../res/Afip.php';
2+
include '../src/Afip.php';
33

44
$data = array(
55
'CantReg' => 1, // Cantidad de comprobantes a registrar
@@ -63,6 +63,6 @@
6363

6464
$afip = new Afip(array('CUIT' => 20111111112));
6565

66-
$afip->CreateVoucher($data);
66+
$afip->ElectronicBilling->CreateVoucher($data);
6767

6868
?>

0 commit comments

Comments
 (0)