<?php
//elimina los mensajes notice, warning desde el cliente, necesario para php7
error_reporting(0);

//datos de Mi empresa
$resultempresa = mysqli_query($link, "select a.pkyCompany as codigo, a.fldName as mi_empresa,
a.fldNIT as mi_nit, a.txtDescription as nombre_empresa, a.fldWebSite as sitio_web, 
b.fldAddress as direccion, c.fldPhone as telefono, d.fldName as ciudad, e.fldName as pais, f.txtDescription as actividad_economica, e.pkyCountry as cod_pais
from
agnCompany a, agnCompanyAddress b, agnCompanyPhone c, regCity d, regCountry e, agnCompanyHeading f, regRegionConfig g
where
a.pkyCompany = 2 and 
a.pkyCompany = b.codCompany and 
a.pkyCompany = c.codCompany and 
b.fldDefault = 1 and 
c.fldDefault = 1 and 
a.codCityLocation = d.pkyCity and 
g.codCountry = e.pkyCountry and 
a.codHeading = f.pkyCompanyHeading and 
a.sysEnabled = 1 AND a.sysAuthorized = 1;");
while ($row = mysqli_fetch_array($resultempresa)) {
	$mi_cod = $row['codigo'];
	$mi_empresa = $row['mi_empresa'];
	$mi_nit = $row['mi_nit'];
	$nombre_empresa = $row['nombre_empresa'];
	$nombre_empresa = nl2br($nombre_empresa);//quita salto de linea 
	$nombre_empresa = str_replace('\n','<br />',$nombre_empresa);//reemplaza para salto de linea
	$mi_direccion = $row['direccion'];
	$mi_telefono = $row['telefono'];
	$mi_ciudad = $row['ciudad'];
	$mi_pais = $row['pais'];
	$mi_web = $row['sitio_web'];
	//$actividad_economica = $row['actividad_economica'];
	$mi_cod_pais = $row['cod_pais'];
}
mysqli_free_result($resultempresa);

if($mi_cod_pais == 1) { date_default_timezone_set("America/La_Paz"); }
if($mi_cod_pais == 176) { date_default_timezone_set("America/Asuncion"); }

$fecha_hoy=date("Y-m-d");
$ano=date("Y");
$mes=date("m");

if($mi_nit == 314004023) { //if pie firma 314004023
$num_min_trabajo='0063075';
$num_caja_salud='00352';
$firma_contabilidad = 'Revisado por:'; //Revisado por: //Contabilidad
$firma_gerencia = 'Aprobado por:'; //Aprobado por: //Gerencia
$firma_interesado = 'Interesado'; //Interesado
$firma_ci = ''; //ci
$mostrar_logo_reportes = '<img src="../../Images/logo.jpg" alt="Logo" />'; //1 muestra logo, 0 solo texto
$mostrar_logo_reportes_formato = 1;
$muestra_cc = 1; //1 muestra cc en asientos de comprobantes, 0 no muestra
$pie_planilla = 1; //1 muestra pie Elaborado por, Revisado por, Aprobado por, 0 muestra rep legal, ci, firma, fecha
$boleta_mostrar_todo = 1; //1 muestra todos los conceptos de bonos y descuentos aunque esten con 0, 0 no muestra bonos y descuentos con 0
$boleta_afp_desglosado = 1; //1 muestra porcentajes desglosados de afp, 0 muestra junto (12.71%)
$boleta_nit = 1; // 1 no muestra nit en cabecera, 0 si muestra
$editar_factura_venta = 0; // 0 no permite editar, 1 permite editar (libro de ventas -> factura con detalle)
$titulo_nota_venta_sin_cabecera = 0; //0 no muestra titulo en nota de venta sin cabecera, 1 muestra titulo	
$datos_nota_entrega = 0; //0 no muestra datos de cliente, vendedor, codigo e item, 1 si muestra
$nota_de_pedido_es_cotizacion = 0; //1 cuando en cotizaciones y notas de pedido la nota de pedido actúa como cotización, 0 cuando no
} else {
//generico para todos
$firma_contabilidad = 'Contabilidad'; //Revisado por: //Contabilidad
$firma_gerencia = 'Gerencia'; //Aprobado por: //Gerencia
$firma_interesado = 'Interesado'; //Interesado	
$firma_ci = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C.I.:__________________________'; //ci
$mostrar_logo_reportes = '<b>'.$nombre_empresa.'<br/>NIT: '.$mi_nit.'</b>'; /*<b><?php echo $nombre_empresa; ?><br/>NIT: <?php echo $mi_nit; ?></b>*/
$mostrar_logo_reportes_formato = 0;
$muestra_cc = 0; //1 muestra cc en asientos de comprobantes, 0 no muestra
$pie_planilla = 0; //1 muestra pie Elaborado por, Revisado por, Aprobado por, 0 muestra rep legal, ci, firma, fecha
$boleta_mostrar_todo = 0; //1 muestra todos los conceptos de bonos y descuentos aunque esten con 0, 0 no muestra bonos y descuentos con 0
$boleta_afp_desglosado = 0; //1 muestra porcentajes desglosados de afp, 0 muestra junto (12.71%)
$boleta_nit = 0; // 1 no muestra nit en cabecera, 0 si muestra
$editar_factura_venta = 0; // 0 no permite editar, 1 permite editar (libro de ventas -> factura con detalle)
$titulo_nota_venta_sin_cabecera = 0; //0 no muestra titulo en nota de venta sin cabecera, 1 muestra titulo
$datos_nota_entrega = 0; //0 no muestra datos de cliente, vendedor, codigo e item, 1 si muestra
$nota_de_pedido_es_cotizacion = 0; //1 cuando en cotizaciones y notas de pedido la nota de pedido actúa como cotización, 0 cuando no
	if($mi_nit == 1005421029) { //if Imbex 1005421029
		$editar_factura_venta = 1; // 0 no permite editar, 1 permite editar (libro de ventas -> factura con detalle)
	} //fin if Imbex
	if($mi_nit == 125333021 || $mi_nit == 346544025) { //if Motavar 125333021 o 346544025 antiguo y nuevo
		$titulo_nota_venta_sin_cabecera = 1; //0 no muestra titulo en nota de venta sin cabecera, 1 muestra titulo
		$datos_nota_entrega = 1; //0 no muestra datos de cliente, vendedor, codigo e item, 1 si muestra
	} //fin if Motavar
	if($mi_nit == 212430029 || $mi_nit == 313052020 || $mi_nit == 12345678) { //if Autored 212430029 y Bomesco 313052020
		$nota_de_pedido_es_cotizacion = 1; //1 cuando en cotizaciones y notas de pedido la nota de pedido actúa como cotización, 0 cuando no
	} //fin if Imbex
}// fin if pie firma

//funcion para verificar si un año es biciesto, devuelve 1 si es biciesto y 0 si no lo es
function esBisiesto($year){
   return date('L',mktime(1,1,1,1,1,$year));
}

//funcion para sumar un dia
function sumaDia($ffecha,$fdia)
	{	list($year,$mon,$day) = explode('-',$ffecha);
		return date('Y-m-d',mktime(0,0,0,$mon,$day+$fdia,$year));		
	};

//funcion años entre dos fechas
function calcularEdad($fecha_i,$fecha_f){
    $fecha = strtotime($fecha_f) - strtotime($fecha_i);
	$edad = floor($fecha / 31556926);
    return $edad;
}

//funcion numero de dias entre dos fechas
function diasTranscurridos($fecha_i,$fecha_f)
{
	$dias	= (strtotime($fecha_i)-strtotime($fecha_f))/86400;
	$dias 	= abs($dias); $dias = floor($dias);		
	return $dias;
}
	
//funcion para cambiar el formato de fecha de 2015-04-14 a 14-04-2015
function cambiarFormatoFecha($fecha5){
    list($anio,$mes,$dia)=explode("-",$fecha5);
    return $dia."-".$mes."-".$anio;
	};  

function cambiarFormatoFechaBarra($fecha5){
    list($anio,$mes,$dia)=explode("-",$fecha5);
    return $dia."/".$mes."/".$anio;
	};  

//funcion para sacar el numero de dias en un mes (funciona si es bisiesto)
function diasMes($fechad){
$nro_mesd = date("m",strtotime($fechad)); 
$anod = date("Y",strtotime($fechad));
$mesd = mktime(0, 0, 0, $nro_mesd, 1, $anod); 
return date('t',$mesd);
};

//funcion para obtener el nombre de los meses a partir del numero de mes
function nombreMes($mesn){
		switch($mesn) {
			case 1 : return 'Enero'; break;
			case 2 : return 'Febrero'; break;
			case 3 : return 'Marzo'; break;
			case 4 : return 'Abril'; break;
			case 5 : return 'Mayo'; break;
			case 6 : return 'Junio'; break;
			case 7 : return 'Julio'; break;
			case 8 : return 'Agosto'; break;
			case 9 : return 'Septiembre'; break;
			case 10 : return 'Octubre'; break;
			case 11 : return 'Noviembre'; break;
			case 12 : return 'Diciembre'; break;

			default : return $mesn;
		}
};

//funcion para dividir en dos lineas o variables un texto
function dividePalabra($cadenad, $tamanod, $sinod, $caracterd){
//divido la cadena en un arreglo, separa cada palabra por espacio, una posicion por palabra
$array_palabrasd = explode(" ",$cadenad); 
//cuento las palabras 
$palabras_cadenad = count($array_palabrasd); 
$letrasd = 0;
$cuental = 0;
//cuento las letras en cada palabra + 1 espacio
for($gg=0; $gg<=$palabras_cadenad-1; $gg++) { 
	$ll = strlen($array_palabrasd[$gg]);
	$letrasd = $letrasd + $ll + 1;
	//cuento las palabras que entran en una variable
	if($letrasd <= $tamanod) { $cuental++; }
}
//comparo para ver si las palabras entran en una sola variable
if($palabras_cadenad == $cuental && $sinod == 1) { 
	//repito caracteres hasta completar
	for($cc=$letrasd; $cc<=$tamanod; $cc++) { 
		$array_palabrasd[$palabras_cadenad] = $array_palabrasd[$palabras_cadenad].$caracterd;
	}
	$palabras_cadenad++;
	$cuental++;
}
//armo la primera palabra
for($gg=0; $gg<=$cuental-1; $gg++) { 
	$palabrad1 = $palabrad1.$array_palabrasd[$gg].' ';
}
//si la primera palabra entro en una variable armo la segunda 
if($cuental == $palabras_cadenad && $sinod == 1) {
	for($cc=0; $cc<=$tamanod; $cc++) { //armo la segunda palabra
		$palabrad2 = $palabrad2.$caracterd;
	}	
}
//si la primera palabra no entro en una sola variable armo la segunda
if($cuental < $palabras_cadenad) {
	//armo la segunda palabra
	for($gg=$cuental; $gg<=$palabras_cadenad; $gg++) { 
		$palabrad2 = $palabrad2.$array_palabrasd[$gg].' ';
	}	
	//cuento las letras de la segunda palabra
	$letrasd2 = strlen($palabrad2);
	//comparo si las letras de la segunda palabra entran en la segunda variable
	if($letrasd2 <= $tamanod && $sinod == 1) {
		//repito caracteres hasta completar
		for($cc=$letrasd2; $cc<=$tamanod; $cc++) { 
		$array_palabrasd[$palabras_cadenad] = $array_palabrasd[$palabras_cadenad].$caracterd;
		}	
		$palabrad2 = $palabrad2.$array_palabrasd[$palabras_cadenad];
	}
}
return array($palabrad1, $palabrad2);
	
};
	
//funcion para sacar los meses entre dos fechas

function difMes($fechaInicial,$fechaFinal) {
	$fechainicial = new DateTime($fechaInicial);
	$fechafinal = new DateTime($fechaFinal);
	
	$diferencia = $fechainicial->diff($fechafinal);
	
	$meses = ( $diferencia->y * 12 ) + $diferencia->m;
	return abs($meses);
}


/*
//Configuracion de la factura
$resultfactura = mysqli_query($link, "select fldShowHeader as muestra_cabecera, codInvoiceSheetType as formato_factura, fldTransactionTaxPercent as monto_it, fldVATPercent as monto_iva 
from txsTaxesConfig
where
sysEnabled = 1 and sysAuthorized = 1;");
while ($row = mysqli_fetch_array($resultfactura)) {
	$muestra_cabecera = $row['muestra_cabecera'];
	$muestra_glosa = 1;//1=muestra, 0=oculta
	//$formato_factura = $row['formato_factura'];
	$monto_it = $row['monto_it'];
	$monto_iva = $row['monto_iva'];
}
mysqli_free_result($resultfactura);
*/
//Configuracion de la factura
$resultfactura = mysqli_query($link, "select fldShowHeader as muestra_cabecera, codInvoiceSheetType as formato_factura, fldTransactionTaxPercent as monto_it, fldVATPercent as monto_iva, fldShowDescription as muestra_glosa  
from txsTaxesConfig
where
sysEnabled = 1 and sysAuthorized = 1;");
while ($row = mysqli_fetch_array($resultfactura)) {
	$muestra_cabecera = $row['muestra_cabecera'];
	$muestra_glosa = $row['muestra_glosa'];//1=muestra, 0=oculta
	//$formato_factura = $row['formato_factura'];
	$monto_it = $row['monto_it'];
	$monto_iva = $row['monto_iva'];
}
mysqli_free_result($resultfactura);


//Estructura de las cuentas y niveles
$resultestructura = mysqli_query($link, "select fldFormat as estructura_cta, sysEditable as editable
from
actAccountStructure 
where
sysEnabled = 1 and sysAuthorized = 1;");
while ($row = mysqli_fetch_array($resultestructura)) {
	$estructura_cuenta = $row['estructura_cta'];
	$editable_estructura = $row['editable'];
}
mysqli_free_result($resultestructura);
$digitos_cuenta = array();
$digitos_cuenta = explode(".", $estructura_cuenta); //el arreglo empieza de 0
$numero_niveles = count($digitos_cuenta);


//Numero de decimales
$resultdecimales = mysqli_query($link, "select a.fldReportDigits as n_decimales, 
a.fldReportDigits as n_tc, a.codBaseCurrency as cod_moneda_principal, 
b.fldName as moneda_principal, b.txtDescription as nom_moneda_letras, a.codResultsAccount as cuentaresult 
from 
actAccountingConfig a, actCurrency b
where
a.codBaseCurrency = b.pkyCurrency and 
a.sysEnabled = 1 and a.sysAuthorized = 1;");
while ($row = mysqli_fetch_array($resultdecimales)) {
	$n_decimales = $row['n_decimales'];
	$n_tipocambio = $row['n_tc'];
	$cod_moneda_principal = $row['cod_moneda_principal'];
	$nom_moneda_principal = $row['moneda_principal'];
	$nom_moneda_letras = $row['nom_moneda_letras'];
	$cuenta_res_acum = $row['cuentaresult'];
}
mysqli_free_result($resultdecimales);
$n_decimales176 = 0; //paraguay
if($n_decimales == NULL) { $n_decimales = 0; }
if($n_decimales >= 6) { $n_decimales = 6; }
if($n_tipocambio == NULL) { $n_tipocambio = 0; }
$n_cantidad = 2;
$n_descuento = 2;
$n_pesovol = 2;
$n_receta = 10;


//calculo de inicio de gestion
$ano_det = substr($fecha_hoy,0,4);
$mes_det = substr($fecha_hoy,5,2);
$resultano = mysqli_query($link, "select a.pkyFiscalYear as ano_ini, a.codStartMonth as mes_ini, a.codEndMonth as mes_fin
from (
select max(pkyFiscalYear) as ultimo 
from actFiscalYear) t, actFiscalYear a
where
a.pkyFiscalYear = t.ultimo;");
while ($row = mysqli_fetch_array($resultano)) {
	$ano_ini = $row['ano_ini'];
	$mes_ini = $row['mes_ini'];
	$mes_fin = $row['mes_fin'];
}
mysqli_free_result($resultano);

if($mes_ini < 10) { $mes_ini = '0'.$mes_ini; }

if($ano_ini == $ano_det && $mes_ini >= $mes_det) { $ano_det--; }
if($ano_ini < $ano_det && $mes_ini >= $mes_det) { $ano_det--; }

$fechaini_gest = $ano_det.'-'.$mes_ini.'-01';


//Codigo tipo de cambio hoy
$resulttipocambiohoy = mysqli_query($link, "SELECT T2.pkyExchangeRate as tc FROM 
(SELECT fldDate, MAX(fldTime) AS fldTime FROM actExchangeRate WHERE fldExclusive = '0' GROUP BY fldDate) as T1,
actExchangeRate T2 
WHERE 
T1.fldDate = (SELECT MAX(fldDate) FROM actExchangeRate WHERE fldDate <= '$fecha_hoy' AND fldExclusive = '0') AND 
T2.fldDate = T1.fldDate AND 
T2.fldTime = T1.fldTime AND 
sysEnabled = 1 AND sysAuthorized = 1;");
while ($row = mysqli_fetch_array($resulttipocambiohoy)) {
	$tc_hoy = $row['tc'];
	}
	mysqli_free_result($resulttipocambiohoy);

//Configuracion de inventario
$resultinventario = mysqli_query($link, "select fldUseBatches as controla_lotes, fldPrintCost as imprime_costo
from
invInventoryConfig 
where
sysEnabled = 1 and sysAuthorized = 1;");
while ($row = mysqli_fetch_array($resultinventario)) {
	$controla_lotes = $row['controla_lotes'];
	$imprime_costo = $row['imprime_costo'];
}
mysqli_free_result($resultinventario);

//Configuracion de caja
$resultcaja = mysqli_query($link, "select fldReportRestriction as ver_caja
from
ptcPettyCashConfig 
where
sysEnabled = 1 and sysAuthorized = 1;");
while ($row = mysqli_fetch_array($resultcaja)) {
	$ver_caja = $row['ver_caja']; //si es 0 quiere decir que usuarios normales pueden ver todas las cajas, si es 1 usuarios normales solo pueden ver su caja
}
mysqli_free_result($resultcaja);
/*
//configuracion activo fijo
$resultaf = mysqli_query($link, "select codExpensesConcept as concepto_gasto 
from
fasFixedAssetsConfig 
where
sysEnabled = 1 and sysAuthorized = 1;");
while ($row = mysqli_fetch_array($resultaf)) {
	$cod_gasto_af = $row['concepto_gasto']; 
}
mysqli_free_result($resultaf);
*/
//configuracion ventas 
$resultventa = mysqli_query($link, "select fldPrintInvoice as imprime, fldShowBarcode as cod_barras_principal, fldShowUnit as muestra_uni_men, fldBatchID as muestra_id_lote, fldHidePrice as oculta_col_precio 
from
slsSalesConfig 
where
sysEnabled = 1 and sysAuthorized = 1;");
while ($row = mysqli_fetch_array($resultventa)) {
	$imprimir_directo = $row['imprime']; //0 no imprime directo, 1 imprime directo (factura)
	$cod_barras_principal = $row['cod_barras_principal']; //0 muestra codigo item, 1 muestra codigo barras (factura)
	$muestra_uni_men = $row['muestra_uni_men']; //0 no muestra u menor, 1 si muestra en la fila de cada item (factura)
	$muestra_id_lote = $row['muestra_id_lote']; //0 no muestra id lote, 1 si muestra en la fila de cada item (factura)
	$oculta_col_precio = $row['oculta_col_precio']; //0 muestra columna precio, 1 no muestra (nota de venta)
	
}
mysqli_free_result($resultventa);
/*
//Configuracion de RRHH
$resultrrhh = mysqli_query($link, "select fldMinimumWage as sal_min_nal, fldTaxableWage as min_no_imponible, fldManWorkingHours as horas_periodo_trabajo_hombre, fldWomanWorkingHours as horas_periodo_trabajo_mujer, fldManWorkingDays as dias_periodo_trabajo_hombre, fldWomanWorkingDays as dias_periodo_trabajo_mujer
from hrsHumanResourcesConfig
where 
sysEnabled = 1 and sysAuthorized = 1;");
while ($row = mysqli_fetch_array($resultrrhh)) {
	$salario_min_nal = $row['sal_min_nal']; 
	$min_no_imponible = $row['min_no_imponible']; 
	$horas_periodo_trabajo_hombre = $row['horas_periodo_trabajo_hombre']; 
	$horas_periodo_trabajo_mujer = $row['horas_periodo_trabajo_mujer']; 
	$dias_periodo_trabajo_hombre = $row['dias_periodo_trabajo_hombre']; 
	$dias_periodo_trabajo_mujer = $row['dias_periodo_trabajo_mujer']; 
}
mysqli_free_result($resultrrhh);
*/
//Configuracion de RRHH
$resultrrhh = mysqli_query($link, "select a.fldAccumulatedVAT as acumula_2_smn_iva, a.fldExtraHoursMultiplier as multiplicador_horas_extras, a.codCurrency as cod_moneda_actualizacion_iva, b.fldName as nom_moneda_actualizacion_iva
from hrsHumanResourcesConfig a, actCurrency b
where 
a.codCurrency = b.pkyCurrency and 
a.sysEnabled = 1 and a.sysAuthorized = 1;");
while ($row = mysqli_fetch_array($resultrrhh)) {
	$acumula_2_smn_iva = $row['acumula_2_smn_iva']; //0=como micesa,1=como autored
	$multiplicador_horas_extras = $row['multiplicador_horas_extras'];
	$cod_moneda_actualizacion_iva = $row['cod_moneda_actualizacion_iva'];
	$nom_moneda_actualizacion_iva = $row['nom_moneda_actualizacion_iva'];
	}
mysqli_free_result($resultrrhh);

//configuracion produccion
$resultprod = mysqli_query($link, "select fldProjectionMode as tipo_produccion
from
prdProductionConfig
where
sysEnabled = 1 and sysAuthorized = 1;");
while ($row = mysqli_fetch_array($resultprod)) {
	$tipo_produccion = $row['tipo_produccion']; //0 factores, 1 proyeccion
}
mysqli_free_result($resultprod);

?>