<link rel="stylesheet" type="text/css" media="screen" href="https://cdn.datatables.net/responsive/2.2.5/css/responsive.bootstrap4.min.css" />
<link rel="stylesheet" type="text/css" media="screen" href="https://cdn.datatables.net/1.10.21/css/dataTables.bootstrap4.min.css" />
<link rel="stylesheet" type="text/css" media="screen" href="https://cdn.datatables.net/fixedheader/3.1.7/css/fixedHeader.dataTables.min.css" />

<!--<link rel="stylesheet" type="text/css" media="screen" href="https://cdn.datatables.net/1.10.21/css/jquery.dataTables.min.css" />-->

<script type="text/javascript" src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.10.21/js/dataTables.bootstrap4.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/responsive/2.2.5/js/dataTables.responsive.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/responsive/2.2.5/js/responsive.bootstrap4.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/fixedheader/3.1.7/js/dataTables.fixedHeader.min.js"></script>

<?php use_helper( 'UrlFunctions' ); ?>
<?php use_helper( 'IncludePartial' ); ?>
<?php use_helper( 'UtilFunctions' ); ?>

<?php if( $ControlSubmit ){ ?>
    <?php if( $error_sistema ){ ?>
    <p style="color:red;"><b><?=$mensaje_error?> Se tiene que ingresar los datos nuevamente por seguridad.</b></p>
    <?php } ?>
    <script>
<?php if( !$error_sistema ){ ?>
    parent.recargarPagina( '<?=$id_trans?>' );
    <?php } ?>
    </script>
<?php } ?>

<style type="text/css">
.ui-dialog .ui-dialog-titlebar-close 
{
    position: absolute;
    right: .3em;
    top: 50%;
    width: 20px;
    margin: -10px 0 0 0;
    padding: 1px;
    height: 20px;
    background-position: -96px -128px;
    /*background-image: url("images/ui-icons_056b93_256x240.png");*/
    background-image: url("<?=Constantes::ROOT_DIR_APP?>web/css/jquery/themes/start_1.12.1/images/ui-icons_056b93_256x240.png");
}
</style>

<script>
validacionCantidad = function()
{
    var b_Control = true;
    var a_elm = $( '#content_nvo' ).find( "input[name='Cantidad[]']" );
    if( a_elm.length > 0 )
    {
        $.each
        ( 
            a_elm, 
            function( index, o_elm ) 
            {
                var v_CantValue = o_elm.value;
                if( v_CantValue == "" )
                {
                    alert( "Cantidad vacia." );
                    b_Control = false;
                    return false;
                }
                if( !$.isNumeric( v_CantValue ) )
                {
                    alert( "Cantidad no valida." );
                    b_Control = false;
                    return false;
                }
                i_Cant = parseFloat( v_CantValue );
                if( i_Cant < 1 )
                {
                    alert( "La cantidad ingresada no debe ser menor a 1." );
                    b_Control = false;
                    return false;
                }            
            }
        );
    }
    else
    {
        alert( "Se debe de registrar detalles para guardar." );
        b_Control = false;
    }
    console.log( b_Control );
    return b_Control;
}
validacionDetalles = function()
{
    var b_Control = true;
    b_Control = validacionCantidad();
    console.log( b_Control );
    return b_Control;
}
validacionExtra = function()
{
    var b_Control = true;
    b_Control = validacionDetalles();
    console.log( b_Control );
    return b_Control;
}
ejecutarGuardar = function()
{
    //VALIDACIONES
    if( $( "#SerieDocumentoFiscal" ).val() == "" )
    {
        mostrarMensajeError( "Debe ingresar el numero de Serie del Proveedor." );
        $( "#SerieDocumentoFiscal" ).focus()
        return false;
    }
    if( $( "#NumeroDocumentoFiscal" ).val() == "" )
    {
        mostrarMensajeError( "Debe ingresar el Numero de Proveedor." );
        $( "#NumeroDocumentoFiscal" ).focus()
        return false;
    }
    if( !validacionExtra() )
    {
        return false;
    }
    //AHORA UNA NUEVA VALIDACION, SELECCION DE NUMERO DE FACTURA
    var a_elm = $( "#content_asociar_fact input:checkbox:checked" );
    if( a_elm.length < 1 )
    {
        //mostrarMensajeError( "Debe de seleccionar una Factura para asociar la Recepcion." );
        //return false;
    }

    //FIN VALIDACIONES
    
    var div= $( '<div></div>' );
    div.html( "<label style='color:red;font-weight: bold;'>Esta Seguro de realizar la Recepción, Haz comparado el producto fisico con el documento del Proveedor?</label>" )
    .dialog
    (
        {
            title: "",
            resizable: false,
            width  : 470, 
            height : 350,
            modal  : true,
            closeOnEscape: false,
            open: function() { $(".ui-dialog-titlebar-close").hide(); },
            buttons: 
            [
                {
                    id    : "submit_btn",
                    text  : "ACEPTAR",
                    click : function () 
                    {
                        var markup = '<img src="<?php echo Constantes::ROOT_DIR_IMG ?>common/progress.gif" border="0"/>&nbsp;<label class="laber req">Procesando...</label>';
                        $( this ).html( markup );
                        
                        $( "#submit_btn" ).prop( "disabled", true );
                        $( "#cancelar_btn" ).prop( "disabled", true );
                        blockContent( "submit_btn" );
                        blockContent( "cancelar_btn" );
                        mostrarCargaImg();
                        
                        $( '#form1' ).submit();
                    }
                },
                {
                    id    : "cancelar_btn",
                    text  : "CANCELAR",
                    click : function () 
                    {
                        $( this ).dialog( 'close' );
                    }
                }
            ]
        }
    );
}
</script>
<style>
/*div.growlUI { background: url( check48.png ) no-repeat 10px 10px }*/
div.growlUI h1, div.growlUI h2 { color: white; padding: 0; text-align: center; }
</style>

