/**
* Plugin Name: Wanderlust Afip Exportador
* Plugin URI: https://shop.wanderlust-webdesign.com/shop/woocommerce-afip/
* Description: Wanderlust Afip integrates WooCommerce with Afip Exportador
* Version: 0.0.3
* Author: wanderlust-webdesign.com
* Author URI: https://wanderlust-webdesign.com
* WC tested up to: 8.0.0
* Text Domain: wanderlust-afip-exportador
* Domain Path: /languages/
*
* @author wanderlust-webdesign.com
* @package Wanderlust Afip Exportador
* @version 0.3
*/
define( 'AFIP_EXPORTADOR_WANDERLUST_PATH', plugin_dir_path( __FILE__ ) );
define( 'AFIP_EXPORTADOR_WANDERLUST_DIR', plugin_dir_url( __FILE__ ) );
// If this file is called directly, abort.
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
function wanderlust_afip_exportar_admin() {
$my_page = add_submenu_page( 'woocommerce','Wanderlust Afip Exportador', 'Exportar a AFIP', 'manage_woocommerce', 'wanderlust-afip-exportar', 'wanderlust_afip_exportar' );
add_action( 'load-' . $my_page, 'wanderlust_afip_exportar_js' );
wp_register_style( 'myPluginStylesheet', plugins_url('includes/css/style.css', __FILE__) );
wp_enqueue_style( 'myPluginStylesheet' );
}
add_action( 'admin_menu', 'wanderlust_afip_exportar_admin' );
use PhpOffice\PhpSpreadsheet\Spreadsheet;
require_once 'vendor/autoload.php';
function wanderlust_afip_exportar_js(){
add_action( 'admin_enqueue_scripts', 'wanderlust_afip_exportar_admin_js' );
}
function wanderlust_afip_exportar_admin_js(){
wp_enqueue_script( 'easypost-label-admin-script', plugins_url('afipjs.js',__FILE__), array( 'jquery' ) );
//wp_enqueue_script( 'easypost-label-admin-print', plugins_url('includes/js/print.js',__FILE__), array( 'jquery' ) );
}
function wanderlust_afip_exportar() {
if ( !current_user_can( 'manage_woocommerce' ) ) {
wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
}
require_once(dirname(__FILE__) . '/admin.php');
}
add_action( 'wp_ajax_wanderlust_afip_export', 'wanderlust_afip_export' );
add_action( 'wp_ajax_nopriv_wanderlust_afip_export', 'wanderlust_afip_export' );
function wanderlust_afip_export() {
global $wpdb;
$post_status = implode("','", array('wc-processing', 'wc-completed') );
$result = $wpdb->get_results( "SELECT * FROM $wpdb->posts
WHERE post_type = 'shop_order'
AND post_date BETWEEN '{$_POST['desde']} 00:00:00' AND '{$_POST['hasta']} 23:59:59'
");
//AND post_status IN ('{$post_status}')
$facturas = array();
foreach($result as $orders){
$dni = null;
$afip = get_post_meta($orders->ID, 'afip_response', true);
if(!empty($afip)){
$afip = json_decode($afip);
if(!empty($afip->voucher->DocTipo)){
$dni = intval($afip->voucher->DocTipo);
}
if(!empty($dni) && $dni > 1){
$factura = array(
$afip->voucher->CbteFch, # Fecha comprobante
$afip->voucher->CbteTipo, # Tipo comprobante
$afip->voucher->PtoVta, # Punto de venta
$afip->cae_full->numeroComprobante, # Numero cbte
$afip->voucher->DocTipo, # Codigo de identificacion comprador
$afip->voucher->DocNro, # Numero de identificacion comprador
$afip->voucher->nombreCliente, # Apellido y nombre comprador
$afip->voucher->ImpTotal, # Importe total de la operacion
'0', # Importe total de conceptos que no integran el precio total no gravado
'0', # Importe de operaciones exentas
'0', # Importe de percepciones o pagos a cuenta del Impuesto al Valor Agregado
'0', # Importe de percepciones o pagos a cuenta de otros impuestos nacionales
'0', # Importe de percepciones de Ingresos Brutos
'0', # Importe de percepciones de Impuestos Municipales
'0', # Importe de Impuestos Internos
'PES', # Codigo moneda
'1', # tipo de cambio
'1', # Cantidad de alicuota iva
'0', # Codigo de operacion
'0', # Otros tributos
$afip->voucher->CbteFch, # Fecha vencimiento pago
$afip->voucher->ImpNeto, # Importe neto no gravado
$afip->voucher->Iva[0]->Id, # Alicuota IVA
$afip->voucher->Iva[0]->Importe # IVA liquidado
);
$facturas[] = $factura;
}
}
}
if(!empty($facturas)){
procesa_facturas($facturas);
$archivo_cbte = plugins_url('salida_cbte.txt',__FILE__);
$archivo_alic = plugins_url('salida_alic.txt',__FILE__);
$archivo_xls = plugins_url('salida.xls',__FILE__);
echo '<a class="button" href="'.$archivo_cbte.'" download="salida_cbte.txt">salida_cbte.txt</a></br>';
echo '<a class="button" href="'.$archivo_alic.'" download="salida_alic.txt">salida_alic.txt</a></br>';
echo '<a class="button" href="'.$archivo_xls.'" download="salida.xls">salida.xls</a>';
} else {
echo 'NO SE ENCONTRARON RESULTADOS';
}
die();
}
function procesa_facturas($facturas){
$modelo = plugin_dir_path( __FILE__ ) . "modelo.xls";
$archivo_cbte = plugin_dir_path( __FILE__ ) . "salida_cbte.txt";
$archivo_alic = plugin_dir_path( __FILE__ ) . "salida_alic.txt";
$archivo_xls = plugin_dir_path( __FILE__ ) . "salida.xls";
# $spreadsheet = new Spreadsheet();
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($modelo);
$fhc=fopen($archivo_cbte, "w");
$fhi=fopen($archivo_alic, "w");
$row=5;
foreach( $facturas as $factura )
{
genera_reg_excel($factura, $spreadsheet, $row);
fwrite( $fhc, genera_reg_cbte($factura));
fwrite( $fhc, "\n");
fwrite( $fhi, genera_reg_alic($factura));
fwrite( $fhi, "\n");
$row++;
}
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xls($spreadsheet);
$writer->save($archivo_xls);
fclose($fhc);
fclose($fhi);
}
function genera_reg_excel($factura, $sp, $row)
{
$dia=substr($factura[0], 6, 2);
$mes=substr($factura[0], 4, 2);
$anio=substr($factura[0], 0, 4);
$fecha=sprintf("%s/%s/%s", $dia, $mes, $anio);
$dia=substr($factura[20], 6, 2);
$mes=substr($factura[20], 4, 2);
$anio=substr($factura[20], 0, 4);
$fecha_venc=sprintf("%s/%s/%s", $dia, $mes, $anio);
$sp->setActiveSheetIndex(0)
->setCellValue('A'.$row, $fecha)
->setCellValue('B'.$row, sprintf("%03d", $factura[1]))
->setCellValue('C'.$row, sprintf("%05d", $factura[2]))
->setCellValue('D'.$row, sprintf("%020d", $factura[3]))
->setCellValue('E'.$row, sprintf("%020d", $factura[3]))
->setCellValue('F'.$row, sprintf("%02d", $factura[4]))
->setCellValue('G'.$row, sprintf("%020d", $factura[5]))
->setCellValue('H'.$row, $factura[6])
->setCellValue('I'.$row, format_val($factura[7]))
->setCellValue('J'.$row, format_val($factura[8]))
->setCellValue('K'.$row, format_val($factura[9]))
->setCellValue('L'.$row, format_val($factura[10]))
->setCellValue('M'.$row, format_val($factura[11]))
->setCellValue('N'.$row, format_val($factura[12]))
->setCellValue('O'.$row, format_val($factura[13]))
->setCellValue('P'.$row, format_val($factura[14]))
->setCellValue('Q'.$row, $factura[15])
->setCellValue('R'.$row, $factura[16])
->setCellValue('S'.$row, $factura[17])
->setCellValue('T'.$row, $factura[18])
->setCellValue('U'.$row, format_val($factura[19]))
->setCellValue('V'.$row, $fecha_venc)
->setCellValue('W'.$row, format_val($factura[21]))
->setCellValue('X'.$row, format_val($factura[22])."%")
->setCellValue('Y'.$row, format_val($factura[23]));
}
function genera_reg_cbte($factura)
{
$linea="";
$dia=substr($factura[0], 6, 2);
$mes=substr($factura[0], 4, 2);
$anio=substr($factura[0], 0, 4);
$linea.=sprintf("%s%s%s", $anio, $mes, $dia);
$linea.=sprintf("%03d", $factura[1]);
$linea.=sprintf("%05d", $factura[2]);
$linea.=sprintf("%020d", $factura[3]);
$linea.=sprintf("%020d", $factura[3]);
$linea.=sprintf("%02d", $factura[4]);
$linea.=sprintf("%020d", $factura[5]);
$linea.=sprintf("%-30s", $factura[6]);
$val=round(doubleval($factura[7]*100), 0);
$linea.=sprintf("%015d", $val);
$val=round(doubleval($factura[8]*100), 0);
$linea.=sprintf("%015d", $val);
$val=round(doubleval($factura[9]*100), 0);
$linea.=sprintf("%015d", $val);
$val=round(doubleval($factura[10]*100), 0);
$linea.=sprintf("%015d", $val);
$val=round(doubleval($factura[11]*100), 0);
$linea.=sprintf("%015d", $val);
$val=round(doubleval($factura[12]*100), 0);
$linea.=sprintf("%015d", $val);
$val=round(doubleval($factura[13]*100), 0);
$linea.=sprintf("%015d", $val);
$val=round(doubleval($factura[14]*100), 0);
$linea.=sprintf("%015d", $val);
$linea.=sprintf("%s", $factura[15]);
$val=round(doubleval($factura[16]*1000000), 0);
$linea.=sprintf("%010d", $val);
$linea.=sprintf("%1s", $factura[17]);
$linea.=sprintf("%1s", $factura[18]);
$val=round(doubleval($factura[19]*100), 0);
$linea.=sprintf("%015d", $val);
$dia=substr($factura[20], 6, 2);
$mes=substr($factura[20], 4, 2);
$anio=substr($factura[20], 0, 4);
$linea.=sprintf("%s%s%s", $anio, $mes, $dia);
$linea.= sprintf("\r");
return $linea;
}
function genera_reg_alic($factura) {
$linea="";
$linea.=sprintf("%03d", $factura[1]);
$linea.=sprintf("%05d", $factura[2]);
$linea.=sprintf("%020d", $factura[3]);
$val=round(doubleval($factura[21]*100), 0);
$linea.=sprintf("%015d", $val);
if($factura[22] == '21'){
$linea.=sprintf("%04d", '0005');
}
if($factura[22] == '27'){
$linea.=sprintf("%04d", '0006');
}
if($factura[22] == '0'){
$linea.=sprintf("%04d", '0003');
}
if($factura[22] == '5'){
$linea.=sprintf("%04d", '0008');
}
if($factura[22] == '2.5'){
$linea.=sprintf("%04d", '0009');
}
if($factura[22] == '10.5'){
$linea.=sprintf("%04d", '0004');
}
if($factura[22] == 'Exento'){
$linea.=sprintf("%04d", '0002');
}
if($factura[22] == 'No Gravado'){
$linea.=sprintf("%04d", '0001');
}
$val=round(doubleval($factura[23]*100), 0);
$linea.=sprintf("%015d", $val);
$linea.= sprintf("\r");
return $linea;
}
function format_val($val)
{
$d=doublecho $val;
return number_format($d, 2, ",", );
}
© 2023 Quttera Ltd. All rights reserved.