<?php session_start();

if (isset($_SESSION['tipousuario']))
{if ($_SESSION['tipousuario']=='1')
	header ('location:menu_personal.php');
}

if  (trim($_SESSION['nombre_validar'])=='') header ('location:index.php');
include ("fphp.php");
$enlace=cargar_conexion();
$consulta=mysqli_query($enlace,"select * from periodo where id='".$_SESSION['id_validar']."' order by nomina,periodo desc limit 1");
if (mysqli_num_rows($consulta)!=0){
	$row=mysqli_fetch_array($consulta);
	$per=mostrar_fecha($row['desde']).' al '.mostrar_fecha($row['hasta'])." (Nom:".$row['nomina'].")";
} else $per='';

require_once 'PHPExcel/PHPExcel.php';

?>
<html>
<head>
</head>
<style>
.dropdown-menu>.active>a, .dropdown-menu>.active>a:focus, .dropdown-menu>.active>a:hover {
	color: #fff;
	text-decoration: none;
	background-color: #337ab7;
	outline: 0;
}
#tabla_novedades .horas_extras, .ausencia_medica, .validado_por_sso, .justificacion_ausencia, .remunerado_ausencia, .tiempo_viaje_ausencia, .ausencia, .ausencia_programada, .tipo_permiso_ausencia, .retardo, .salida_anticipada, .horassalida_anticipada, .datos_trabajador, .hora_salida_ausencia, .hora_llegada_ausencia  {
	display: none;
}
#ocultar {
	display: none;
}

.form-control-time {
	width: 80px;
	height: 34px;
	padding: 6px 12px;
	font-size: 12px;
	line-height: 1.42857143;
	color: #555;
	background-color: #fff;
	background-image: none;
	border: 1px solid #ccc;
	border-radius: 4px;
	-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
	box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
	-webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
	transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.boton{
	/* width: 100%; */
	color: #FFFFFF;
	/* font-size: 0.8725em; */
	padding: 7px;
	margin-bottom: 5px;
	margin-top: 10px;
	outline: none;
	/* margin: 5px 0; */
	font-family: 'Open Sans', sans-serif;
	font-size: 16px;
	font-weight: bold;
	text-transform: uppercase;
	background: #36C1E2;
	border: 0px solid #DFDFDF;
}

.glyphicon-modal-window:before{content:"\e237"}
.modal-open{overflow:hidden}
.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}
.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out}
.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}
.modal-open .modal{overflow-x:hidden;overflow-y:auto}
.modal-dialog{position:relative;width:auto;margin:10px}
.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}
.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}
.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}
.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}
.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}
.modal-header .close{margin-top:-2px}
.modal-title{margin:0;line-height:1.42857143}
.modal-body{position:relative;padding:15px}
.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}
.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}
.modal-footer .btn-group .btn+.btn{margin-left:-1px}
.modal-footer .btn-block+.btn-block{margin-left:0}
.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}
.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}
.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}
.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;filter:alpha(opacity=0);opacity:0}
.tooltip.in{filter:alpha(opacity=90);opacity:.9}
</style>

<style>

/*the container must be positioned relative:*/
.autocomplete {
	position: relative;
	display: inline-block;
	text-transform: capitalize;
}
.autocompletar{
	text-transform: capitalize;
}
.regristrado{
	color: green;
	margin-left: 7%;
	font-weight: bold;
}

.noregristrado{
	color: red;
	margin-left: 7%;
	font-weight: bold;
}

.autocomplete-items {
	position: absolute;
	border: 1px solid #d4d4d4;
	border-bottom: none;
	border-top: none;
	z-index: 99;
	/*position the autocomplete items to be the same width as the container:*/
	top: 100%;
	left: 0;
	right: 0;
}

.autocomplete-items div {
	padding: 5px;
	cursor: pointer;
	background-color: #fff;
	border-bottom: 1px solid #d4d4d4;
}

/*when hovering an item:*/
.autocomplete-items div:hover {
	background-color: #e9e9e9;
}

/*when navigating through the items using the arrow keys:*/
.autocomplete-active {
	background-color: DodgerBlue !important;
	color: #ffffff;
}