<?=crearFuentePopupIframe( array( "div_id"=>"dialog", "iframe_id"=>"myIframe", "popup_title"=>"Asociar Factura", "modal"=>true ) )?>

<script type="text/javascript">
asociarDocumentoFactura = function()
{
    var guia_serie  = $( "#SerieDocumentoFiscal" ).val().trim();
    var guia_numero = $( "#NumeroDocumentoFiscal" ).val().trim();

    if( guia_serie == "" || guia_numero == "" )
    {
    	showAlertBootStrap( 'content_alert', 'alert-danger', "Guia de Proveedor: Serie y el N&uacute;mero esta vac&iacute;o." );
    	return false;
    }

    if( $( "#IdOrdenGuia" ).length )
    {
    	showAlertBootStrap( 'content_alert', 'alert-danger', "Actualmente se tiene asociado un Documento." );
    	return false;
    }

    var s_pad_serie  = padLeft( guia_serie, 4 );
    var s_pad_numero = padLeft( guia_numero, 10 );
    
	var url_param  = "?FlagFactura=1&TipoProc=nvo&secuencia=<?=$secuencia?>&IdDet=<?=$s_IdConcat?>_" + s_pad_serie + "_" + s_pad_numero;
    pr( url_param );
	$( '#myIframe' ).attr( 'src', '<?=buildUrl( 'asoguias/asociarFact' )?>' + url_param );
    $( '#dialog' ).dialog( 'open' );
}
findControl = function( o_Json )
{
	$( "#SecuenciaSerieRef" ).val( o_Json.secuencia );
	$( "#SerieFacturaRef" ).val( o_Json.fact_serie );
	$( "#NumeroFacturaRef" ).val( o_Json.fact_numero );
	
	buscarFacturaAsociada();
}
eliminarFacturaProv = function( id_doc )
{
    x = confirm( "Esta seguro de eliminar?" );
    if( x )
    {
    	blockContent( "content_asociar_fact" );
    	var str_serialize = "TipoProc=eliminarFacturaxNroGuia&id=" + id_doc;
    	executeAjaxJson
        ( 
            "<?php echo buildUrl( 'recepcion/request' ) ?>", 
            str_serialize,
            function( o_json )
            {
            	unBlockContent( "content_asociar_fact" );
                if( o_json.error )
                {
                    mostrarMensajeError( o_json.mensaje_error );
                    return false;
                }
                buscarFacturaAsociada();
            }
        );
    }
}
buscarFacturaAsociada = function()
{
    var guia_serie  = $( "#SerieDocumentoFiscal" ).val().trim();
    var guia_numero = $( "#NumeroDocumentoFiscal" ).val().trim();

    if( guia_serie == "" || guia_numero == "" )
    {
    	return false;
    }
    
    var s_pad_serie  = padLeft( guia_serie, 4 );
    var s_pad_numero = padLeft( guia_numero, 10 );
    
    blockContent( "content_asociar_fact" );
    //mostrarCargaImg();
    var str_serialize = "TipoProc=BuscarFacturaxNroGuia&IdDet=<?=$s_IdConcat?>_" + s_pad_serie + "_" + s_pad_numero;
    executeAjaxUpdater
    (
        "content_asociar_fact",
        "<?php echo buildUrl( 'recepcion/request' ) ?>", 
        str_serialize,
        function( o_json )
        {
            unBlockContent( "content_asociar_fact" );
            //ocultarCargaImg();
            //console.log( o_json );
            validarSecuenciaFactura();
            agregarEventoChecks()
        }
    );
}
validarSecuenciaFactura = function()
{
    var i_Secuencia = $( "#SecuenciaSerieRef" ).val();
    var a_elms = $( "#content_asociar_fact input:checkbox" );
    console.log( a_elms );
    a_elms.each
    (
        function( key, elm )
        {
            var s_Value = $( elm ).val();
            if( i_Secuencia == s_Value )
            {
                console.log( elm );
                $( elm ).prop( "checked", true );
            }
        }
    );
}
agregarEventoChecks = function()
{
    $( "#content_asociar_fact input:checkbox" ).on
    (
        'change', 
        function() 
        {
            $( '#content_asociar_fact input:checkbox' ).not(this).prop( 'checked', false );  
        }
    );
}

