<?php

use PhpParser\Node\Stmt\Label;

Yii::app()->getClientScript()->registerCssFile(Yii::app()->getBaseUrl() . '/assets/vendor/datatables/css/dataTables.bootstrap4.css');  
Yii::app()->getClientScript()->registerCssFile(Yii::app()->getBaseUrl() . '/css/tabla-data.css');  

if(Yii::app()->user->hasState('success')){
   echo TbHtml::alert(TbHtml::ALERT_COLOR_SUCCESS, Yii::app()->user->getState('success'));
   Yii::app()->user->setState('success', null);
}

if(Yii::app()->user->hasState('warning_multas')){
   echo TbHtml::alert(TbHtml::ALERT_COLOR_WARNING, Yii::app()->user->getState('warning_multas'));
   Yii::app()->user->setState('warning_multas', null);
}

if(Yii::app()->user->hasState('warning')){
   echo TbHtml::alert(TbHtml::ALERT_COLOR_WARNING, Yii::app()->user->getState('warning'));
   Yii::app()->user->setState('warning', null);
}
?>

<div class="card">
	<?php if (count($mostrarDeclaracionesPendientes) > 0): ?>
		<div class="alert alert-secondary alert-dismissible fade show" role="alert">
			<button type="button" class="close" data-dismiss="alert" aria-label="Close">
				<span aria-hidden="true">×</span>
			</button>
			<h4 class="alert-heading"><i class="material-icons">info</i> Información</h4>
			<p>
				A partir del <span class="font-weight-bold">1 de abril dell 2022</span>, entra en vigencia la actualización de la LOCTI.
			</p>
			<p>
				El esquema que se describe a continuación:
			</p>
			<p>
				<span class="font-weight-bold">Manual</span>: se mostrará la lista de los meses pendientes por aportar, y deberá ingresar mes a mes la estimación de ingreso bruto, para que el sistema calcule el aporte mensual que deberá pagar.
			</p>
			
		</div>
		<div class="card-body">
			<div class="card-header"><h5 class="card-title text-center">Aportes Mensuales</h5></div>
			<div class="card-body">
				<div class="row">
					<div class="col-md-12">
						<div id="error-periodos"></div>
					</div>
				</div>
			<?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm', array(
				'id'=>'iniciar-flujo-form',
				// 'htmlOptions' => array(
				// 	'style'=> "display: none;",
				// ),
				'clientOptions' => array(
					'validateOnSubmit' => true,
					'afterValidate' => 'js:function(form, data, hasError) {
						$("#iniciar-flujo").addClass("btn-disabled");
						$("#iniciar-flujo").html("Creando declaración...");

						if(hasError){
							$("#iniciar-flujo").html("Enviar");
							$("#iniciar-flujo").removeClass("btn-disabled");
							return false;
						}else{
							return true;
						}
					}',
				),
			));
			?>
				<p>Esquema manual</p>
				<div class="row" id="declaracion-periodos">
					<div class="col-md-12">
						<div class="table-responsive">
							<table id="tablaPendientes" class="table table-striped table-bordered text-center" style="width:100%">
								<thead>
									<tr>
										<th class="text-center">Mes del Aporte</th>
										<th class="text-center">Monto</th>
										<th width="10%" class="text-center">Alícuota</th>
										<th class="text-center">Monto Requerido</th>
										<!-- <th class="text-center">Valor UT</th> -->
									</tr>
								</thead>
								<tbody>
									<?php foreach($mostrarDeclaracionesPendientes as $key => $declaracionPendiente): ?>
									<tr>
										<td>
											<?php 
											echo $declaracionPendiente["mes_anio"];
											echo $form->hiddenField($modelSave, 'fecha_inicio_gravable[]', array(
												'id' => 'fecha_inicio_'.$key,
												'value' => $declaracionPendiente["inicio"]
											));
											echo $form->hiddenField($modelSave, 'fecha_fin_gravable[]', array(
												'id' => 'fecha_fin_'.$key,
												'value' => $declaracionPendiente["fin"]
											));
											?>
										</td>
										<td><?php
											echo $form->telFieldControlGroup($modelSave, 'ingresos_brutos[]',
											array(
												'onkeypress' 	=> 'return soloMontosMensualCalcular(this, event, '.$key.')',
												'label' 		=> 'Ingreso Bruto Mensual *',
												'autocomplete' 	=> 'off',
												'maxlength' => 23,
												'id' => 'ingresos_brutos_'.$key,
											)) ?>
										</td>
										<td id="licuota_<?php echo $key?>"><?php echo $declaracionPendiente["alicuota"] ?></td>
										<td id="monto_requerido_<?php echo $key?>">0,00</td>
										<!-- <td><?php //echo $declaracionPendiente["ut"] ?></td> -->
									</tr>
									<?php endforeach; ?>
								</tbody>
							</table>
						</div>
					</div>
				</div>
				<div class='row'>
					<div class='col-12 text-center'>
						<?php 
						echo TbHtml::button('<i class="fas fa-check"></i> Declarar', 
							array(
								'color' 	=> TbHtml::BUTTON_COLOR_SECONDARY,
								'name'		=> 'iniciar_flujo',
								'id'		=> 'iniciar_flujo',
						))
						?>
					</div>
				</div>
				<!-- Modal Iniciar Flujo de trabajo -->
				<div class="modal fade" id="modalFlujoMensual" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true" data-backdrop="static">
					<div class="modal-dialog" role="document">
						<div class="modal-content">
							<div class="modal-header">
								<h4 class="modal-title text-center" id="exampleModalLongTitle">Confirmar</h4>
								<button type="button" class="close" data-dismiss="modal" aria-label="Close">
									<span aria-hidden="true">&times;</span>
								</button>
							</div>
							<div class="modal-body">
								¿Está seguro de iniciar el flujo de trabajo de este Empresa?<hr>
								<p>Por favor, verifique sí los datos son correctos.</p>
								<p id="monto-ingresos-brutos"></p>
							</div>
							<div class="modal-footer">
								<button type="button" class="btn btn-dark" data-dismiss="modal">Cerrar</button>
								<?php 
								echo TbHtml::submitButton('Aceptar', 
									array(
										'color' 		=> TbHtml::BUTTON_COLOR_SECONDARY, 
										'id' 			=> 'iniciar-flujo', 
										'name' 			=> 'iniciar-flujo',
										// 'data-dismiss'	=> "modal"
									)
								);
									?>
							</div>
						</div>
					</div>
				</div>
				<?php $this->endWidget();
			$form=$this->beginWidget('bootstrap.widgets.TbActiveForm', array(
				'id'=>'declaracion-mensual-anual-form',
				'clientOptions' => array(
					'validateOnSubmit' => true,
					'afterValidate' => 'js:function(form, data, hasError) {
						$("#declaracion-mensual-anual-submit").addClass("btn-disabled");
						$("#declaracion-mensual-anual-submit").html("Creando declaración...");

						if(hasError){
							$("#declaracion-mensual-anual-submit").html("Enviar");
							$("#declaracion-mensual-anual-submit").removeClass("btn-disabled");
							return false;
						}else{
							return true;
						}
					}',
				),
			));
			?>
				<?php if ($mostrarDeclaracionesPendientes[0]["first_year"] == 0): ?>
				<div class="row" id="declaracion-mensual-anual">
					<div class="col-md-12">
						<span style="font-size: 18px;color: black;">Aporte estimativo anual(Esquema anual):</span>
						<?php
						echo CHtml::checkBox('declaracion-mensual-anual-checkbox', false);
						?>
					</div>
					<div class="col-md-4"></div>
					<div class="col-md-4 declaracion-mensual-anual-field" style="display: none;">
						<?php 
						echo $form->telFieldControlGroup($modelSave, 'ingresos_brutos_estimado_anual', 
						array(
							'onkeypress' 	=> 'return soloMontos(this, event)', 
							'label' 		=> 'Ingresos Brutos Estimado Anual*',
							'autocomplete' 	=> 'off',
							'maxlength' => 23,
							'id' => 'ingresos_brutos_estimado_anual',
						));
						echo $form->hiddenField($modelSave, 'fecha_inicio_gravable[]', array(
							'id' => 'fecha_inicio',
							'value' => $mostrarDeclaracionesPendientes[0]["inicio"]
						)); ?>
					</div>
					<div class='col-md-2 text-center declaracion-mensual-anual-field' style="display: none;">
						<?php 
						echo TbHtml::button('<i class="fas fa-check"></i> Declarar', 
							array(
								'color' 	=> TbHtml::BUTTON_COLOR_SECONDARY,
								'name'		=> 'declaracion-mensual-anual-pre',
								'id'		=> 'declaracion-mensual-anual-pre',
						))
						?>
					</div>
				</div>
				<!-- Modal Declaración Estimada Anual -->
				<div class="modal fade" id="modalAnualEstimadaMensual" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true" data-backdrop="static">
					<div class="modal-dialog" role="document">
						<div class="modal-content">
							<div class="modal-header">
								<h4 class="modal-title text-center" id="exampleModalLongTitle">Confirmar</h4>
								<button type="button" class="close" data-dismiss="modal" aria-label="Close">
									<span aria-hidden="true">&times;</span>
								</button>
							</div>
							<div class="modal-body">
								¿Está seguro de iniciar el flujo de trabajo de este Empresa?<hr>
								<p>Por favor, verifique sí los datos son correctos.</p>
								<p id="monto-ingresos-brutos-anual"></p>
							</div>
							<div class="modal-footer">
								<button type="button" class="btn btn-dark" data-dismiss="modal">Cerrar</button>
								<?php 
								echo TbHtml::submitButton('Aceptar', 
									array(
										'color' 		=> TbHtml::BUTTON_COLOR_SECONDARY, 
										'id' 			=> 'declaracion-mensual-anual-submit', 
										'name' 			=> 'declaracion-mensual-anual-submit',
										// 'data-dismiss'	=> "modal"
									)
								);
									?>
							</div>
						</div>
					</div>
				</div>
				<?php endif; ?>
			<?php $this->endWidget();?>
			</div>
		</div>
	<?php
		if(Yii::app()->user->hasFlash('error')) {
			Yii::app()->clientScript->registerScript("error",'
			var alert = mensaje_alerta("<b>¡Ups!</b> '.Yii::app()->user->getFlash('error').'", "danger");
			$("#error-periodos").html(alert);
			');
		}
		Yii::app()->clientScript->registerScript("validar",'
		$(\'#declaracion-mensual-anual-checkbox\').click(function() {
			if(this.checked) {
				$(".declaracion-mensual-anual-field").each((index, element) => {
					$(element).show("slow");
				})
				$("#iniciar-flujo-form").each((index, element) => {
					$(element).slideUp();
				})
			} else {
				$(".declaracion-mensual-anual-field").each((index, element) => {
					$(element).slideUp();
				})
				$("#iniciar-flujo-form").each((index, element) => {
					$(element).show("slow");
				})
			}
		});

		$(\'#iniciar_flujo\').click(function() {
			$("#modalFlujoMensual").modal("show");
			const tam = '.count($mostrarDeclaracionesPendientes).'
			$("#iniciar-flujo").addClass("btn-disabled");

			if(tam > 0){
				var permite = true;

				// Valida que los campos no estén vacíos.
				for(var i = 0; i < tam ; i++) {
					var ingresos_brutos = $("#ingresos_brutos_"+i).val();
					// var ciiu_porcentaje = $("#ciiu_porcentaje_"+i).val();

					if(ingresos_brutos == "" || ingresos_brutos == null ) {
						permite = false;
						break;
					}
				}

				if(!permite) {
					// Se crea la animación hacia los periodos gravable.
					// $(\'html, body\').animate({scrollTop: $("#declaracion-periodoss").offset().top}, 1000); 

					var alert = mensaje_alerta("<b>¡Ups!</b> Revise nuevamente los campos requeridos.", "warning");

					$("#error-periodos").html(alert);
					$(\'#modalFlujoMensual\').modal(\'hide\')
				}


				$("#monto-ingresos-brutos").html("");

				if(permite) {
					let fi = "", ff = "", ib = "";
					for(var i = 0; i < tam; i++) {
						if(i == (tam - 1)) {
							ib 		+= $("#ingresos_brutos_"+i).val();
							fi		+= $("#fecha_inicio_"+i).val();
							ff		+= $("#fecha_fin_"+i).val();
						} else {	
							ib 		+= $("#ingresos_brutos_"+i).val() + "||";
							fi		+= $("#fecha_inicio_"+i).val() + "||";
							ff		+= $("#fecha_fin_"+i).val() + "||";
						}
					}

					$.ajax({
						url 		: "'.$this->createUrl('declaracion/mostrarIngresosBrutos').'",
						type 		: "POST",
						data 		: {
										ingresos_brutos : ib,
										fechas_inicio : fi,
										fechas_fin : ff,
									},
						success : function(respuesta){
							try {
								respueta = JSON.parse(respuesta);
								var alert = mensaje_alerta(respueta.error, "warning");

								$("#error-periodos").html(alert);
								$(\'#modalFlujoMensual\').modal(\'hide\')
							} catch (e) {
								if(respuesta != ""){
									$(\'#iniciar-flujo\').removeClass(\'btn-disabled\');
								}
								$("#monto-ingresos-brutos").html(respuesta);
							}
						},
					})
				}
			}else{// Significa que la Empresa se constituyó en el año actual
				//$(\'#iniciar-flujo\').attr("disabled", false);
			}
		})

		$(\'#declaracion-mensual-anual-pre\').click(function() {
			$("#modalAnualEstimadaMensual").modal("show");
			const tam = '.count($mostrarDeclaracionesPendientes).'
			$("#declaracion-mensual-anual-submit").addClass("btn-disabled");

			if(tam > 0) {
				var permite = true;
				var ingresos_brutos_estimado_anual = $("#ingresos_brutos_estimado_anual").val();

				if(ingresos_brutos_estimado_anual == "" || ingresos_brutos_estimado_anual == null ) {
					permite = false;
				}

				if(!permite) {
					// Se crea la animación hacia los periodos gravable.
					// $(\'html, body\').animate({scrollTop: $("#declaracion-periodoss").offset().top}, 1000); 

					var alert = mensaje_alerta("<b>¡Ups!</b> Revise nuevamente los campos requeridos.", "warning");

					$("#error-periodos").html(alert);
					$(\'#modalAnualEstimadaMensual\').modal(\'hide\')
				}


				$("#monto-ingresos-brutos-anual").html("");

				if(permite) {
					let fi = "", ff = "", ib = "", fi_anual = "";
					ib 		+= $("#ingresos_brutos_estimado_anual").val();
					fi		+= $("#fecha_inicio").val();
					ff		+= $("#fecha_fin").val();
					fi_anual += "'.$mostrarDeclaracionesPendientes[0]["inicio"].'"

					$.ajax({
						url 		: "'.$this->createUrl('declaracion/mostrarIngresosBrutos').'",
						type 		: "POST",
						data 		: {
										ingresos_brutos: ib,
										estimado_anual: fi_anual
									},
						success : function(respuesta){
							try {
								respueta = JSON.parse(respuesta);
								var alert = mensaje_alerta(respueta.error, "warning");

								$("#error-periodos").html(alert);
								$(\'#modalAnualEstimadaMensual\').modal(\'hide\')
							} catch (e) {
								if(respuesta != ""){
									$(\'#declaracion-mensual-anual-submit\').removeClass(\'btn-disabled\');
								}
								$("#monto-ingresos-brutos-anual").html(respuesta);
							}
						},
					})
				}
			}else{// Significa que la Empresa se constituyó en el año actual
				//$(\'#declaracion-mensual-anual-submit\').attr("disabled", false);
			}
		})
		', CClientScript::POS_END);
		/* endif;  */

	else: ?>
		<div class="card-body">
			<div class="alert alert-secondary alert-dismissible fade show" role="alert">
				<button type="button" class="close" data-dismiss="alert" aria-label="Close">
					<span aria-hidden="true">×</span>
				</button>
				<h4 class="alert-heading"><i class="material-icons">info</i> Mensaje de no Aportante</h4>
				<p>
					A partir del <span class="font-weight-bold">1 de abril dell 2022</span>, entra en vigencia la actualización de la LOCTI, con la que el aportamte tendra disponible dos esquemas de aporte, para el pago de su declaración.
				</p>
				<p>
					Los esquemas se describen a continuación:
				</p>
				<p>
					<span class="font-weight-bold">Manual</span>: se mostrará la lista de los meses pendientes por aportar, y deberá ingresar mes a mes la estimación de ingreso bruto, para que el sistema calcule el aporte mensual que deberá pagar.
				</p>
				<p>
					<span class="font-weight-bold">Automática (estimación anual)</span>: se mostrará un campo para que usted coloque el estimado anual de ingresos brutos y el sistema automáticamente, calculará el aporte correspondiente anual para luego dividir el mismo, en 12 aportes mensuales.
				</p>
			</div>
		</div>
	<?php endif; 

	if($mostrarDeclaraciones != ''): ?>

		<div class="card-body">
			<div class="card-header"><h5 class="card-title text-center">Descarga</h5></div>
			<div class="card-body">
				<p>Descarga en los enlaces mostrados a continuación, el detalle de los planes de pagos por periodos anuales</p>
				<?php foreach($links as $link) : ?>
				<a target="_blank" class="btn-sm btn btn-secondary" href="<?php echo Yii::app()->request->baseUrl.'/declaracion/lista_pago?fechas='.$link[2] ?>" title="Descargar anual"><?php echo $link[0]." ".$link[1]?> <i class="material-icons">cloud_download</i></a>
				<?php  endforeach; ?>
			</div>
		</div>
	
		<div class="card-body">
			<div class="alert alert-secondary alert-dismissible fade show" role="alert">
				<button type="button" class="close" data-dismiss="alert" aria-label="Close">
					<span aria-hidden="true">×</span>
				</button>
				<h4 class="alert-heading"><i class="material-icons">info</i> Información</h4>
				<p>
					A continuación los montos de los Aportes requeridos seleccionados solo son referenciales.
				</p>
				<p>
					Al momento de efectuar el registro del pago, se abonará el mismo a los aportes de los meses mas <span class="font-weight-bold">antiguos</span> de la deuda.
				</p>
				<!-- <p>
					A partir del <span class="font-weight-bold">1 de abril dell 2022</span>, entra en vigencia la actualización de la LOCTI, con la que el aportamte tendra disponible dos esquemas de aporte, para el pago de su declaración.
				</p>
				<p>
					Los esquemas se describen a continuación:
				</p>
				<p>
					<span class="font-weight-bold">Manual</span>: se mostrará la lista de los meses pendientes por aportar, y deberá ingresar mes a mes la estimación de ingreso bruto, para que el sistema calcule el aporte mensual que deberá pagar.
				</p>
				<p>
					<span class="font-weight-bold">Automática (estimación anual)</span>: se mostrará un campo para que usted coloque el estimado anual de ingresos brutos y el sistema automaticamente, calculará el aporte correspondiente anual para luego dividir el mismo, en 12 aportes mensuales.
				</p> -->
			</div>
			<div class="card-header"><h5 class="card-title text-center">Consulta de Aportes Mensuales</h5></div>
			<div class="card-body">
				<div class="row">
					<div class="col-12">
						<div id="mensajes"></div>
					</div>
				</div>
				<div class="row mb-3">
					<div class="col-8 d-flex">
						<h4>Monto aportes seleccionados:</h4>
						<!-- <p class="ml-1" style="padding-top: 0.4rem!important"><strong id="montoAportesSelecionados">0,00</strong></p> -->
						<p class="ml-1 h4"><strong id="montoAportesSelecionados">0,00</strong></p>
					</div>
					<div class="col-4">
						<?php if ($pagoPendiente == false): ?>
							<div class="row mr-2">
								<p class="ml-auto d-flex h4"><strong>Registrar Pago</strong></p>
							</div>
							<div class="row mr-2">							
								<button onclick='gestionarCodigos(this)' style='padding: 8px' type='button' class='btn btn-info ml-auto d-flex' data-toggle='modal' data-target='#agregarPago' title='Registrar Pago' ><i class='material-icons'>account_balance_wallet</i></button>
							</div>
						<?php endif; ?>
					</div>				
				</div>
				<div class="row">
					<div class="col-md-12">
						<!-- <div id="mensajes"></div> -->
						<div id="credito_fiscal"></div>
						<div class="table-responsive">
							<table id="tabla" class="table table-striped table-bordered text-center" style="width:100%">
								<thead>
									<tr>
										<th width="0%" class="text-center">Seleccione</th>
										<th class="text-center">Mes del Aporte</th>
										<th class="text-center">Código</th>
										<th class="text-center">Aporte Requerido</th>
										<th class="text-center">Fecha Tope Pago</th>
										<!-- <th class="text-center">Ingreso Bruto</th> -->
										<th class="text-center">Estatus</th>
										<th width="19%" class="text-center">Acciones</th>
									</tr>
								</thead>
								<tbody>
									<?php echo $mostrarDeclaraciones; ?>
								</tbody>
								<!-- Lo datos son traidos desde "obtenerDatos" del controlador -->
								<tfoot>
									<tr>
										<th class="text-center"></th>
										<th class="text-center">Mes del Aporte</th>
										<th class="text-center">Código</th>
										<th class="text-center">Aporte Requerido</th>
										<th class="text-center">Fecha Tope Pago</th>
										<!-- <th class="text-center">Ingreso Bruto</th> -->
										<th class="text-center">Estatus</th>
										<th width="19%" class="text-center">Acciones</th>
									</tr>
								</tfoot>
							</table>
						</div>
					</div>
				</div>
			</div>
		</div>

		<div class="card-body">
		<div class="card-header"><h5 class="card-title text-center">Aportes Mensuales pagos</h5></div>
		<div class="card-body">
			<div class="row">
				<div class="col-md-12">
					<div id="mensajes"></div>
					<div class="table-responsive">
						<table id="pagos" class="table table-striped table-bordered text-center" style="width:100%">
							<thead>
								<tr>
									<th class="text-center">Código</th>
									<th class="text-center">Declaraciones Asociadas</th>
									<th class="text-center">Aporte</th>
									<th class="text-center">Fecha Declaración</th>
									<th class="text-center">Estatus</th>
									<th width="19%" class="text-center">Acciones</th>
								</tr>
							</thead>
							<tbody>
								<?php foreach($pagos as $pago) {
								$fecha = FuncionesController::convertirFecha($pago["decl_fechapago"], "dd/mm/yyyy");
								$moneda = FuncionesController::obtenerMoneda($pago["decl_fechapago"]);
								$monto = number_format($pago["decl_monto"], 2, ",", ".");
								$monto = $moneda." ".$monto;
								$estatus = "Rechazado";
								$acciones = "";
								if($pago["decl_pago_aceptado"] == 1) {
									$estatus = "Aceptado";
									$acciones .= '<a target="_blank" class="btn-sm btn btn-secondary" href="'.Yii::app()->request->baseUrl.'/declaracion/comprobante_pago_mensual/'.$pago['deta_codigo_pk'].'" title="Descargar comprobante pago"><i class="material-icons">cloud_download</i></a>';
								} else if($pago["decl_pago_aceptado"] === null) {
									$estatus = "En revisión";
								}
								?>
								<tr>
									<td class="align-middle">
										<?php echo $pago["deta_codigo_pk"] ?>
									</td>
									<td class="align-middle">
										<?php echo implode(", ", explode(",", $pago["codigo_declaraciones"])) ?>
									</td>
									<td class="align-middle">
										<?php echo $monto ?>
									</td>
									<td class="align-middle">
										<?php echo $fecha ?>
									</td>
									<td class="align-middle">
										<?php echo $estatus ?>
									</td>
									<td class="align-middle">
										<?php echo $acciones ?>
									</td>
								</tr>
								<?php } ?>
							</tbody>
							<!-- Lo datos son traidos desde "obtenerDatos" del controlador -->
							<tfoot>
								<tr>
									<th class="text-center">Código</th>
									<th class="text-center">Declaraciones Asociadas</th>
									<th class="text-center">Aporte</th>
									<th class="text-center">Fecha Declaración</th>
									<th class="text-center">Estatus</th>
									<th width="19%" class="text-center">Acciones</th>
								</tr>
							</tfoot>
						</table>
					</div>
				</div>
			</div>
		</div>
		</div>
	<?php endif; ?>
</div>

<?php
// MODAL Detalles de la multa
$this->renderPartial('_modal-detalles-multas');
  
// MODAL Comprobante de pago
$this->renderPartial('_modal-comprobante');

// MODAL Detalle de la declaración mensual
$this->renderPartial('_modal-detalles-declaracion-mensual');

$this->renderPartial("_pago_mensual", array('pagoSave' => $pagoSave));
?>

<?php  
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . '/assets/vendor/datatables/js/jquery.dataTables.js', CClientScript::POS_END);
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . '/assets/vendor/datatables/js/dataTables.bootstrap4.js', CClientScript::POS_END);

if(Yii::app()->user->hasFlash('mensaje-error')) {
	Yii::app()->clientScript->registerScript("error",'
	var alert = mensaje_alerta("<b>¡Ups!</b> '.Yii::app()->user->getFlash('mensaje-error').'", "danger");
	$("#mensajes").html(alert);
	');
}

if(Yii::app()->user->hasFlash('credito_fiscal')) {
	Yii::app()->clientScript->registerScript("error",'
	var alert = mensaje_alerta("'.Yii::app()->user->getFlash('credito_fiscal').'", "danger");
	$("#mensajes").html(alert);
	');
}

if(Yii::app()->user->hasFlash('mensaje-success')) {
	Yii::app()->clientScript->registerScript("error",'
	var alert = mensaje_alerta("'.Yii::app()->user->getFlash('mensaje-success').'", "success");
	$("#mensajes").html(alert);
	');
}

Yii::app()->clientScript->registerScript("tabla",'
	$(document).ready(function() {
	    $("#tabla").DataTable({
			language: {
	            "sProcessing":     "Procesando...",
	            "sLengthMenu":     "Mostrar _MENU_ registros",
	            "sZeroRecords":    "No se encontraron resultados",
	            "sEmptyTable":     "No hay datos.",
	            "sInfo":           "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
	            "sInfoEmpty":      "Mostrando registros del 0 al 0 de un total de 0 registros",
	            "sInfoFiltered":   "(filtrado de un total de _MAX_ registros)",
	            "sInfoPostFix":    "",
	            "sSearch":         "Buscar:",
	            "sUrl":            "",
	            "sInfoThousands":  ",",
	            "sLoadingRecords": "Cargando...",
	            "oPaginate": {
	                "sFirst":    "Primero",
	                "sLast":     "Último",
	                "sNext":     "Siguiente",
	                "sPrevious": "Anterior"
	            },
	            "oAria": {
	                "sSortAscending":  ": Activar para ordenar la columna de manera ascendente",
	                "sSortDescending": ": Activar para ordenar la columna de manera descendente"
	            },
	            "buttons": {
	                "copy": "Copiar",
	                "colvis": "Visibilidad"
	            }
	        },
			"order": [[ 2, "asc" ]],
			//oculto la columna acciones
			columnDefs: [
				{ targets: [6], visible: false } 
			]
	    });
	} );
	$(document).ready(function() {
	    $("#pagos").DataTable({
			language: {
	            "sProcessing":     "Procesando...",
	            "sLengthMenu":     "Mostrar _MENU_ registros",
	            "sZeroRecords":    "No se encontraron resultados",
	            "sEmptyTable":     "No hay datos.",
	            "sInfo":           "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
	            "sInfoEmpty":      "Mostrando registros del 0 al 0 de un total de 0 registros",
	            "sInfoFiltered":   "(filtrado de un total de _MAX_ registros)",
	            "sInfoPostFix":    "",
	            "sSearch":         "Buscar:",
	            "sUrl":            "",
	            "sInfoThousands":  ",",
	            "sLoadingRecords": "Cargando...",
	            "oPaginate": {
	                "sFirst":    "Primero",
	                "sLast":     "Último",
	                "sNext":     "Siguiente",
	                "sPrevious": "Anterior"
	            },
	            "oAria": {
	                "sSortAscending":  ": Activar para ordenar la columna de manera ascendente",
	                "sSortDescending": ": Activar para ordenar la columna de manera descendente"
	            },
	            "buttons": {
	                "copy": "Copiar",
	                "colvis": "Visibilidad"
	            }
	        },
			"order": [[ 0, "desc" ]]
	    });
	} );
');
?>
<script>
let monto_aportar = 0;
const credito = <?php echo $credito ?>;
let credito_first = true;
const pagado = <?php echo $pagado ?>;
let pagado_first = true;
function agregarMonto(element, monto) {
	/*if(element.checked) {
		monto_aportar += monto
	} else {
		monto_aportar -= monto
	}*/
	//console.log(element);
	let aportesSeleccionados = document.querySelectorAll('input[type="checkbox"][name="pago"]:checked');
	
	gestionarCodigos(element.id);
	monto_aportar = sumaMontos(aportesSeleccionados);
	
	if(monto_aportar == 0 ){
		monto_aportar = "";	
	}

	if(credito > 0) {
		if(monto_aportar < 0) {
			monto_aportar += credito
			credito_first = true
		} else if (credito_first === true) {
			//monto_aportar -= credito
			credito_first = false
		}
	}
	if(pagado > 0) {
		if(monto_aportar < 0) {
			monto_aportar += pagado
			pagado_first = true
	} else if (credito_first === true) {
		if(monto_aportar > 0 ){
			//monto_aportar -= pagado
		}
			pagado_first = false
		}
	}	
	
	const formated = number_format(monto_aportar, 2, ",", ".")
	if(monto_aportar == ""){	
		document.getElementById("montoApagar").innerHTML = "";
	}else{
		document.getElementById("montoApagar").innerHTML = formated
	}
	
	$('label[for="SidcaiDeclaracionDetalle_decl_monto"]').html("Monto ("+formated+")")
	// document.getElementById("SidcaiDeclaracionDetalle_decl_monto").value = formated
}

function gestionarCodigos(codigo) {
	var formModal = document.getElementById("agregar-pago-form");
	let aportesSeleccionados = document.querySelectorAll('input[type="checkbox"][name="pago"]:checked');
	//console.log(codigo);
	if(aportesSeleccionados.length > 0){
		aportesSeleccionados.forEach(aporte => {
			//console.log(aporte.id);
			let input = formModal.querySelector(`input#\\${aporte.id}`);
			if (input !== null){
				//console.log('existe');
			}else{
				//console.log('no existe');
			}
		});
	}else{
		//console.log(codigo);
	}
}

function sumaMontos(aportesSeleccionados) {
	let total = 0.00;
	let montoAS = document.getElementById("montoAportesSelecionados");
	if (aportesSeleccionados.length != 0) {
		aportesSeleccionados.forEach(aporte => {
			const onclickValue = aporte.getAttribute('onclick');
			if (onclickValue) {
				const matches = onclickValue.match(/agregarMonto\(.*,\s*([0-9.]+)/);
				if (matches && matches.length > 1) {
					const valor = parseFloat(matches[1]);
					total += valor;
				}
			}
		});

		/* if(credito > 0) {
			total -= credito;
		}

		if(pagado > 0) {
			total -= pagado;
		} */

		montoAS.textContent = number_format(total, 2, ",", ".");
	}else{
		montoAS.textContent = number_format(total, 2, ",", ".");
	}

	return total;
}

function number_format (number, decimals, dec_point, thousands_sep) {
    // Strip all characters but numerical ones.
    number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}


function soloMontosMensualCalcular(boton, e, key_licuota, quitarDecimales = false){
	var campo = boton.id;
	var input = $('#' + campo).val();
  	var key = window.event ? e.which : e.keyCode;

	if(key < 48 || key > 57) {
	    e.preventDefault();
	}

	$("#" + campo).on({
	    "keyup": function (event) {
	        $(event.target).val(function (index, value ) {
				licuota = Number(document.getElementById("licuota_"+key_licuota).innerHTML)
	        	if(quitarDecimales){
					valor = value.replace(/\D/g, "")	
	                        .replace(/\B(?=(\d{3})+(?!\d)\.?)/g, ".");
					valorCalcular = valor
					valorLicuota = (Number(valorCalcular.replace(/\./g, "").replace(/,/g, ".")) * licuota / 100).toFixed(2).toString().replace(/\D/g, "")
	                        .replace(/([0-9])([0-9]{2})$/, '$1,$2')
	                        .replace(/\B(?=(\d{3})+(?!\d)\.?)/g, ".")
					document.getElementById("monto_requerido_"+key_licuota).innerHTML = valorLicuota
	        		return valor
	        	}else{
					valor = value.replace(/\D/g, "")
	                        .replace(/([0-9])([0-9]{2})$/, '$1,$2')
	                        .replace(/\B(?=(\d{3})+(?!\d)\.?)/g, ".");
					valorCalcular = valor
					valorLicuota = (Number(valorCalcular.replace(/\./g, "").replace(/,/g, ".")) * licuota / 100).toFixed(2).toString().replace(/\D/g, "")
	                        .replace(/([0-9])([0-9]{2})$/, '$1,$2')
	                        .replace(/\B(?=(\d{3})+(?!\d)\.?)/g, ".")
					document.getElementById("monto_requerido_"+key_licuota).innerHTML = valorLicuota
	            	return valor
	        	}
	        });
	    }
	});
}
</script>