</style>
<body>
	<?php
	menu();
	?>
	<?php
	if (isset($_GET['cont'])) {
		$periodo = $_GET['cont'];
		$asiento = $_GET['asiento'];

		//Valido si existen registros en la instancia de Dynamics
		$registros_en_dynamics=0;
		$result_get_api = api_obtener_datos('registros_instancia_nomina');
		$cant_get_api=count($result_get_api['datos-api']['value']);
		if($cant_get_api>0){
			$array_errores = 1;
			$registros_en_dynamics=1;
			$resultado_sincronizacion= "Existen registros en Microsoft Dynamics, deben ser borrados para poder iniciar la sincronización";
			goto termina_algoritmo;
		}

		//Inicializamos variables
		$total_registros_enviados =0;
		$total_registros_enviados_buenos =0;
		$total_registros_enviados_malos =0;
		$neto_pagar=0;
		$array_errores = array();
		$data_api = [];
		$result = null;
		$array_enviar = array();
		$array_localidades_dynamics = array();
		$array_departamentos_dynamics = array();

		//Construyo array de localidades existentes en Dynamics
		$result_get_api = api_obtener_datos('registros_localidades');
		foreach($result_get_api['datos-api']['value'] as $log) {
			$array_localidades_dynamics[] = $log['Code'];
		}

		$result_get_api = null;

		//Construyo array de departamentos existentes en Dynamics
		$result_get_api = api_obtener_datos('registros_departamentos');
		foreach($result_get_api['datos-api']['value'] as $log) {
			$array_departamentos_dynamics[] = $log['Code'];
		}

		$result_get_api = null;

		//Construyo array de departamentos existentes en Dynamics
		$result_get_api = api_obtener_datos('registros_plan_de_cuentas');
		foreach($result_get_api['datos-api']['value'] as $log) {
			$array_plan_de_cuentas_dynamics[] = $log['No'];
		}

		//##############  INICIO: ASIENTOS DE NOMINA #################
		if ($asiento=='nomina'){
			//--------CONSULTO LA CANTIDAD DE EMPLEADOS QUE SE VAN A ENVIAR
			$query1 = "SELECT cedula,nomina FROM historico WHERE desperiodo = '".$periodo."' AND `id` = '".$_SESSION['id_validar']."' GROUP BY cedula";
			$resultado1 = mysqli_query($enlace,$query1);
			$numero_empleados = mysqli_num_rows($resultado1);
			//echo "consulta 1 - cantidad empleados:".$query1;
			$row1=mysqli_fetch_array($resultado1);
			$nomina = $row1['nomina'];

			//Consulto el úlitmo consecutivo usado (Document NO.) de nomina
			//$query_consec = "SELECT MAX(consecutivo) AS consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."'";
			$query_consec =  "SELECT consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."' ORDER BY id_sincronizacion_dynamics_consecutivos DESC LIMIT 1 ";
			$resul_consec = mysqli_query($enlace,$query_consec);
			$row_consec = mysqli_fetch_assoc($resul_consec);
			$consecutivo_numero = str_pad($row_consec['consecutivo']+1, 6, "0", STR_PAD_LEFT); //Consecutivo a usar para esta sincronización
			$consecutivo = "NOM-".$consecutivo_numero;

			//--------CONSULTAMOS LOS DATOS: DESPERIODO, CEDULA, DESCONCEPTO, TIPO, MONTO Y CUENTA. DE LAS TABLAS HISTORICO Y CONCEPTO
			
			if($nomina!='100'){
			///Para nomina mensual
			$query2 = "SELECT hs.desperiodo, hs.desconcepto, hs.tipo, SUM(hs.monto) AS monto, hs.concepto, cp.cuenta, hs.unidad AS localidad, hs.departamento FROM historico AS hs INNER JOIN concepto AS cp ON cp.codigo = hs.concepto WHERE hs.desperiodo = '".$periodo."' AND `hs`.`id` = '".$_SESSION['id_validar']."' AND cp.id = '".$_SESSION['id_validar']."' AND hs.concepto NOT LIKE '6%' AND hs.concepto NOT LIKE '5%' AND hs.concepto NOT LIKE '4%' AND concepto NOT IN(2000,2001,2002,2003,2004,2005,2006,2007,2010,2012) group by hs.concepto,hs.unidad order by hs.concepto DESC";
			}else{
			$query2 = "SELECT hs.desperiodo, hs.desconcepto, hs.tipo, SUM(hs.monto) AS monto, hs.concepto, cp.cuenta, hs.unidad AS localidad, hs.departamento FROM historico AS hs INNER JOIN concepto AS cp ON cp.codigo = hs.concepto WHERE hs.desperiodo = '".$periodo."' AND `hs`.`id` = '".$_SESSION['id_validar']."' AND cp.id = '".$_SESSION['id_validar']."' AND hs.concepto NOT LIKE '6%' AND hs.concepto NOT LIKE '5%' group by hs.concepto,hs.unidad order by hs.concepto DESC";
			}
			$resultado2 = mysqli_query($enlace,$query2);
			$numero_registros = mysqli_num_rows($resultado2);

			$ultimo_periodo_array = explode(' al ',$periodo);
			$ultimo_periodo = date("Y-m-d", strtotime($ultimo_periodo_array[1]));

			//Crea array para recorrer los conceptos que se enviaran a la API
			$array_registros = array();
			while( $row = mysqli_fetch_assoc( $resultado2)){
				$array_registros[] = $row; // Inside while loop
			}

			//Recorre cada concepto de cada empleado
			for ($row = 0; $row < count($array_registros); $row++) {
				//Recoge registros
				$desperiodo= $array_registros[$row]['desperiodo'];
				$concepto= $array_registros[$row]['concepto'];
				$desconcepto= $array_registros[$row]['desconcepto'];
				$tipo= $array_registros[$row]['tipo'];
				$cuenta = $array_registros[$row]['cuenta'];
				$localidad = $array_registros[$row]['localidad'];
				$departamento = $array_registros[$row]['departamento'];

				//Define si el monto es negativo o positivo en fucniona del tipo de concepto
				if ($tipo == "A"){
					$monto= floatval($array_registros[$row]['monto']);
				}elseif ($tipo == "D") {
					$monto= floatval(-$array_registros[$row]['monto']);
				}
				//Calcula neto a pagar
				$neto_pagar += $monto;

				//Construyo array por cada concepto de cada empleado
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $desconcepto,
					"Posting_Date"=> $ultimo_periodo,
					"Document_Date"=> $ultimo_periodo,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto
				);
			}

			//Envía último registro de nómina para cumplir con la contrapartida
			if (count($array_registros)>0){//Valida que existan registros en array
				$descripcion="OTROS BENEFICIOS LABORALES POR DISTRIBUIR";
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $ultimo_periodo,
					"Document_Date"=> $ultimo_periodo,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> "2160109901",
					"Currency_Code"=>  "VEB",
					"Amount"=> -$neto_pagar
				);
				$neto_pagar =0;
			}
		}
		//##############  FIN: ASIENTOS DE NOMINA #################
		
		//##############  INICIO: ASIENTOS DE PARAFISCALES #################
		if ($asiento=='aportes_parafiscales'){
			//--------CONSULTO LA CANTIDAD DE EMPLEADOS QUE SE VAN A ENVIAR
			$query1 = "SELECT cedula FROM historico WHERE desperiodo = '".$periodo."' AND `id` = '".$_SESSION['id_validar']."' GROUP BY cedula";
			$resultado1 = mysqli_query($enlace,$query1);
			$numero_empleados = mysqli_num_rows($resultado1);
			//echo "consulta 1 - cantidad empleados:".$query1;

			//Consulto el úlitmo consecutivo usado (Document NO.) de nomina
			//$query_consec = "SELECT MAX(consecutivo) AS consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."'";
			$query_consec =  "SELECT consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."' ORDER BY id_sincronizacion_dynamics_consecutivos DESC LIMIT 1 ";
			$resul_consec = mysqli_query($enlace,$query_consec);
			$row_consec = mysqli_fetch_assoc($resul_consec);
			$consecutivo_numero = str_pad($row_consec['consecutivo']+1, 6, "0", STR_PAD_LEFT); //Consecutivo a usar para esta sincronización
			$consecutivo = "NOM-".$consecutivo_numero;

			//--------CONSULTAMOS LOS DATOS: DESPERIODO, CEDULA, DESCONCEPTO, TIPO, MONTO Y CUENTA. DE LAS TABLAS HISTORICO Y CONCEPTO
			$query2 = "SELECT hs.desperiodo, hs.desconcepto, hs.tipo, SUM(hs.monto) AS monto, hs.concepto, cp.cuenta, hs.unidad AS localidad, hs.departamento FROM historico AS hs INNER JOIN concepto AS cp ON cp.codigo = hs.concepto WHERE hs.desperiodo = '".$periodo."' AND `hs`.`id` = '".$_SESSION['id_validar']."' AND cp.id = '".$_SESSION['id_validar']."' AND hs.concepto IN(2000,2001,2002,2003,2004,2005,2006,2007,2010,2012,4000,4001,4002,4003,4004,4005,4006,4007,4010,4012,4100,4101,4102,4103,4104,4105,4106,4107,4110,4112,4013,4014,4113,4114) AND hs.periodo>=506 group by hs.desconcepto,hs.unidad order by hs.concepto DESC";

			$resultado2 = mysqli_query($enlace,$query2);
			$numero_registros = mysqli_num_rows($resultado2);

			$ultimo_periodo_array = explode(' al ',$periodo);
			$ultimo_periodo = date("Y-m-d", strtotime($ultimo_periodo_array[1]));

			//Crea array para recorrer los conceptos que se enviaran a la API
			$array_registros = array();
			while( $row = mysqli_fetch_assoc( $resultado2)){
				$array_registros[] = $row; // Inside while loop
			}

			//Recorre cada concepto de cada empleado
			for ($row = 0; $row < count($array_registros); $row++) {
				//Recoge registros
				$desperiodo= $array_registros[$row]['desperiodo'];
				$concepto= $array_registros[$row]['concepto'];
				$desconcepto= $array_registros[$row]['desconcepto'];
				$tipo= $array_registros[$row]['tipo'];
				$cuenta = $array_registros[$row]['cuenta'];
				$localidad = $array_registros[$row]['localidad'];
				$departamento = $array_registros[$row]['departamento'];

				//Define si el monto es negativo o positivo en fucniona del tipo de concepto
				if ($tipo == "A"){
					$monto= floatval($array_registros[$row]['monto']);
				}elseif ($tipo == "D") {
					$monto= floatval(-$array_registros[$row]['monto']);
				}
				//Calcula neto a pagar
				$neto_pagar += $monto;

				//Construyo array por cada concepto de cada empleado
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $desconcepto,
					"Posting_Date"=> $ultimo_periodo,
					"Document_Date"=> $ultimo_periodo,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto
				);
			}


		}
		//##############  FIN: ASIENTOS DE PARAFISCALES #################
		

		
		/*
		//##############  INICIO: ASIENTOS DE INCES #################
		if ($asiento=='aportes_inces'){
			//--------CONSULTO LA CANTIDAD DE EMPLEADOS QUE SE VAN A ENVIAR
			$query1 = "SELECT cedula FROM historico WHERE desperiodo = '".$periodo."' AND `id` = '".$_SESSION['id_validar']."' GROUP BY cedula";
			$resultado1 = mysqli_query($enlace,$query1);
			$numero_empleados = mysqli_num_rows($resultado1);
			//echo "consulta 1 - cantidad empleados:".$query1;

			//Consulto el úlitmo consecutivo usado (Document NO.) de nomina
			//$query_consec = "SELECT MAX(consecutivo) AS consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."'";
			$query_consec =  "SELECT consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."' ORDER BY id_sincronizacion_dynamics_consecutivos DESC LIMIT 1 ";
			$resul_consec = mysqli_query($enlace,$query_consec);
			$row_consec = mysqli_fetch_assoc($resul_consec);
			$consecutivo_numero = str_pad($row_consec['consecutivo']+1, 6, "0", STR_PAD_LEFT); //Consecutivo a usar para esta sincronización
			$consecutivo = "NOM-".$consecutivo_numero;

			//--------CONSULTAMOS LOS DATOS: DESPERIODO, CEDULA, DESCONCEPTO, TIPO, MONTO Y CUENTA. DE LAS TABLAS HISTORICO Y CONCEPTO
			$query2 = "SELECT hs.desperiodo, hs.desconcepto, hs.tipo, SUM(hs.monto) AS monto, hs.concepto, cp.cuenta, hs.unidad AS localidad, hs.departamento FROM historico AS hs INNER JOIN concepto AS cp ON cp.codigo = hs.concepto WHERE hs.desperiodo = '".$periodo."' AND `hs`.`id` = '".$_SESSION['id_validar']."' AND cp.id = '".$_SESSION['id_validar']."' AND hs.concepto IN(4013,4014,4113,4114) AND hs.periodo>=506 group by hs.desconcepto,hs.unidad order by hs.concepto DESC";

			$resultado2 = mysqli_query($enlace,$query2);
			$numero_registros = mysqli_num_rows($resultado2);

			$ultimo_periodo_array = explode(' al ',$periodo);
			$ultimo_periodo = date("Y-m-d", strtotime($ultimo_periodo_array[1]));

			//Crea array para recorrer los conceptos que se enviaran a la API
			$array_registros = array();
			while( $row = mysqli_fetch_assoc( $resultado2)){
				$array_registros[] = $row; // Inside while loop
			}

			//Recorre cada concepto de cada empleado
			for ($row = 0; $row < count($array_registros); $row++) {
				//Recoge registros
				$desperiodo= $array_registros[$row]['desperiodo'];
				$concepto= $array_registros[$row]['concepto'];
				$desconcepto= $array_registros[$row]['desconcepto'];
				$tipo= $array_registros[$row]['tipo'];
				$cuenta = $array_registros[$row]['cuenta'];
				$localidad = $array_registros[$row]['localidad'];
				$departamento = $array_registros[$row]['departamento'];

				//Define si el monto es negativo o positivo en fucniona del tipo de concepto
				if ($tipo == "A"){
					$monto= floatval($array_registros[$row]['monto']);
				}elseif ($tipo == "D") {
					$monto= floatval(-$array_registros[$row]['monto']);
				}
				//Calcula neto a pagar
				$neto_pagar += $monto;

				//Construyo array por cada concepto de cada empleado
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $desconcepto,
					"Posting_Date"=> $ultimo_periodo,
					"Document_Date"=> $ultimo_periodo,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto
				);
			}


		}
		//##############  FIN: ASIENTOS DE INCES #################
		*/
		
		//##############  INICIO: ASIENTOS DE PAGOS ESPECIALES #################
		if ($asiento=='pagos_especiales'){
			//Define periodos
			$periodo_inicial = substr($periodo,0,10);
			$periodo_final = substr($periodo,14,10);

			//Consulto el úlitmo consecutivo usado (Document NO.) de pagos especiales
			//$query_consec = "SELECT MAX(consecutivo) AS consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."'";
			$query_consec =  "SELECT consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."' ORDER BY id_sincronizacion_dynamics_consecutivos DESC LIMIT 1 ";
			$resul_consec = mysqli_query($enlace,$query_consec);
			$row_consec = mysqli_fetch_assoc($resul_consec);
			$consecutivo_numero = str_pad($row_consec['consecutivo']+1, 6, "0", STR_PAD_LEFT); //Consecutivo a usar para esta sincronización
			$consecutivo = "NOM-".$consecutivo_numero;

			//-----CONSULTAMOS LOS DATOS: TABLAS PAGOS ESPECIALES Y CONCEPTO ESPECIALES
			$query2="SELECT ps.concepto, ps.unidad AS localidad, ps.departamento, SUM(ps.monto) AS monto, cp.cuenta, cp.detalle FROM historico_pagos_especiales AS ps INNER JOIN concepto_especiales AS cp ON cp.codigo = ps.concepto where ps.fecha_registro BETWEEN '$periodo_inicial' AND '$periodo_final' AND ps.id = '".$_SESSION['id_validar']."' AND cp.id = '".$_SESSION['id_validar']."' GROUP BY ps.concepto, ps.unidad, ps.departamento ORDER BY ps.concepto DESC";
			$resultado2 = mysqli_query($enlace,$query2);
			$numero_registros = mysqli_num_rows($resultado2);

			//Crea array para recorrer los conceptos que se enviaran a la API
			$array_registros = array();
			while( $row = mysqli_fetch_assoc( $resultado2)){
				$array_registros[] = $row; // Inside while loop
			}

			//Recorre cada concepto de cada empleado
			for ($row = 0; $row < count($array_registros); $row++) {
				//Recoge registros
				$concepto= $array_registros[$row]['concepto'];
				$desconcepto= $array_registros[$row]['detalle'];
				$cuenta = $array_registros[$row]['cuenta'];
				$localidad = $array_registros[$row]['localidad'];
				$departamento = $array_registros[$row]['departamento'];
				$monto = floatval($array_registros[$row]['monto']);

				//Calcula neto a pagar
				$neto_pagar += $monto;

				//Construyo array por cada concepto de cada empleado
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $desconcepto,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto
				);
			}

			//Envía último registro de pagos especiales para cumplir con la contrapartida
			if (count($array_registros)>0){//Valida que existan registros en array
				$descripcion="OTROS BENEFICIOS LABORALES POR DISTRIBUIR";
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> "2160109901",
					"Currency_Code"=>  "VEB",
					"Amount"=> -$neto_pagar
				);
				$neto_pagar =0;
			}
		}
		//##############  FIN: ASIENTOS DE PAGOS ESPECIALES #################


		//##############  INICIO: ASIENTOS DE BONOPOLLO #################
		if ($asiento=='bonopollo'){
			//Define periodos
			$periodo_inicial = substr($periodo,0,10);
			$periodo_final = substr($periodo,14,10);

			//Consulto el úlitmo consecutivo usado (Document NO.) de pagos especiales
			//$query_consec = "SELECT MAX(consecutivo) AS consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."'";
			$query_consec =  "SELECT consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."' ORDER BY id_sincronizacion_dynamics_consecutivos DESC LIMIT 1 ";
			$resul_consec = mysqli_query($enlace,$query_consec);
			$row_consec = mysqli_fetch_assoc($resul_consec);
			$consecutivo_numero = str_pad($row_consec['consecutivo']+1, 6, "0", STR_PAD_LEFT); //Consecutivo a usar para esta sincronización
			$consecutivo = "NOM-".$consecutivo_numero;

			//-----CONSULTAMOS LOS DATOS: TABLA BONOPOLLO
			$query2="SELECT per.unidad AS localidad, per.departamento, SUM(pbp.monto) AS monto FROM pagos_bonopollo AS pbp INNER JOIN personal AS per ON pbp.cedula = per.codigo WHERE pbp.fecha_registro BETWEEN '$periodo_inicial' AND '$periodo_final' AND pbp.id = '".$_SESSION['id_validar']."' AND per.id = '".$_SESSION['id_validar']."' GROUP BY per.unidad, per.departamento";
			$resultado2 = mysqli_query($enlace,$query2);
			$numero_registros = mysqli_num_rows($resultado2);

			//Crea array para recorrer los conceptos que se enviaran a la API
			$array_registros = array();
			while( $row = mysqli_fetch_assoc( $resultado2)){
				$array_registros[] = $row; // Inside while loop
			}

			//Recorre cada concepto de cada empleado
			for ($row = 0; $row < count($array_registros); $row++) {
				//Recoge registros
				$desconcepto= "BONOPOLLO";
				$localidad = $array_registros[$row]['localidad'];
				$departamento = $array_registros[$row]['departamento'];
				$monto = floatval($array_registros[$row]['monto']);

				//Calcula neto a pagar
				$neto_pagar += $monto;

				//Construyo array por cada concepto de cada empleado
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $desconcepto,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> "6110200200",
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto
				);
			}

			//Envía último registro de pagos especiales para cumplir con la contrapartida
			if (count($array_registros)>0){//Valida que existan registros en array
				$descripcion="OTROS BENEFICIOS LABORALES POR DISTRIBUIR";
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> "2160109901",
					"Currency_Code"=>  "VEB",
					"Amount"=> -$neto_pagar
				);
				$neto_pagar =0;
			}
		}
		//##############  FIN: ASIENTOS DE BONOPOLLO #################


		//##############  INICIO: ASIENTOS DE VACACIONES #################
		if ($asiento=='vacaciones'){
			//Define periodos
			$periodo_inicial = substr($periodo,0,10);
			$periodo_final = substr($periodo,14,10);

			//Consulto el úlitmo consecutivo usado (Document NO.) de vacaciones
			//$query_consec = "SELECT MAX(consecutivo) AS consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."'";
			$query_consec =  "SELECT consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."' ORDER BY id_sincronizacion_dynamics_consecutivos DESC LIMIT 1 ";
			$resul_consec = mysqli_query($enlace,$query_consec);
			$row_consec = mysqli_fetch_assoc($resul_consec);
			$consecutivo_numero = str_pad($row_consec['consecutivo']+1, 6, "0", STR_PAD_LEFT); //Consecutivo a usar para esta sincronización
			$consecutivo = "NOM-".$consecutivo_numero;

			//-----CONSULTAMOS LOS DATOS: TABLAS VACACIONES Y CONCEPTO ESPECIALES
			$query2="SELECT per.unidad AS localidad, per.departamento, SUM(vac.valor_dvac) AS valor_dvac, SUM(vac.valor_dias_ext) AS valor_dias_ext, SUM(vac.valor_dbon) AS valor_dbon, SUM(vac.valor_dias_post) AS valor_dias_post, SUM(vac.valor_otros_dias) AS valor_otros_dias, SUM(vac.valor_conversion) AS valor_conversion, SUM(vac.neto_pagar_vacacion) AS neto_pagar_vacacion, SUM(vac.sso_vac) AS sso_vac, SUM(vac.sso_empresa) AS sso_empresa, SUM(vac.rpe_vac) AS rpe_vac, SUM(vac.rpe_empresa) AS rpe_empresa, SUM(vac.rpvh_vac) AS rpvh_vac, SUM(vac.rpvh_empresa) AS rpvh_empresa, SUM(vac.inces_empresa) AS inces_empresa FROM vacacion AS vac INNER JOIN personal AS per ON vac.cedula = per.codigo WHERE vac.fdesde BETWEEN '$periodo_inicial' AND '$periodo_final' AND vac.id = '".$_SESSION['id_validar']."' AND per.id = '".$_SESSION['id_validar']."' GROUP BY per.unidad, per.departamento";
			#######"
			$resultado2 = mysqli_query($enlace,$query2);
			$numero_registros = mysqli_num_rows($resultado2);

			//Crea array para recorrer los conceptos que se enviaran a la API
			$array_registros = array();
			while( $row = mysqli_fetch_assoc( $resultado2)){
				$array_registros[] = $row; // Inside while loop
			}

			//Recorre cada concepto de cada empleado
			for ($row = 0; $row < count($array_registros); $row++) {
				//Recoge registros
				$localidad = $array_registros[$row]['localidad'];
				$departamento = $array_registros[$row]['departamento'];

				//Construyo array por cada concepto de cada registro

				//valor_dvac
				if ($array_registros[$row]['valor_dvac'] != 0){
					$desconcepto= 'VACACIONES DIAS HABILES';
					$cuenta = '2160100200';
					$monto = floatval($array_registros[$row]['valor_dvac']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//valor_dias_ext
				if ($array_registros[$row]['valor_dias_ext'] != 0){
					$desconcepto= 'VACACIONES DIAS ADICIONALES';
					$cuenta = '2160100200';
					$monto = floatval($array_registros[$row]['valor_dias_ext']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//valor_dbon
				if ($array_registros[$row]['valor_dbon'] != 0){
					$desconcepto= 'BONO VACACIONAL';
					$cuenta = '2160100300';
					$monto = floatval($array_registros[$row]['valor_dbon']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//valor_dias_post
				if ($array_registros[$row]['valor_dias_post'] != 0){
					$desconcepto= 'BONO POST VACACIONAL';
					$cuenta = '2160100300';
					$monto = floatval($array_registros[$row]['valor_dias_post']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//valor_otros_dias
				if ($array_registros[$row]['valor_otros_dias'] != 0){
					$desconcepto= 'VACACIONES DIAS DESCANSOS Y FERIADOS';
					$cuenta = '2160100200';
					$monto = floatval($array_registros[$row]['valor_otros_dias']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//valor_conversion
				if ($array_registros[$row]['valor_conversion'] != 0){
					$desconcepto= 'CONCEPTO PENDIENTE ASIGNAR';
					$cuenta = '6110200100';
					$monto = floatval($array_registros[$row]['valor_conversion']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//sso_vac
				if ($array_registros[$row]['sso_vac'] != 0){
					$desconcepto= 'IVSS POR PAGAR';
					$cuenta = '6210100101';
					$monto = floatval($array_registros[$row]['sso_vac']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//sso_empresa
				if ($array_registros[$row]['sso_empresa'] != 0){
					$desconcepto= 'APORTE IVSS';
					$cuenta = '6210100100';
					$monto = floatval($array_registros[$row]['sso_empresa']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//sso_vac + sso_empresa
				if (($array_registros[$row]['sso_vac']+$array_registros[$row]['sso_empresa']) != 0){
					$desconcepto= 'IVSS POR PAGAR';
					$cuenta = '2140200100';
					$monto = -floatval($array_registros[$row]['sso_vac']+$array_registros[$row]['sso_empresa']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//rpe_vac
				if ($array_registros[$row]['rpe_vac'] != 0){
					$desconcepto= 'RPE';
					$cuenta = '6210100201';
					$monto = floatval($array_registros[$row]['rpe_vac']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//rpe_empresa
				if ($array_registros[$row]['rpe_empresa'] != 0){
					$desconcepto= 'APORTE RPE';
					$cuenta = '6210100200';
					$monto = floatval($array_registros[$row]['rpe_empresa']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//rpe_vac + rpe_empresa
				if (($array_registros[$row]['rpe_vac']+$array_registros[$row]['rpe_empresa']) != 0){
					$desconcepto= 'IVSS POR PAGAR';
					$cuenta = '2140200100';
					$monto = -floatval($array_registros[$row]['rpe_vac']+$array_registros[$row]['rpe_empresa']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//rpvh_vac
				if ($array_registros[$row]['rpvh_vac'] != 0){
					$desconcepto= 'FAOV';
					$cuenta = '6210100301';
					$monto = floatval($array_registros[$row]['rpvh_vac']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//rpvh_empresa
				if ($array_registros[$row]['rpvh_empresa'] != 0){
					$desconcepto= 'APORTE FAOV';
					$cuenta = '6210100300';
					$monto = floatval($array_registros[$row]['rpvh_empresa']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//rpvh_vac + rpvh_empresa
				if (($array_registros[$row]['rpvh_vac']+$array_registros[$row]['rpvh_empresa']) != 0){
					$desconcepto= 'FAOV POR PAGAR';
					$cuenta = '2140200300';
					$monto = -floatval($array_registros[$row]['rpvh_vac']+$array_registros[$row]['rpvh_empresa']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//inces_empresa
				if ($array_registros[$row]['inces_empresa'] != 0){
					$desconcepto= 'APORTE INCES';
					$cuenta = '6210100400';
					$monto = floatval($array_registros[$row]['inces_empresa']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);

					$desconcepto= 'INCES POR PAGAR';
					$cuenta = '2140200400';
					$monto = -floatval($array_registros[$row]['inces_empresa']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				if ($array_registros[$row]['neto_pagar_vacacion'] != 0){
					//Calcula neto a pagar
					$monto = floatval($array_registros[$row]['neto_pagar_vacacion']);
					$neto_pagar += $monto;
				}
			}

			//Envía último registro de vacaciones para cumplir con la contrapartida
			if (count($array_registros)>0){//Valida que existan registros en array
				$descripcion="OTROS BENEFICIOS LABORALES POR DISTRIBUIR";
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> "2160109901",
					"Currency_Code"=>  "VEB",
					"Amount"=> -$neto_pagar
				);
				$neto_pagar =0;
			}
		}
		//##############  FIN: ASIENTOS DE VACACIONES #################

		//##############  INICIO: ASIENTOS DE LIQUIDACIONES #################
		if ($asiento=='liquidaciones'){
			//Define periodos
			$periodo_inicial = substr($periodo,0,10);
			$periodo_final = substr($periodo,14,10);

			//Consulto el úlitmo consecutivo usado (Document NO.) de vacaciones
			//$query_consec = "SELECT MAX(consecutivo) AS consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."'";
			$query_consec =  "SELECT consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."' ORDER BY id_sincronizacion_dynamics_consecutivos DESC LIMIT 1 ";
			$resul_consec = mysqli_query($enlace,$query_consec);
			$row_consec = mysqli_fetch_assoc($resul_consec);
			$consecutivo_numero = str_pad($row_consec['consecutivo']+1, 6, "0", STR_PAD_LEFT); //Consecutivo a usar para esta sincronización
			$consecutivo = "NOM-".$consecutivo_numero;

			//-----CONSULTAMOS LOS DATOS: TABLAS LIQUIDACAIONES
			$query2="SELECT per.unidad AS localidad, per.departamento, SUM(liq.valor_dias_pagar) AS valor_dias_pagar, SUM(liq.valor_ct_total) AS valor_ct_total, SUM(liq.valor_vaca_venc) AS valor_vaca_venc, SUM(liq.valor_bonovac_venc) AS valor_bonovac_venc, SUM(liq.bono_post_vaca) AS bono_post_vaca, SUM(liq.valor_dias_desc_vacac) AS valor_dias_desc_vacac, SUM(liq.valor_dias_vac_fraccion) AS valor_dias_vac_fraccion, SUM(liq.valor_bonovac_fraccion) AS valor_bonovac_fraccion, SUM(liq.valor_utilid_pagar) AS valor_utilid_pagar, SUM(liq.ncon01) AS ncon01, SUM(liq.valor_indem) AS valor_indem, SUM(liq.intereses_prestac) AS intereses_prestac, SUM(prestaciones_pagar) AS prestaciones_pagar, SUM(liq.anticipo_prestac) AS anticipo_prestac, SUM(liq.valor_sso) AS valor_sso, SUM(liq.valor_rpe) AS valor_rpe, SUM(liq.faov) AS faov, SUM(liq.valor_islr) AS valor_islr, SUM(liq.inces) AS inces, SUM(liq.saldo_prestamo) AS saldo_prestamo, SUM(liq.adeuti) AS adeuti, SUM(liq.ncon02) AS ncon02, SUM(liq.neto_pagar_liq) AS neto_pagar_liq FROM liquidaciones AS liq INNER JOIN personal AS per ON liq.cedula = per.codigo WHERE liq.fecha_pago BETWEEN '$periodo_inicial' AND '$periodo_final' AND liq.id = '".$_SESSION['id_validar']."' AND liq.estado_liquidacion = 'pagado' AND per.id = '".$_SESSION['id_validar']."' GROUP BY per.unidad, per.departamento";
			#######"
			$resultado2 = mysqli_query($enlace,$query2);
			$numero_registros = mysqli_num_rows($resultado2);

			//Crea array para recorrer los conceptos que se enviaran a la API
			$array_registros = array();
			while( $row = mysqli_fetch_assoc( $resultado2)){
				$array_registros[] = $row; // Inside while loop
			}

			//Recorre cada concepto de cada empleado
			for ($row = 0; $row < count($array_registros); $row++) {
				//Recoge registros
				$localidad = $array_registros[$row]['localidad'];
				$departamento = $array_registros[$row]['departamento'];

				//Construyo array por cada concepto de cada registro

				//valor_dias_pagar
				if ($array_registros[$row]['valor_dias_pagar'] != 0){
					$desconcepto= 'SUELDO / SALARIO';
					$cuenta = '6110100100';
					$monto = floatval($array_registros[$row]['valor_dias_pagar']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//valor_ct_total
				if ($array_registros[$row]['valor_ct_total'] != 0){
					$desconcepto= 'CESTA TICKETS A PAGAR';
					$cuenta = '6110100500';
					$monto = floatval($array_registros[$row]['valor_ct_total']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//valor_vaca_venc
				if ($array_registros[$row]['valor_vaca_venc'] != 0){
					$desconcepto= 'VACACIONES ANUALES VENCIDAS';
					$cuenta = '2160100200';
					$monto = floatval($array_registros[$row]['valor_vaca_venc']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//valor_bonovac_venc
				if ($array_registros[$row]['valor_bonovac_venc'] != 0){
					$desconcepto= 'BONO VACACIONAL VENCIDO';
					$cuenta = '2160100300';
					$monto = floatval($array_registros[$row]['valor_bonovac_venc']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//bono_post_vaca
				if ($array_registros[$row]['bono_post_vaca'] != 0){
					$desconcepto= 'BONO POST VACACIONAL';
					$cuenta = '2160100300';
					$monto = floatval($array_registros[$row]['bono_post_vaca']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//valor_dias_desc_vacac
				if ($array_registros[$row]['valor_dias_desc_vacac'] != 0){
					$desconcepto= 'DIAS DE DESCANSO EN VACACIONES NO DISFRUTADOS';
					$cuenta = '6110100100';
					$monto = floatval($array_registros[$row]['valor_dias_desc_vacac']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//valor_dias_vac_fraccion
				if ($array_registros[$row]['valor_dias_vac_fraccion'] != 0){
					$desconcepto= 'VACACIONES FRACCIONADAS';
					//$cuenta = '6110100600'; //se actualiza la cuenta a solicitude Contabilidad (Greymar) 17/07/2024 Miguelangel
					$cuenta = '2160100200';
					$monto = floatval($array_registros[$row]['valor_dias_vac_fraccion']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//valor_bonovac_fraccion
				if ($array_registros[$row]['valor_bonovac_fraccion'] != 0){
					$desconcepto= 'BONO VACACIONAL FRACCIONADO';
					$cuenta = '2160100300';
					$monto = floatval($array_registros[$row]['valor_bonovac_fraccion']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//valor_utilid_pagar
				if ($array_registros[$row]['valor_utilid_pagar'] != 0){
					$desconcepto= 'UTILIDADES DEL PERÍODO';
					//$cuenta = '6110100800';
					$cuenta = '2160100400';
					///indicaciones de Lcda Greymar no se distribuye por departamento sino que siempre va este concepto a la cuenta 2160100400 --17/07/24 Miguelangel
					$monto = floatval($array_registros[$row]['valor_utilid_pagar']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//ncon01
				if ($array_registros[$row]['ncon01'] != 0){
					$desconcepto= 'OTRAS ASIGNACIONES PAGOS';
					$cuenta = '6110200200';
					$monto = floatval($array_registros[$row]['ncon01']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//valor_indem
				if ($array_registros[$row]['valor_indem'] != 0){
					$desconcepto= 'INDEMNIZACION (ART 92)';
					$cuenta = '6110200500';
					$monto = floatval($array_registros[$row]['valor_indem']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//intereses_prestac
				if ($array_registros[$row]['intereses_prestac'] != 0){
					$desconcepto= 'INTERESES SOBRE PRESTACIONES SOCIALES';
					//$cuenta = '6110100900';
					$cuenta = '2160100500';
					$monto = floatval($array_registros[$row]['intereses_prestac']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//prestaciones_pagar
				if ($array_registros[$row]['prestaciones_pagar'] != 0){
					$desconcepto= 'PRESTACIONES SOCIALES A PAGAR';
					$cuenta = '2220100100';
					$monto = floatval($array_registros[$row]['prestaciones_pagar']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> $monto
					);
				}

				//anticipo_prestac
				if ($array_registros[$row]['anticipo_prestac'] != 0){
					$desconcepto= 'ADELANTOS DE PRESTACIONES SOCIALES';
					//$cuenta = '6110101000';
					$cuenta = '2220100100'; // 17/07/24 Miguelangel
					$monto = floatval($array_registros[$row]['anticipo_prestac']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> -$monto
					);
				}

				//valor_sso
				if ($array_registros[$row]['valor_sso'] != 0){
					$desconcepto= 'SEGURO SOCIAL OBLIGATORIO (SSO)';
					$cuenta = '2140200100';
					$monto = floatval($array_registros[$row]['valor_sso']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> -$monto
					);
				}

				//valor_rpe
				if ($array_registros[$row]['valor_rpe'] != 0){
					$desconcepto= 'REGIMEN DE PRESTACIÓN DE EMPLEO (RPE)';
					$cuenta = '2140200200';
					$monto = floatval($array_registros[$row]['valor_rpe']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> -$monto
					);
				}

				//faov
				if ($array_registros[$row]['faov'] != 0){
					$desconcepto= 'FAOV';
					$cuenta = '2140200300';
					$monto = floatval($array_registros[$row]['faov']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> -$monto
					);
				}

				//valor_islr
				if ($array_registros[$row]['valor_islr'] != 0){
					$desconcepto= 'IMPUESTO SOBRE LA RENTA (ISLR)';
					$cuenta = '2150100300';
					$monto = floatval($array_registros[$row]['valor_islr']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> -$monto
					);
				}

				//inces
				if ($array_registros[$row]['inces'] != 0){
					$desconcepto= 'INCES';
					$cuenta = '2140200400';
					$monto = floatval($array_registros[$row]['inces']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> -$monto
					);
				}

				//saldo_prestamo
				if ($array_registros[$row]['saldo_prestamo'] != 0){
					$desconcepto= 'PRESTAMOS PERSONALES';
					$cuenta = '1120410102';
					$monto = floatval($array_registros[$row]['saldo_prestamo']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> -$monto
					);
				}

				//ncon02
				if ($array_registros[$row]['ncon02'] != 0){
					$desconcepto= 'OTRAS DEDUCCIONES DESCUENTOS';
					$cuenta = '1120410102';
					$monto = floatval($array_registros[$row]['ncon02']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> -$monto
					);
				}

				//adeuti
				if ($array_registros[$row]['adeuti'] != 0){
					$desconcepto= 'ADELANTOS DE UTILIDADES';
					$cuenta = '6110100800';
					$monto = floatval($array_registros[$row]['adeuti']);

					$array_enviar[] =array(
						"Journal_Template_Name" => "GENERAL",
						"Journal_Batch_Name"=> "NOMINA",
						"Document_No"=> $consecutivo,
						"Description"=> $desconcepto,
						"Posting_Date"=> $periodo_final,
						"Document_Date"=> $periodo_final,
						"Shortcut_Dimension_1_Code"=> $localidad,
						"Shortcut_Dimension_2_Code"=> $departamento,
						"Bal_Account_Type"=> "G/L Account",
						"Account_No"=> $cuenta,
						"Currency_Code"=>  "VEB",
						"Amount"=> -$monto
					);
				}

				if ($array_registros[$row]['neto_pagar_liq'] != 0){
					//Calcula neto a pagar
					$monto = floatval($array_registros[$row]['neto_pagar_liq']);
					$neto_pagar += $monto;
				}
			}

			//Envía último registro de vacaciones para cumplir con la contrapartida
			if (count($array_registros)>0){//Valida que existan registros en array
				$descripcion="TOTAL NETO A PAGAR BS";
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> "2160109901",
					"Currency_Code"=>  "VEB",
					"Amount"=> -$neto_pagar
				);
				$neto_pagar =0;
			}
		}
		//##############  FIN: ASIENTOS DE LIQUIDACIONES #################

		//##############  INICIO: ASIENTOS DE UTILIDADES #################
		if ($asiento=='utilidades'){
			//Define periodos
			$periodo_inicial = substr($periodo,0,10);
			$periodo_final = substr($periodo,14,10);

			//Consulto el úlitmo consecutivo usado (Document NO.) de utilidades
			//$query_consec = "SELECT MAX(consecutivo) AS consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."'";
			$query_consec =  "SELECT consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."' ORDER BY id_sincronizacion_dynamics_consecutivos DESC LIMIT 1 ";
			$resul_consec = mysqli_query($enlace,$query_consec);
			$row_consec = mysqli_fetch_assoc($resul_consec);
			$consecutivo_numero = str_pad($row_consec['consecutivo']+1, 6, "0", STR_PAD_LEFT); //Consecutivo a usar para esta sincronización
			$consecutivo = "NOM-".$consecutivo_numero;

			//-----CONSULTAMOS LOS DATOS: TABLAS UTILIDADES
			$query2="SELECT totales.localidad, totales.departamento, detalle, cuenta, totales.monto, totales.tipo FROM concepto, ( SELECT per.unidad AS localidad, per.departamento, SUM(uti.monto) AS monto, uti.concepto, uti.tipo FROM utilidades AS uti INNER JOIN personal AS per ON uti.cedula = per.codigo WHERE uti.fecha BETWEEN '$periodo_inicial' AND '$periodo_final' AND uti.id = '".$_SESSION['id_validar']."' AND per.id = '".$_SESSION['id_validar']."' AND uti.tipo IN ('A', 'D') GROUP BY uti.concepto, per.unidad, per.departamento ) AS totales WHERE concepto.codigo = totales.concepto GROUP BY totales.concepto, totales.localidad, totales.departamento";
			############"

			$resultado2 = mysqli_query($enlace,$query2);
			$numero_registros = mysqli_num_rows($resultado2);

			//Crea array para recorrer los conceptos que se enviaran a la API
			$array_registros = array();
			while( $row = mysqli_fetch_assoc( $resultado2)){
				$array_registros[] = $row; // Inside while loop
			}

			//Recorre cada concepto de cada empleado
			for ($row = 0; $row < count($array_registros); $row++) {
				//Recoge registros
				$desconcepto= $array_registros[$row]['detalle'];
				$tipo= $array_registros[$row]['tipo'];
				$cuenta = $array_registros[$row]['cuenta'];
				$localidad = $array_registros[$row]['localidad'];
				$departamento = $array_registros[$row]['departamento'];

				//Define si el monto es negativo o positivo en fucniona del tipo de concepto
				if ($tipo == "A"){
					$monto= floatval($array_registros[$row]['monto']);
				}elseif ($tipo == "D") {
					$monto= floatval(-$array_registros[$row]['monto']);
				}
				//Calcula neto a pagar
				$neto_pagar += $monto;

				//Construyo array por cada concepto de cada empleado
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $desconcepto,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto
				);
			}

			//Envía último registro de nómina para cumplir con la contrapartida
			if (count($array_registros)>0){//Valida que existan registros en array
				$descripcion="OTROS BENEFICIOS LABORALES POR DISTRIBUIR";
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> "2160109901",
					"Currency_Code"=>  "VEB",
					"Amount"=> -$neto_pagar
				);
				$neto_pagar =0;
			}
		}
		//##############  FIN: ASIENTOS DE UTILIDADES #################


		//##############  INICIO: ASIENTOS DE PROVISION DE PRESTACIONES SEMANALES #################
		if ($asiento=='provision_prestaciones_semanales'){
			//Define periodos
			$periodo_inicial = substr($periodo,0,10);
			$periodo_final = substr($periodo,14,10);

			//Consulto el úlitmo consecutivo usado (Document NO.) de provision_prestaciones_semanales
			//$query_consec = "SELECT MAX(consecutivo) AS consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."'";
			$query_consec =  "SELECT consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."' ORDER BY id_sincronizacion_dynamics_consecutivos DESC LIMIT 1 ";
			$resul_consec = mysqli_query($enlace,$query_consec);
			$row_consec = mysqli_fetch_assoc($resul_consec);
			$consecutivo_numero = str_pad($row_consec['consecutivo']+1, 6, "0", STR_PAD_LEFT); //Consecutivo a usar para esta sincronización
			$consecutivo = "NOM-".$consecutivo_numero;

			//-----CONSULTAMOS LOS DATOS: TABLA HISTORICO
			$query2="SELECT per.unidad AS localidad, per.departamento, SUM(his.monto) AS monto FROM historico AS his INNER JOIN personal AS per ON his.cedula = per.codigo WHERE his.tipo = 'A' AND SUBSTR(his.concepto, 1, 1) = 1 AND his.nomina = '100' AND SUBSTR(his.desperiodo, -10, 10) BETWEEN '$periodo_inicial' AND '$periodo_final' AND his.id = '".$_SESSION['id_validar']."' AND per.id = '".$_SESSION['id_validar']."' GROUP BY per.unidad, per.departamento";
			##########"
			$resultado2 = mysqli_query($enlace,$query2);
			$numero_registros = mysqli_num_rows($resultado2);

			//Consulto datos de la empresa para operarlos
			$query22="SELECT duti, dbon, dvac FROM empresa WHERE id = '".$_SESSION['id_validar']."'";
			$resultado22 = mysqli_query($enlace,$query22);
			$row_empresa = mysqli_fetch_array($resultado22);
			$valor_duti = floatval($row_empresa['duti']);
			$valor_dbon = floatval($row_empresa['dbon']);
			$valor_dvac = floatval($row_empresa['dvac']);

			//Crea array para recorrer los conceptos que se enviaran a la API
			$array_registros = array();
			while($row = mysqli_fetch_assoc($resultado2)){
				$array_registros[] = $row; // Inside while loop
			}

			//Recorre cada concepto
			for ($row = 0; $row < count($array_registros); $row++) {
				//Recoge registros
				$localidad = $array_registros[$row]['localidad'];
				$departamento = $array_registros[$row]['departamento'];
				$monto= floatval($array_registros[$row]['monto']);

				//Se definen valores
				$salario_diario = $monto/30;
				$alicuota_bono_vac = ($valor_dbon*$salario_diario)/360;
				$alicuota_utilidad = ($valor_duti*$salario_diario)/360;

				//PRESTACIONES SOCIALES POR ANTIGUEDAD
				$salario_integral = $salario_diario + $alicuota_bono_vac + $alicuota_utilidad;
				$monto_prestaciones_sociales = $salario_integral*5;
				$monto_prestaciones_literalC = $salario_integral*2.5;

				$descripcion="PROVISION DE PRESTACIONES SOCIALES";
				$cuenta='6110101000';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto_prestaciones_sociales
				);

				$descripcion="PROVISION DE PRESTACIONES SOCIALES";
				$cuenta='2160100600';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> -$monto_prestaciones_sociales
				);
				//PRESTACIONES SOCIALES LITERAL C
				$descripcion="PROVISION LITERAL C PRESTACIONES";
				$cuenta='6110101000';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto_prestaciones_literalC
				);

				$descripcion="PROVISION LITERAL C PRESTACIONES";
				$cuenta='2220100100';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> -$monto_prestaciones_literalC
				);

				//PROVISION DE UTILIADES
				$salario_integral = $salario_diario + $alicuota_bono_vac;
				$monto_provision_utilidades = $salario_integral*0.33333333*30;

				$descripcion="PROVISION DE UTILIDADES";
				$cuenta='6110100800';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto_provision_utilidades
				);

				$descripcion="PROVISION DE UTILIDADES";
				$cuenta='2160100400';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> -$monto_provision_utilidades
				);

				//PROVISION DE BONO VACACIONAL
				$salario_integral = $salario_diario + $alicuota_utilidad;
				$monto_provision_bono_vac = ($salario_integral*$valor_dbon)/360*30;

				$descripcion="PROVISION DE BONO VACACIONAL";
				$cuenta='6110100700';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto_provision_bono_vac
				);

				$descripcion="PROVISION DE BONO VACACIONAL";
				$cuenta='2160100300';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> -$monto_provision_bono_vac
				);

				//PROVISION DE INTERESES DE PRESTACIONES
				//Consulto el interes de la empresa
				$query23="SELECT mon FROM tab_interes ORDER BY fec DESC LIMIT 1";
				$resultado23 = mysqli_query($enlace,$query23);
				$row_interes = mysqli_fetch_array($resultado23);
				$tasa_interes = (floatval($row_interes['mon']))/100;
				$monto_intereses_prestaciones = ($monto_prestaciones_sociales*$tasa_interes)/360*30;

				$descripcion="PROVISION INTERESES DE PRESTACIONES";
				$cuenta='6110100900';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto_intereses_prestaciones
				);

				$descripcion="PROVISION INTERESES DE PRESTACIONES";
				$cuenta='2160100500';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> -$monto_intereses_prestaciones
				);

				//PROVISION DE VACACIONES
				$salario_integral = $salario_diario+$alicuota_utilidad;
				$monto_provision_vacaciones = ($salario_integral*$valor_dvac)/360*30;

				$descripcion="PROVISION DE VACACIONES";
				$cuenta='6110100600';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto_provision_vacaciones
				);

				$descripcion="PROVISION DE VACACIONES";
				$cuenta='2160100200';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> -$monto_provision_vacaciones
				);
			}
		}
		//##############  FIN: ASIENTOS DE PROVISION DE PRESTACIONES SEMANALES #################

		//##############  INICIO: ASIENTOS DE PROVISION DE PRESTACIONES MENSUALES #################
		if ($asiento=='provision_prestaciones_mensuales'){
			//Define periodos
			$periodo_inicial = substr($periodo,0,10);
			$periodo_final = substr($periodo,14,10);

			//Consulto el úlitmo consecutivo usado (Document NO.) de provision_prestaciones_semanales
			//$query_consec = "SELECT MAX(consecutivo) AS consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."'";
			$query_consec =  "SELECT consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."' ORDER BY id_sincronizacion_dynamics_consecutivos DESC LIMIT 1 ";
			$resul_consec = mysqli_query($enlace,$query_consec);
			$row_consec = mysqli_fetch_assoc($resul_consec);
			$consecutivo_numero = str_pad($row_consec['consecutivo']+1, 6, "0", STR_PAD_LEFT); //Consecutivo a usar para esta sincronización
			$consecutivo = "NOM-".$consecutivo_numero;

			//-----CONSULTAMOS LOS DATOS: TABLA HISTORICO
			$query2="SELECT per.unidad AS localidad, per.departamento, SUM(his.monto) AS monto FROM historico AS his INNER JOIN personal AS per ON his.cedula = per.codigo WHERE his.tipo = 'A' AND SUBSTR(his.concepto, 1, 1) = 1 AND his.nomina IN ('200','400','500') AND SUBSTR(his.desperiodo, -10, 10) BETWEEN '$periodo_inicial' AND '$periodo_final' AND his.id = '".$_SESSION['id_validar']."' AND per.id = '".$_SESSION['id_validar']."' GROUP BY per.unidad";
			##########"

			$resultado2 = mysqli_query($enlace,$query2);
			$numero_registros = mysqli_num_rows($resultado2);

			//Consulto datos de la empresa para operarlos
			$query22="SELECT duti, dbon, dvac FROM empresa WHERE id = '".$_SESSION['id_validar']."'";
			$resultado22 = mysqli_query($enlace,$query22);
			$row_empresa = mysqli_fetch_array($resultado22);
			$valor_duti = floatval($row_empresa['duti']);
			$valor_dbon = floatval($row_empresa['dbon']);
			$valor_dvac = floatval($row_empresa['dvac']);

			//Crea array para recorrer los conceptos que se enviaran a la API
			$array_registros = array();
			while($row = mysqli_fetch_assoc($resultado2)){
				$array_registros[] = $row; // Inside while loop
			}

			//Recorre cada concepto
			for ($row = 0; $row < count($array_registros); $row++) {
				//Recoge registros
				$localidad = $array_registros[$row]['localidad'];
				$departamento = $array_registros[$row]['departamento'];
				$monto= floatval($array_registros[$row]['monto']);

				//Se definen valores
				$salario_diario = $monto/30;
				$alicuota_bono_vac = ($valor_dbon*$salario_diario)/360;
				$alicuota_utilidad = ($valor_duti*$salario_diario)/360;

				//PRESTACIONES SOCIALES POR ANTIGUEDAD
				$salario_integral = $salario_diario + $alicuota_bono_vac + $alicuota_utilidad;
				$monto_prestaciones_sociales = $salario_integral*5;
				$monto_prestaciones_literalC = $salario_integral*2.5;

				$descripcion="PROVISION DE PRESTACIONES SOCIALES";
				$cuenta='6110101000';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto_prestaciones_sociales
				);

				$descripcion="PROVISION DE PRESTACIONES SOCIALES";
				$cuenta='2160100600';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> -$monto_prestaciones_sociales
				);
				
				//PRESTACIONES SOCIALES LITERAL C
				$descripcion="PROVISION LITERAL C PRESTACIONES";
				$cuenta='6110101000';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto_prestaciones_literalC
				);

				$descripcion="PROVISION LITERAL C PRESTACIONES";
				$cuenta='2220100100';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> -$monto_prestaciones_literalC
				);

				//PROVISION DE UTILIADES
				$salario_integral = $salario_diario + $alicuota_bono_vac;
				$monto_provision_utilidades = $salario_integral*0.33333333*30;

				$descripcion="PROVISION DE UTILIDADES";
				$cuenta='6110100800';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto_provision_utilidades
				);

				$descripcion="PROVISION DE UTILIDADES";
				$cuenta='2160100400';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> -$monto_provision_utilidades
				);

				//PROVISION DE BONO VACACIONAL
				$salario_integral = $salario_diario + $alicuota_utilidad;
				$monto_provision_bono_vac = ($salario_integral*$valor_dbon)/360*30;

				$descripcion="PROVISION DE BONO VACACIONAL";
				$cuenta='6110100700';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto_provision_bono_vac
				);

				$descripcion="PROVISION DE BONO VACACIONAL";
				$cuenta='2160100300';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> -$monto_provision_bono_vac
				);

				//PROVISION DE INTERESES DE PRESTACIONES
				//Consulto el interes de la empresa
				$query23="SELECT mon FROM tab_interes ORDER BY fec DESC LIMIT 1";
				$resultado23 = mysqli_query($enlace,$query23);
				$row_interes = mysqli_fetch_array($resultado23);
				$tasa_interes = (floatval($row_interes['mon']))/100;
				$monto_intereses_prestaciones = ($monto_prestaciones_sociales*$tasa_interes)/360*30;

				$descripcion="PROVISION INTERESES DE PRESTACIONES";
				$cuenta='6110100900';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto_intereses_prestaciones
				);

				$descripcion="PROVISION INTERESES DE PRESTACIONES";
				$cuenta='2160100500';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> -$monto_intereses_prestaciones
				);

				//PROVISION DE VACACIONES
				$salario_integral = $salario_diario+$alicuota_utilidad;
				$monto_provision_vacaciones = ($salario_integral*$valor_dvac)/360*30;

				$descripcion="PROVISION DE VACACIONES";
				$cuenta='6110100600';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto_provision_vacaciones
				);

				$descripcion="PROVISION DE VACACIONES";
				$cuenta='2160100200';
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> -$monto_provision_vacaciones
				);
			}
		}
		//##############  FIN: ASIENTOS DE PROVISION DE PRESTACIONES MENSUALES #################

		//##############  INICIO: ASIENTOS DE BONO DE ALIMENTACION #################
		if ($asiento=='bono_alimentacion'){
			//Define periodos
			$periodo_inicial = substr($periodo,0,10);
			$periodo_final = substr($periodo,14,10);

			//Consulto el úlitmo consecutivo usado (Document NO.) de bono de alimentación
			//$query_consec = "SELECT MAX(consecutivo) AS consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."'";
			$query_consec =  "SELECT consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."' ORDER BY id_sincronizacion_dynamics_consecutivos DESC LIMIT 1 ";
			$resul_consec = mysqli_query($enlace,$query_consec);
			$row_consec = mysqli_fetch_assoc($resul_consec);
			$consecutivo_numero = str_pad($row_consec['consecutivo']+1, 6, "0", STR_PAD_LEFT); //Consecutivo a usar para esta sincronización
			$consecutivo = "NOM-".$consecutivo_numero;

			//-----CONSULTAMOS LOS DATOS: TABLAS BONO DE ALIMENTACION

			$query2="SELECT per.unidad AS localidad, per.departamento, SUM(pba.monto) AS monto, cpt.cuenta, cpt.detalle FROM pagos_bono_alimen AS pba INNER JOIN personal AS per ON pba.cedula = per.codigo INNER JOIN concepto AS cpt ON cpt.codigo = pba.concepto WHERE pba.fecha BETWEEN '$periodo_inicial' AND '$periodo_final' AND cpt.id = '".$_SESSION['id_validar']."' AND pba.concepto = '7009' AND pba.id = '".$_SESSION['id_validar']."' AND per.id = '".$_SESSION['id_validar']."' GROUP BY per.unidad, per.departamento";
			$resultado2 = mysqli_query($enlace,$query2);
			$numero_registros = mysqli_num_rows($resultado2);

			//Crea array para recorrer los conceptos que se enviaran a la API
			$array_registros = array();
			while( $row = mysqli_fetch_assoc( $resultado2)){
				$array_registros[] = $row; // Inside while loop
			}

			//Recorre cada concepto de cada empleado
			for ($row = 0; $row < count($array_registros); $row++) {
				//Recoge registros
				$desconcepto= $array_registros[$row]['detalle'];
				$cuenta = $array_registros[$row]['cuenta'];
				$localidad = $array_registros[$row]['localidad'];
				$departamento = $array_registros[$row]['departamento'];
				$monto= floatval($array_registros[$row]['monto']);

				//Calcula neto a pagar
				$neto_pagar += $monto;

				//Construyo array por cada concepto de cada empleado
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $desconcepto,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto
				);
			}

			//Envía último registro de nómina para cumplir con la contrapartida
			if (count($array_registros)>0){//Valida que existan registros en array
				$descripcion="OTROS BENEFICIOS LABORALES POR DISTRIBUIR";
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> "2160109901",
					"Currency_Code"=>  "VEB",
					"Amount"=> -$neto_pagar
				);
				$neto_pagar =0;
			}
		}
		//##############  FIN: ASIENTOS DE BONO DE ALIMENTACION #################

		//##############  INICIO: ASIENTOS DE BONO DE ALIMENTACION en $$$ #################
		if ($asiento=='bono_alimentacion_usd'){
			//Define periodos
			$periodo_inicial = substr($periodo,0,10);
			$periodo_final = substr($periodo,14,10);

			//Consulto el úlitmo consecutivo usado (Document NO.) de bono de alimentación
			//$query_consec = "SELECT MAX(consecutivo) AS consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."'";
			$query_consec =  "SELECT consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."' ORDER BY id_sincronizacion_dynamics_consecutivos DESC LIMIT 1 ";
			$resul_consec = mysqli_query($enlace,$query_consec);
			$row_consec = mysqli_fetch_assoc($resul_consec);
			$consecutivo_numero = str_pad($row_consec['consecutivo']+1, 6, "0", STR_PAD_LEFT); //Consecutivo a usar para esta sincronización
			$consecutivo = "NOM-".$consecutivo_numero;

			//-----CONSULTAMOS LOS DATOS: TABLAS BONO DE ALIMENTACION

			$query2="SELECT per.unidad AS localidad, per.departamento, SUM(pba.monto) AS monto, cpt.cuenta, cpt.codigo, cpt.detalle FROM pagos_bono_alimen AS pba INNER JOIN personal AS per ON pba.cedula = per.codigo INNER JOIN concepto AS cpt ON cpt.codigo = pba.concepto WHERE pba.fecha BETWEEN '$periodo_inicial' AND '$periodo_final' AND cpt.id = '".$_SESSION['id_validar']."' AND pba.concepto IN ('7005','7010','7011','7012','7013') AND pba.id = '".$_SESSION['id_validar']."' AND per.id = '".$_SESSION['id_validar']."' GROUP BY pba.concepto, per.unidad";
			$resultado2 = mysqli_query($enlace,$query2);
			$numero_registros = mysqli_num_rows($resultado2);

			//Crea array para recorrer los conceptos que se enviaran a la API
			$array_registros = array();
			while( $row = mysqli_fetch_assoc( $resultado2)){
				$array_registros[] = $row; // Inside while loop
			}

			//Recorre cada concepto de cada empleado
			for ($row = 0; $row < count($array_registros); $row++) {
				//Recoge registros
				$desconcepto= $array_registros[$row]['detalle'];
				$cuenta = $array_registros[$row]['cuenta'];
				$concepto = $array_registros[$row]['codigo'];
				$localidad = $array_registros[$row]['localidad'];
				$departamento = $array_registros[$row]['departamento'];
				$monto= floatval($concepto=='7005'?$array_registros[$row]['monto']:-$array_registros[$row]['monto']);

				//Calcula neto a pagar
				$neto_pagar += $monto;

				//Construyo array por cada concepto de cada empleado
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $desconcepto,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "USD",
					"Amount"=> $monto
				);
			}

			//Envía último registro de nómina para cumplir con la contrapartida
			if (count($array_registros)>0){//Valida que existan registros en array
				$descripcion="OTROS BENEFICIOS LABORALES POR DISTRIBUIR";
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> "2160109901",
					"Currency_Code"=>  "USD",
					"Amount"=> -$neto_pagar
				);
				$neto_pagar =0;
			}
		}
		//##############  FIN: ASIENTOS DE BONO DE ALIMENTACION #################

		//##############  INICIO: ASIENTOS DESCUENTOS EN BONO DE ALIMENTACION en $$$ #################
		if ($asiento=='bono_alimentacion_descuentos'){
			//Define periodos
			$periodo_inicial = substr($periodo,0,10);
			$periodo_final = substr($periodo,14,10);

			//Consulto el úlitmo consecutivo usado (Document NO.) de bono de alimentación
			//$query_consec = "SELECT MAX(consecutivo) AS consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."'";
			$query_consec =  "SELECT consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."' ORDER BY id_sincronizacion_dynamics_consecutivos DESC LIMIT 1 ";
			$resul_consec = mysqli_query($enlace,$query_consec);
			$row_consec = mysqli_fetch_assoc($resul_consec);
			$consecutivo_numero = str_pad($row_consec['consecutivo']+1, 6, "0", STR_PAD_LEFT); //Consecutivo a usar para esta sincronización
			$consecutivo = "NOM-".$consecutivo_numero;

			//-----CONSULTAMOS LOS DATOS: TABLAS BONO DE ALIMENTACION

			$query2="SELECT per.unidad AS localidad, per.departamento, SUM(pba.monto) AS monto, cpt.cuenta, cpt.detalle FROM pagos_bono_alimen AS pba INNER JOIN personal AS per ON pba.cedula = per.codigo INNER JOIN concepto AS cpt ON cpt.codigo = pba.concepto WHERE pba.fecha BETWEEN '$periodo_inicial' AND '$periodo_final' AND cpt.id = '".$_SESSION['id_validar']."' AND pba.concepto = '7010' AND pba.id = '".$_SESSION['id_validar']."' AND per.id = '".$_SESSION['id_validar']."' GROUP BY per.unidad, per.departamento";
			$resultado2 = mysqli_query($enlace,$query2);
			$numero_registros = mysqli_num_rows($resultado2);

			//Crea array para recorrer los conceptos que se enviaran a la API
			$array_registros = array();
			while( $row = mysqli_fetch_assoc( $resultado2)){
				$array_registros[] = $row; // Inside while loop
			}

			//Recorre cada concepto de cada empleado
			for ($row = 0; $row < count($array_registros); $row++) {
				//Recoge registros
				$desconcepto= $array_registros[$row]['detalle'];
				$cuenta = $array_registros[$row]['cuenta'];
				$localidad = $array_registros[$row]['localidad'];
				$departamento = $array_registros[$row]['departamento'];
				$monto= floatval($array_registros[$row]['monto']);

				//Calcula neto a pagar
				$neto_pagar += $monto;

				//Construyo array por cada concepto de cada empleado
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $desconcepto,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "USD",
					"Amount"=> $monto
				);
				//Construyo array por cada concepto de cada empleado -- Cuenta de partida doble contable
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $desconcepto,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> '1120410102',
					"Currency_Code"=>  "USD",
					"Amount"=> -$monto
				);

			}


		}
		//##############  FIN: ASIENTOS DE DESCUENTOS EN BONO DE ALIMENTACION #################

		//##############  INICIO: ASIENTOS DE CESTATICKET #################
		if ($asiento=='cestaticket'){
			//Define periodos
			$periodo_inicial = substr($periodo,0,10);
			$periodo_final = substr($periodo,14,10);

			//Consulto el úlitmo consecutivo usado (Document NO.) de cestaticket
			//$query_consec = "SELECT MAX(consecutivo) AS consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."'";
			$query_consec =  "SELECT consecutivo FROM sincronizacion_dynamics_consecutivos WHERE id = '".$_SESSION['id_validar']."' ORDER BY id_sincronizacion_dynamics_consecutivos DESC LIMIT 1 ";
			$resul_consec = mysqli_query($enlace,$query_consec);
			$row_consec = mysqli_fetch_assoc($resul_consec);
			$consecutivo_numero = str_pad($row_consec['consecutivo']+1, 6, "0", STR_PAD_LEFT); //Consecutivo a usar para esta sincronización
			$consecutivo = "NOM-".$consecutivo_numero;

			//-----CONSULTAMOS LOS DATOS: TABLAS CESTATICKET

			$query2="SELECT per.unidad AS localidad, per.departamento, SUM(hct.monto) AS monto, cpt.cuenta, cpt.detalle FROM historico_cestaticket AS hct INNER JOIN personal AS per ON hct.cedula = per.codigo INNER JOIN concepto AS cpt ON cpt.codigo = hct.concepto WHERE SUBSTR(hct.fecha_registro, 1, 10) BETWEEN '$periodo_inicial' AND '$periodo_final' AND hct.id = '".$_SESSION['id_validar']."' AND per.id = '".$_SESSION['id_validar']."' AND cpt.id = '".$_SESSION['id_validar']."' GROUP BY per.unidad, per.departamento";
			$resultado2 = mysqli_query($enlace,$query2);
			$numero_registros = mysqli_num_rows($resultado2);

			//Crea array para recorrer los conceptos que se enviaran a la API
			$array_registros = array();
			while( $row = mysqli_fetch_assoc( $resultado2)){
				$array_registros[] = $row; // Inside while loop
			}

			//Recorre cada concepto de cada empleado
			for ($row = 0; $row < count($array_registros); $row++) {
				//Recoge registros
				$desconcepto= $array_registros[$row]['detalle'];
				$cuenta = $array_registros[$row]['cuenta'];
				$localidad = $array_registros[$row]['localidad'];
				$departamento = $array_registros[$row]['departamento'];
				$monto= floatval($array_registros[$row]['monto']);

				//Calcula neto a pagar
				$neto_pagar += $monto;

				//Construyo array por cada concepto de cada empleado
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $desconcepto,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> $cuenta,
					"Currency_Code"=>  "VEB",
					"Amount"=> $monto
				);
			}

			//Envía último registro de nómina para cumplir con la contrapartida
			if (count($array_registros)>0){//Valida que existan registros en array
				$descripcion="OTROS BENEFICIOS LABORALES POR DISTRIBUIR";
				$array_enviar[] =array(
					"Journal_Template_Name" => "GENERAL",
					"Journal_Batch_Name"=> "NOMINA",
					"Document_No"=> $consecutivo,
					"Description"=> $descripcion,
					"Posting_Date"=> $periodo_final,
					"Document_Date"=> $periodo_final,
					"Shortcut_Dimension_1_Code"=> $localidad,
					"Shortcut_Dimension_2_Code"=> $departamento,
					"Bal_Account_Type"=> "G/L Account",
					"Account_No"=> "2160109901",
					"Currency_Code"=>  "VEB",
					"Amount"=> -$neto_pagar
				);
				$neto_pagar =0;
			}
		}
		//##############  FIN: ASIENTOS DE CESTATICKET #################

// ############## INICIO: VALIDACIONES DE REGISTROS ####################
//Validación de formato de datos previo a enviar a API
foreach($array_enviar as $log) {
	$conteo_errores = 0;
	$mensaje_error = "";
	$document_no = $log['Document_No'];
	$descripcion = $log['Description'];
	$posting_date = $log['Posting_Date'];
	$localidad = $log['Shortcut_Dimension_1_Code'];
	$departamento = $log['Shortcut_Dimension_2_Code'];
	$cuenta = $log['Account_No'];
	$monto = $log['Amount'];

	/* Validaciones
	1. Que no este vacio o sea cero
	2. Que tenga el tamaño correspondiente
	3. Que exista la localidad o departamento en base de datos
	*/

	//Valido que tenga consecutivo correcto Ejemplo: NOM-789, se valida con el tamaño del string porque viene los demás asientos
	if (strlen($document_no)<=3){
		$codigo_error = "Formato inadecuado en campo";
		$mensaje_error = $mensaje_error."- Document_No ".$document_no;
		$conteo_errores++;
	}

	//Valido que no este vacio
	if ($posting_date=='' OR is_null($posting_date) OR $posting_date==0){
		$codigo_error = "Formato inadecuado en campo";
		$mensaje_error = $mensaje_error."- Fecha de registro ";
		$conteo_errores++;
	}

	if ($localidad =='' OR is_null($localidad)){
		$codigo_error = "Formato inadecuado en campo";
		$mensaje_error = $mensaje_error."- Localidad ";
		$conteo_errores++;
	}

	//Busca si existe esta localidad en Dynamics
	$busqueda = array_search($localidad, $array_localidades_dynamics, TRUE);
	if($busqueda !== false){
		//echo "encontrado";
	}else{
		$codigo_error = "Registro no existe en Dynamics";
		$mensaje_error = $mensaje_error."- Localidad ".$localidad;
		$conteo_errores++;
	}

	if ($departamento =='' OR is_null($departamento)){
		$codigo_error = "Formato inadecuado en campo";
		$mensaje_error = $mensaje_error."- Departamento ";
		$conteo_errores++;
	}

	//Busca si existe esta departamento en Dynamics
	$busqueda = array_search($departamento, $array_departamentos_dynamics, TRUE);
	if($busqueda !== false){
		//echo "encontrado";
	}else{
		$codigo_error = "Registro no existe en Dynamics";
		$mensaje_error = $mensaje_error."- Departamento ".$departamento;
		$conteo_errores++;
	}

	//Busca si existe esta cuenta en Dynamics
	$busqueda = array_search($cuenta, $array_plan_de_cuentas_dynamics, TRUE);
	if($busqueda !== false){
		//echo "encontrado";
	}else{
		$codigo_error = "Registro no existe en Dynamics";
		$mensaje_error = $mensaje_error."- Cuenta ".$cuenta;
		$conteo_errores++;
	}

	if ($cuenta=='' OR is_null($cuenta) OR $cuenta==0){
		$codigo_error = "Formato inadecuado en campo";
		$mensaje_error = $mensaje_error."- Cuenta ";
		$conteo_errores++;
	}

	if ($descripcion=='' OR is_null($descripcion)){
		$codigo_error = "Formato inadecuado en campo";
		$mensaje_error = $mensaje_error."- Descripción ";
		$conteo_errores++;
	}

	if ($monto=='' OR is_null($monto) OR $monto==0){
		$codigo_error = "Formato inadecuado en campo";
		$mensaje_error = $mensaje_error."- Monto ";
		$conteo_errores++;
	}

	//Construyo array de errores
	if ($conteo_errores>0){
		$array_errores[] = array(
			"localidad"=>$localidad,
			"departamento"=>$departamento,
			"desconcepto"=>$descripcion,
			"cuenta"=>$cuenta,
			"monto"=>$monto,
			"codigo_error"=>$codigo_error,
			"mensaje_error"=>$mensaje_error
		);
		$total_registros_enviados_malos++;
	}else{
		$total_registros_enviados_buenos++;
	}
	$total_registros_enviados++;
}
// ############## FIN: VALIDACIONES DE REGISTROS #########################

// ############## INICIO: ENVIO DE REGISTROS A LA API ####################
//Envio a la API en caso de que no hubiesen errores
if (count($array_errores)==0){
	//La validacion no arrojó ningún error
	//Procede a enviar registros a la API de Microsoft Dynamics
	$total_registros_enviados =0;
	$total_registros_enviados_buenos =0;
	$total_registros_enviados_malos =0;
	foreach($array_enviar as $log) {
		$result = api_enviar_datos($log);
		if(key($result['datos-api'])!=='error'){
			$total_registros_enviados_buenos++;
		}else{
			$array_errores[] = array(
				"localidad"=>$log['Shortcut_Dimension_1_Code'],
				"departamento"=>$log['Shortcut_Dimension_2_Code'],
				"desconcepto"=>$log['Description'],
				"cuenta"=>$log['Account_No'],
				"monto"=>$log['Amount'],
				"codigo_error"=>$result['datos-api']['error']['code'],
				"mensaje_error"=>$result['datos-api']['error']['message']
			);
			$total_registros_enviados_malos++;
			$resultado_sincronizacion ="Microsoft Dynamics encontró errores en los registros enviados";
		}
		$total_registros_enviados++;
	}
}else{
	$resultado_sincronizacion ="Se encontraron errores antes de enviar los registros a Microsoft Dynamics";
	$errores_en_validacion=1;
}
// ############## FIN: ENVIO DE REGISTROS A LA API ####################




// ############## INICIO: REGISTRO DE ERRORES EN EXCEL ####################
// Creación de archivo Excel para reporte de errores
if (count($array_errores)>0){
	$total_contador_celdas_excel = 6;
	$objPHPExcel = new PHPExcel();
	// Asignar hoja de calculo activa
	$objPHPExcel->setActiveSheetIndex(0);

	//Ancho
	$objPHPExcel->getActiveSheet(0)->getColumnDimension('A')->setWidth(10);
	$objPHPExcel->getActiveSheet(0)->getColumnDimension('B')->setWidth(14);
	$objPHPExcel->getActiveSheet(0)->getColumnDimension('C')->setWidth(40);
	$objPHPExcel->getActiveSheet(0)->getColumnDimension('D')->setWidth(12);
	$objPHPExcel->getActiveSheet(0)->getColumnDimension('E')->setWidth(8);
	$objPHPExcel->getActiveSheet(0)->getColumnDimension('F')->setWidth(40);
	$objPHPExcel->getActiveSheet(0)->getColumnDimension('G')->setWidth(120);
	//Negrita
	$objPHPExcel->getActiveSheet(0)->getStyle("A1")->getFont()->setBold(true);
	$objPHPExcel->getActiveSheet(0)->getStyle("A3")->getFont()->setBold(true);
	$objPHPExcel->getActiveSheet(0)->getStyle("A5")->getFont()->setBold(true);
	$objPHPExcel->getActiveSheet(0)->getStyle("B5")->getFont()->setBold(true);
	$objPHPExcel->getActiveSheet(0)->getStyle("C5")->getFont()->setBold(true);
	$objPHPExcel->getActiveSheet(0)->getStyle("D5")->getFont()->setBold(true);
	$objPHPExcel->getActiveSheet(0)->getStyle("E5")->getFont()->setBold(true);
	$objPHPExcel->getActiveSheet(0)->getStyle("F5")->getFont()->setBold(true);
	$objPHPExcel->getActiveSheet(0)->getStyle("G5")->getFont()->setBold(true);
	//Tipo de celda
	$objPHPExcel->getActiveSheet(0)->getStyle('G')->getNumberFormat()->setFormatCode( PHPExcel_Style_NumberFormat::FORMAT_TEXT );

	// Definir titulos de excel
	$objPHPExcel->getActiveSheet(0)
	->setCellValue('A1', 'LOG DE ERRORES')
	->setCellValue('A3', "Periodo")
	->setCellValue('B3', $ultimo_periodo)
	->setCellValue('A5', "Localidad")
	->setCellValue('B5', "Departamento")
	->setCellValue('C5', "Descripción")
	->setCellValue('D5', "Cuenta")
	->setCellValue('E5', "Monto")
	->setCellValue('F5', "Codigo de Error")
	->setCellValue('G5', "Detalle de Error");

	//Imprime errores
	foreach($array_errores as $log) {
		$objPHPExcel->getActiveSheet(0)
		->setCellValue('A'.$total_contador_celdas_excel, $log['localidad'])
		->setCellValue('B'.$total_contador_celdas_excel, $log['departamento'])
		->setCellValue('C'.$total_contador_celdas_excel, $log['desconcepto'])
		->setCellValue('D'.$total_contador_celdas_excel, $log['cuenta'])
		->setCellValue('E'.$total_contador_celdas_excel, $log['monto'])
		->setCellValue('F'.$total_contador_celdas_excel, $log['codigo_error'])
		->setCellValue('G'.$total_contador_celdas_excel, $log['mensaje_error']);
		$total_contador_celdas_excel++;
	}
	$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
	$objWriter->save( 'Log_sincronizacion_dynamics.xlsx');
	header('Content-Type: application/vnd.ms-excel');
	header('Content-Disposition: attachment;filename="Log_sincronizacion_dynamics.xlsx"');
	header('Cache-Control: max-age=0');
}
// ############## FIN: REGISTRO DE ERRORES EN EXCEL ####################



// ############## INICIO: REGISTRO DE ERRORES EN BD ####################
if ($total_registros_enviados>0){
	registrar_sincronizacion($asiento,$periodo,$total_registros_enviados,$total_registros_enviados_buenos,$total_registros_enviados_malos,$array_errores);
}
// ############## FIN: REGISTRO DE ERRORES EN BD ####################



// ############## INICIO: REGISTRO DE CONSECUTIVO USADO PARA ESTA SINCRONIZACIÓN ############
if (count($array_errores)==0 && $total_registros_enviados>0){
	$id_empresa = $_SESSION['id_validar'];
	$query_insert = "INSERT INTO sincronizacion_dynamics_consecutivos (
		`desperiodo`,
		`asiento`,
		`consecutivo`,
		`id`
	) VALUES (
		'$periodo',
		'$asiento',
		$consecutivo_numero,
		$id_empresa
	)";
	$consulta=mysqli_query($enlace,$query_insert) or die ("Error in query: $query_insert. ".mysqli_error($enlace));
}
// ############## FIN: REGISTRO DE CONSECUTIVO USADO PARA ESTA SINCRONIZACIÓN ############

//-----------IMPRIMIMOS EN LA VISTA LA TABLA DONDE NOS DICE LOS REGISTROS ENVIADOS, LOS SATISFACTORIOS Y LOS QUE TIENEN ERROR
termina_algoritmo:
echo "<h2>RESULTADO SINCRONIZACIÓN</h2>";
echo "<main class='container'>";
echo "<section class='row text-center'>";
echo "<div class='col-sm-12'>";
echo "<input type = 'hidden' name = 'inicio' value = '1'>";
echo "<table class='table table-striped bg-white'>";
echo "<thead>";
echo "<tr>";
echo "<th scope='col'>";
if (count($array_errores)>0){
	echo "Sincronización Fallida";
}else{
	echo "Sincronización Exitosa";
}
echo "</th>";
echo "<th scope='col'>Observaciones de sincronización hacia Microsoft Dynamics</th>";
echo "</tr>";
echo "</thead>";
echo "<tbody>";
echo "<tr>";
echo "<td>";
if($errores_en_validacion==1){
	echo "Registros a enviar: ";
}else{
	echo "Registros enviados: ";
}
echo intval($total_registros_enviados)."<br>";
echo "Registros satisfactorios: ".intval($total_registros_enviados_buenos)."<br>";
echo "Registros con error: ".intval($total_registros_enviados_malos)."";
echo "</td>";
echo "<td>";
if (count($array_errores)>0){
	echo $resultado_sincronizacion;
}else{
	echo "Sincronización finalizada";
}
echo "</td>";
echo "</tr>";
echo "</tbody>";
echo "</table>";

if (count($array_errores)>0 AND $registros_en_dynamics == 0){
	echo "<button style='text-decoration: none;
	padding: 10px;
	font-weight: 600;
	font-size: 20px;
	color: #ffffff;
	background-color: #1883ba;
	border-radius: 6px;
	border: 2px solid #0016b0;'><a href='Log_sincronizacion_dynamics.xlsx' download='Log_sincronizacion_dynamics.xlsx' style='color: #ffffff;'>Descargar log de errores</a></button><br><br>";
}
echo "</div>";
echo "</section>";
echo "</main>";
}

function registrar_sincronizacion($asiento,$periodo,$total_registros_enviados,$total_registros_enviados_buenos,$total_registros_enviados_malos,$array_errores){

	$id_empresa = $_SESSION['id_validar'];

	if (count($array_errores)>0){
		$estado_sincronizacion="Fallido";
	}else{
		$estado_sincronizacion="Exitoso";
	}

	// Serlializa array para insertar en BD
	$log_errores = serialize($array_errores);
	$log_errores = mysqli_escape_string($enlace, $log_errores);

	$desperiodo = $periodo;

	$desde_fecha = substr($desperiodo,0,10);
	$hasta_fecha = substr($desperiodo,14,10);

	//Si es diferente de nomina, quiere decir que en el mes solo hay un periodo, traera entonces el segundo del mes
	if ($asiento == 'provision_prestaciones_mensuales'){
		$desde_fecha = date('Y-m', strtotime($desde_fecha))."-16"; //Ejemplo: 2021-01-16
	}
	

	//Determina e periodo actual SI SE TRATA DE VACACIONES
	
	$enlace=cargar_conexion();
	
	/*if ($asiento == 'vacaciones' || $asiento == 'pagos_especiales' || $asiento == 'bonopollo' || $asiento == 'cestaticket' || $asiento == 'bono_alimentacion' || $asiento == 'bono_alimentacion_usd' || $asiento == 'aportes_parafiscales' || $asiento == 'liquidaciones'  ){
		
	
	$query_periodo= "SELECT MAX(periodo) AS periodo FROM sincronizacion_dynamics WHERE asiento = '".$asiento."' AND	id = '".$_SESSION['id_validar']."' AND estado_sincronizacion='Exitoso' ";
	$consulta=mysqli_query($enlace,$query_periodo) or die ("Error in query: $query_periodo. ".mysqli_error($enlace));
	$row=mysqli_fetch_array($consulta);
	$periodo_actual = $row['periodo'] + 1;
	$periodo_actual = str_pad($periodo_actual, 3, "0", STR_PAD_LEFT);

	}*/
	
	//else{ /// nominas ordinarias Semanal y Quincenal
	
	//Determina e periodo actual
	$query_periodo= "SELECT periodo FROM periodo WHERE desde = '".$desde_fecha."' AND hasta = '".$hasta_fecha."' AND id = '".$_SESSION['id_validar']."' ";

	$consulta=mysqli_query($enlace,$query_periodo) or die ("Error in query: $query_periodo" .mysqli_error($enlace));
	$row=mysqli_fetch_array($consulta);
	$periodo_actual= $row['periodo'];
	//}

	$query_insert = "INSERT INTO sincronizacion_dynamics (
		`desperiodo`,
		`periodo`,
		`registros_totales`,
		`registros_satisfactorios`,
		`registros_errados`,
		`asiento`,
		`estado_sincronizacion`,
		`log_errores`,
		`id`
	) VALUES (
		'$desperiodo',
		'$periodo_actual',
		$total_registros_enviados,
		$total_registros_enviados_buenos,
		$total_registros_enviados_malos,
		'$asiento',
		'$estado_sincronizacion',
		'".$log_errores."',
		$id_empresa
	)";
	$consulta=mysqli_query($enlace,$query_insert) or die ("Error in query: $query_insert. ".mysqli_error($enlace));
}

//-----------FUNCION DE LA API QUE TRAE COMO PARAMETRO EL ARRAY CREADO ANTERIORMENTE EN DONDE LO CONVIERTE EN UN JSON Y LO ENVÍA, TAMBIÉN NOS TRAERÁ EL ESTADO DE CADA REGISTRO

function api_enviar_datos($array){
    $resultados = [];
    $url = 'https://api.businesscentral.dynamics.com/v2.0/0fd52580-06b9-40b3-af7c-582d9a4d12a7/Merino/ODataV4/Company(\'MERSAN\')/EntradasDiario';
    $token = generate_token();  // Obtener el token de acceso
    $headers = array(
        'Authorization: Bearer ' . $token .'',
        'Accept: application/json',
        'Content-Type: application/json'
    );

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    $data_json = json_encode($array);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $result = curl_exec($ch);
    $result_api = json_decode($result, true);
    //TOMAR EL ESTADO DE LA CONSULTA HTTP
    $info = curl_getinfo($ch);
    
    $error = curl_error($ch);
    if (empty($info['http_code'])) {
        die("No HTTP code was returned");
    } else if ($info['http_code'] > 200) {
        $http_codes = parse_ini_file($url);
        return $resultados = [
            'datos-api' => $result_api
        ];
    }
}

function api_obtener_datos($datos_a_obtener){
	switch ($datos_a_obtener) {
		case 'registros_localidades':
		$url = 'https://api.businesscentral.dynamics.com/v2.0/0fd52580-06b9-40b3-af7c-582d9a4d12a7/Merino/ODataV4/Company(\'MERSAN\')/Valores_dimensi%C3%B3n?$filter=Dimension_Code%20eq%20\'ZONA\'';
		break;
		case 'registros_departamentos':
		$url = 'https://api.businesscentral.dynamics.com/v2.0/0fd52580-06b9-40b3-af7c-582d9a4d12a7/Merino/ODataV4/Company(\'MERSAN\')/Valores_dimensi%C3%B3n?$filter=Dimension_Code%20eq%20\'DPTO\'';
		break;
		case 'registros_instancia_nomina':
		$url = 'https://api.businesscentral.dynamics.com/v2.0/0fd52580-06b9-40b3-af7c-582d9a4d12a7/Merino/ODataV4/Company(\'MERSAN\')/EntradasDiario?$filter=Journal_Batch_Name%20eq%20\'NOMINA\'';
		break;
		case 'registros_plan_de_cuentas':
		$url = 'https://api.businesscentral.dynamics.com/v2.0/0fd52580-06b9-40b3-af7c-582d9a4d12a7/Merino/ODataV4/Company(\'MERSAN\')/PlanCuentas';
		break;
	}
	//url contra la que atacamos
	$ch = curl_init($url);

    //Generamos token
    $token = generate_token(); 

    $headers = array(
        'Authorization: Bearer '.$token.'',
        'Accept: application/json'
    );
    
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
    $response = curl_exec($ch);
    $result_api = json_decode($response, true);
    $info = curl_getinfo($ch);
    $error = curl_error($ch);
    curl_close($ch);

	return $resultados = [
		'datos-api' => $result_api
	];
}

function generate_token() {
    
    $url1 = 'https://login.microsoftonline.com/0fd52580-06b9-40b3-af7c-582d9a4d12a7/oauth2/v2.0/token';
    $headers = array('Accept: application/x-www-form-urlencoded');
    $data = array(
        'client_id' => 'bc6064cd-d32b-4437-9377-036a598ec420',
        'scope' => 'https://api.businesscentral.dynamics.com/.default',
        'grant_type' => 'client_credentials',
        //'client_secret' => 'Wrj8Q~cE3GSnMPeyFFlz6R47jVpWW8vbzX5xTa2e'
		'client_secret' => 'WIU8Q~y5X29mGvrKPn2c8GBz6cxqpcPBkmwnrafT'
    );
    
    $options = array(
        'http' => array(
            'header' => "Content-type: application/x-www-form-urlencoded\r\n",
            'method' => 'POST',
            'content' => http_build_query($data),
            'ignore_errors' => true
        )
    );
    
    $context = stream_context_create($options);
    $response = file_get_contents($url1, false, $context);
    //print ($response); /// esto se descomentarea para ver la respuesta recibida de la conexión
    $httpCode = explode(' ', $http_response_header[0])[1];
    if ($httpCode == 200) {
        $access_token = json_decode($response, true)['access_token'];
        return $access_token;
    } else {
        throw new Exception('Failed to generate token.');
    }
}

?>
</body>
</html>