buscarReceiptDet = function()
{
	blockContent( "contentido_detalle" );
    var str_serialize = "";
    executeAjaxUpdater
    (
        "contentido_detalle",
        "<?php echo buildUrl( 'recepcion/receiptDet', "id_concat=$i_Id&secuencia=$secuencia" ) ?>", 
        str_serialize,
        function( o_json )
        {
        }
    );
}
actualizarDetalleSerie = function( item_cod, cant_ref  )
{
    blockContent( "content_nvo" );
    var str_serialize = "TipoProc=actualizardetalleserie&id=<?=$o_COM_OrdenCompraCabeceraBN->getIdOrdenCompra()?>&almacen=<?=$o_COM_OrdenCompraCabeceraBN->getIdAlmacenEntrega()?>&fecha=<?=$o_COM_OrdenCompraCabeceraBN->getFechaCreacion()?>&cant_ref=" + cant_ref + "&item_cod=" + item_cod;
    executeAjaxJson
    ( 
        "<?php echo buildUrl( 'recepcion/request' ) ?>", 
        str_serialize,
        function( o_json )
        {
            unBlockContent( "content_nvo" );
            if( o_json.error )
            {
                mostrarMensajeError( o_json.mensaje_error );
                return false;
            }
        }
    );
}
</script>

<form class="" name="form1" id="form1" method="POST" action="">
    <input type="hidden" name="ControlSubmit" id="ControlSubmit" value="ok"/>
    <input type="hidden" name="s_TipoProc" id="s_TipoProc" value="<?=$s_TipoProc?>">
    <input type="hidden" name="TypeSub" id="TypeSub" value="1">
    <input type="hidden" name="i_Id" id="i_Id" value="<?=$o_COM_OrdenCompraCabeceraBN->getIdOrdenCompraConcat()?>">
    
    <input type="hidden" name="CodigoProveedor" id="CodigoProveedor" value="<?=$o_COM_OrdenCompraCabeceraBN->getIdProveedor()?>">
    <input type="hidden" name="ReferenciaTipoDocumento" value="<?=COM_OrdenCompraCabeceraBN::REF_TIPO_DOCUMENTO_DEFECTO?>">
    <input type="hidden" name="ReferenciaNumeroDocumento" id="ReferenciaNumeroDocumento"  value="<?=$o_COM_OrdenCompraCabeceraBN->getIdOrdenCompra()?>"/>

    <div class="card">
        <div class="card-body pb-1">
    
            <div class="form-row mx-0">
                <div class="col-md-6 mb-1">
                    <label class="col-form-label" for="FechaDocumento">Fecha Recepcion</label>
                    <input type="text" class="form-control" name="FechaDocumento" id="FechaDocumento" value="<?=date( "Y-m-d" )?>" />
                    <script>
                    $( "#FechaDocumento" ).datepicker( { dateFormat: "yy-mm-dd", changeYear:true, yearRange: "-0:+1", changeMonth: true, onClose: function (){ this.focus(); } } );
                    </script>
                </div>
                <div class="col-md-6 mb-1">
                    <label class="col-form-label" for="">Almacen</label>
                    <input type="hidden" name="IdAlmacen" value="<?=$o_COM_OrdenCompraCabeceraBN->getIdAlmacenEntrega()?>">
                    <select class="form-control" name="" id="" style="width: 90%" disabled="disabled">
                        <option value=""> - Seleccione - </option>
                        <?php foreach ( $a_ALM_AlmacenMast as $i_Key => $o_ALM_AlmacenMastBN ){ ?>
                        <option value="<?=$o_ALM_AlmacenMastBN->getIdAlmacen()?>" <?php if( $o_COM_OrdenCompraCabeceraBN->getIdAlmacenEntrega()==$o_ALM_AlmacenMastBN->getIdAlmacen() ){ echo "SELECTED"; } ?>> <?=$o_ALM_AlmacenMastBN->getDescripcionLocal()?> </option>
                        <?php } ?>
                    </select>
                </div>
            </div>
            <div class="form-row mx-0">
                <div class="col-md-6 mb-1">
                    <label class="col-form-label" for="">Tipo Transaccion</label>
                    <input type="hidden" name="IdTransaccion" value="<?=COM_OrdenCompraCabeceraBN::TRANSACCION_X_DEFECTO?>">
                    <select class="form-control" disabled>
                        <option value=""> - Seleccione - </option>
                            <?php foreach ( $a_ALM_TransaccionMast as $i_Key => $o_ALM_TransaccionMastBN ){ ?>
                        <option value="<?=$o_ALM_TransaccionMastBN->getIdTransaccion()?>" <?php if( COM_OrdenCompraCabeceraBN::TRANSACCION_X_DEFECTO == $o_ALM_TransaccionMastBN->getIdTransaccion() ){ echo "SELECTED"; } ?>> <?=utf8_encode( $o_ALM_TransaccionMastBN->getDescripcionLocal() )?> </option>
                            <?php } ?>
                    </select>
                </div>
                
                <div class="col-md-6 mb-1 ">
                    <label class="col-form-label" for="SerieDocumentoFiscal">Guia de Proveedor</label>
                    <div class="input-group">
                        
                            <input type="hidden" name="TipoDocumentoFiscal" id="TipoDocumentoFiscal" value="GR">
                            
                            <input type="text" class="form-control" name="SerieDocumentoFiscal" id="SerieDocumentoFiscal" autocomplete="off" onfocus="this.select();" onkeypress="return NumCheckEntero( event, this );" style="text-align:center;"
                                    placeholder="Serie"
                                    />
                                
                            <input type="text" class="form-control" name="NumeroDocumentoFiscal" 
                                    id="NumeroDocumentoFiscal" style="text-align:center;" onfocus="this.select();" onblur=""  autocomplete="off" onkeypress="return NumCheckEntero( event, this );"
                                    placeholder="Numero"
                                    />
                            <!--buscarFacturaAsociada();-->
                        
                    </div>
                        
                </div>
            </div>
            <div class="form-row mx-0">
                <div class="col-md-6 mb-1">
                    <label class="col-form-label" for="Comentario">Comentario</label>
                    <textarea class="form-control"  name="Comentario" id="Comentario"  rows="1"></textarea>
                </div>
            </div>
            
        </div>
    </div>

    <table class="table table-striped table-bordered" width="100%">
        <tr>
            <td><label>*Importante: <b>Ingrese cantidad a recepcionar</b></label></td>
            <td align="right"> <input type="button" class="button" value="Predeterminado" onclick="buscarReceiptDet();"> </td>
            <?php if( $b_MostrarSerie ){ ?>
                <td align="right"> <input type="button" class="button" value="Escanear Series" onclick="ingresarPreSerie('');"> </td>
            <?php } ?>
        </tr>
    </table>
    
    <div id="content_alert" style=""></div>
     
    <div class="table-responsive" id="contentido_detalle">
    
        <table class="table table-striped table-bordered" width="100%">
            <thead id="">
                <tr>
                    <th width="2%"  align="center"><b>No</b></th>
                    <th width="5%" align="center"><b>C&oacute;digo</b></th>
                    <!-- <th width="5%" align="center"><b>CodBarras</b></th> -->
                    <th width="30%" align=""><b>Descripci&oacute;n</b></th>
                    
                    <?php if( $b_MostrarColumnLote ){ ?>
                    <th width="5%" align="center" nowrap><b>Nro Lote</b></th>
                    <th width="5%" align="center"><b>Fecha Vencimiento</b></th>
                    <?php } ?>
                    
                    <th width="5%" align="center"><b>Stock Actual</b></th>
    
                    <th width="8%" align="center"><b>Cant.<br>Pedida</b></th>
                    <th width="8%" align="center"><b>Pend.<br>Recibir</b></th>
                    
                    <th width="10%" align="center"><b>Cantidad</b></th>
                    
                    <th width="8%" align="center"><b>Precio Inc Igv<br>Inicial</b></th>
                    <th width="8%" align="center"><b>Precio Inc Igv<br>Final</b></th>
                </tr>
            </thead>
            <tbody id="content_nvo">

            </tbody>
              
        </table>
        
    </div>

</form>
    
<div class="text-center mt-2">
    <button class="btn btn-primary text-center" type="button" onclick="parent.closeWindow();">Cancelar</button>
    <button class="btn btn-primary text-center" type="button" onclick="ejecutarGuardar();">Grabar</button>
    <div id="s_ImagenLoad" style="display: none;"><img src="<?php echo Constantes::ROOT_DIR_APP ?>web/images/progress.gif" border="0"/>&nbsp;<label class="laber req">Procesando...</label></div>
</div> 
    
<?=crearPopupResumenStock( array( "name_function"=>"buscarResumenStock" ) )?>

<?=crearFuentePopupIframe( array( "div_id"=>"dialog_serie", "iframe_id"=>"myIframe_serie", "popup_title"=>"Ingresar Series", "modal"=>true ) )?>

<script>
buscarSerieEscaneado = function( id_orden, id_orden_det )
{
	mostrarCargaImg();
    var str_serialize = "TipoProc=get_cant_serie&id_orden=" + id_orden + "&id_orden_det=" + id_orden_det;
    executeAjaxJson
    ( 
        "<?php echo buildUrl( 'recepcion/request' ) ?>", 
        str_serialize,
        function( o_json )
        {
            ocultarCargaImg();
            console.log( o_json );
            if( o_json.error )
            {
                mostrarMensajeError( o_json.mensaje_error );
                return false;
            }
            $( "#td_" + id_orden_det ).html( o_json.cantidad );
        }
    );
}
ingresarPreSerie = function( secuencia, elm )
{
    $( '#myIframe_serie' ).attr( 'src', '<?=buildUrl( 'recepcion/asociarSerie', 'id='.$IdOrdenCompra )?>' );
    $( '#dialog_serie' ).dialog( 'open' );
}

actualizarPrecioDetalle = function( IdTransferencia, IdSecuencia, PrecioOld, PrecioNvo )
{
    if( PrecioOld != PrecioNvo )
    {
        mostrarCargaImg();
        var str_serialize = "TipoProc=UpdateLinePrecio&IdOrdenCompra=" + IdTransferencia + "&IdSecuencia=" + IdSecuencia + "&Precio=" + PrecioNvo ;
        executeAjaxJson
        ( 
            "<?php echo buildUrl( 'recepcion/request' ) ?>", 
            str_serialize,
            function( o_json )
            {
                ocultarCargaImg();
                console.log( o_json );
                if( o_json.error )
                {
                    mostrarMensajeError( o_json.mensaje_error );
                    return false;
                }
            }
        );
    }
}

buscarStockActualxNumLote = function( num_lote, id_item, tr_id )
{
    if( num_lote != "" )
    {
    	mostrarCargaImg();
        
    	var id_stock_actual = tr_id + "_StockActual";
        
    	var id_almacen = $( "#IdAlmacen" ).val();
        executeAjaxJson
    	( 
            '<?php echo buildUrl( 'recepcion/request' ) ?>', 
            'TipoProc=getStockxLote&IdLote=' + num_lote + '&IdAlmacen=' + id_almacen + '&IdItem=' + id_item, 
            function( o_json )
            {
            	ocultarCargaImg();
                
                console.log( o_json );
                if( o_json.error )
                {
                    mostrarMensajeError( o_json.mensaje_error );
                    return false;
                }
                $( "#" + id_stock_actual ).html( o_json.stockactual );
            }
        );
    }
}

buscarSerieH = function()
{
	executeAjaxJson
	( 
		'<?php echo buildUrl( 'recepcion/request' ) ?>', 
        'TipoProc=validar_serie&id=<?=$IdOrdenCompra?>&secuencia=<?=$secuencia?>', 
        function( o_json )
        {
            console.log( o_json );
            if( o_json.error )
            {
                mostrarMensajeError( o_json.mensaje_error );
                return false;
            }
        }
    );
}

<?php if( $b_MostrarSerie ){ ?>
    <?php if( !$ControlSubmit ){ ?>
buscarSerieH();
    <?php } ?>
<?php } ?>
</script>
<script type="text/javascript">
$( ".grid td input:text" )
.keydown
(
    function ( e ) 
    {
        //console.log( e.keyCode );
        if( e.keyCode == 86 ){ return true; } //PEGAR
        if( e.keyCode == 67 ){ return true; } //COPIAR
        if( e.keyCode == 123 ){ return true; }  //F12
        if( e.keyCode == 109 ){ return true; }  //-
        //if( e.keyCode == 116 ){ return true; } //RECARGAR PAGINA
        if ( $.inArray( e.keyCode, [46, 8, 9, 27, 13, 110] ) !== -1 || ( e.keyCode == 65 && ( e.ctrlKey === true || e.metaKey === true ) ) ||  ( e.keyCode >= 35 && e.keyCode <= 40 ) ) 
        {
            return;
        }
        if ( ( e.shiftKey || ( e.keyCode < 48 || e.keyCode > 57 ) ) && ( (e.keyCode < 96 || e.keyCode > 105) && e.keyCode !=  190) )
        {
            e.preventDefault();
        }
    }
)
.blur
(
    function( obj )
    {
    	if( $( obj.target ).hasAttr( 'cantref' ) ) 
        {
    		if( $( obj.target ).val() != "" )
            {
                var i_cant    = parseInt( $( obj.target ).val() );
                var i_cantref = parseInt( $( obj.target ).attr( "cantref" ) );
                if( i_cant > i_cantref )
                {
                    $( obj.target ).val( "" );
                    $( obj.target ).focus();
                    $.growlUI( '', 'La cantidad es mayor a lo pedido' ); 
                }
            }
        }
    }
);

buscarReceiptDet();
</script>

<?php if( !$b_AccesoVista ){ ?>
<script>
alert( "<?=$s_MensajeError?>" );
parent.closeWindow();
</script>
<?php } ?>
<script type="text/javascript">
$('#example').DataTable
(
    {
        language: { "url": "//cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Spanish.json" },
        responsive: { details: true },
        searching: false,
        info:     false,
        lengthChange: false,
        //paging:   false,
        dom: 'lrtip',
        fixedHeader: 
        {
            header: true,
            footer: true
        }
    }
);
</script>

