<?php 
//$cn = mysql_connect( "localhost", "root", "" );
//$cn = mysql_connect( "localhost", "petcente_pc", "U897hhy@@oo1" );
//mysql_select_db( "petcente_pc" );

define( 'SF_ROOT_DIR', "C:\\wamp\\www\\pc\\" );
//Obtener un sql que se forme para upload un excel
//define('SF_ROOT_DIR', "/home/petcenter/public_html/pc/");
define( 'SF_APP',      'sys' );
//[IdAlmacen Antiguo] => [IdNuevoSucursal], [IdNuevoAlmacen]

$a_sucursales_almacen_equiv['1']  = array('IdNuevoSucursal' => 1,  'IdNuevoAlmacen' => 'ALM00001');
$a_sucursales_almacen_equiv['2']  = array('IdNuevoSucursal' => 2,  'IdNuevoAlmacen' => 'ALM00003');
$a_sucursales_almacen_equiv['3']  = array('IdNuevoSucursal' => 7,  'IdNuevoAlmacen' => 'ALM00007');
$a_sucursales_almacen_equiv['4']  = array('IdNuevoSucursal' => 15, 'IdNuevoAlmacen' => 'ALM00015');
$a_sucursales_almacen_equiv['6']  = array('IdNuevoSucursal' => 14, 'IdNuevoAlmacen' => 'ALM00014');
$a_sucursales_almacen_equiv['7']  = array('IdNuevoSucursal' => 4,  'IdNuevoAlmacen' => 'ALM00004');
$a_sucursales_almacen_equiv['8']  = array('IdNuevoSucursal' => 9,  'IdNuevoAlmacen' => 'ALM00009');
$a_sucursales_almacen_equiv['9']  = array('IdNuevoSucursal' => 6,  'IdNuevoAlmacen' => 'ALM00006');
$a_sucursales_almacen_equiv['10'] = array('IdNuevoSucursal' => 5,  'IdNuevoAlmacen' => 'ALM00005');
$a_sucursales_almacen_equiv['11'] = array('IdNuevoSucursal' => 12, 'IdNuevoAlmacen' => 'ALM00012');
$a_sucursales_almacen_equiv['12'] = array('IdNuevoSucursal' => 11, 'IdNuevoAlmacen' => 'ALM00011');
$a_sucursales_almacen_equiv['13'] = array('IdNuevoSucursal' => 10, 'IdNuevoAlmacen' => 'ALM00010');
$a_sucursales_almacen_equiv['14'] = array('IdNuevoSucursal' => 8,  'IdNuevoAlmacen' => 'ALM00008');

require_once( SF_ROOT_DIR.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'configGlobal.php' );

//CLASES INTERNAS
set_memory_max_time();

$IdCompania                 = 1;
$FechaDocumento             = "2016-06-30";
$IdTransaccionOperacion     = "I";
$IdAlmacen                  = ""; //ALMACEN ORIGEN --- DINAMICO
$IdTransaccion              = "STI"; //
$AlmacenTraslado            = ""; //ALMACEN DE DESTINO
$IdTipoDocumento            = "NI";

$ReferenciaTipoDocumento    = "NI";
$ReferenciaSerieDocumento   = "1"; //
$ReferenciaNumeroDocumento  = "1"; //

$s_SerieDocumentoFiscal     = str_pad( $ReferenciaSerieDocumento, 4, "0", STR_PAD_LEFT );
$s_NumeroDocumentoFiscal    = str_pad( $ReferenciaNumeroDocumento, 8, "0", STR_PAD_LEFT );

$Comentario                 = ""; //
$TipodeCambio               = GSS_TipoCambioFN::getTipoCambioValor();

$o_Base_ALM_TransaccionCabeceraBN = new ALM_TransaccionCabeceraBN();
$o_Base_ALM_TransaccionCabeceraBN->setIdTransaccion( $IdTransaccion );
$o_Base_ALM_TransaccionCabeceraBN->setAlmacenTraslado( $AlmacenTraslado );
$o_Base_ALM_TransaccionCabeceraBN->setIdAlmacen( $IdAlmacen );
$o_Base_ALM_TransaccionCabeceraBN->setIdTransaccionOperacion( $IdTransaccionOperacion );
$o_Base_ALM_TransaccionCabeceraBN->setFechaDocumento( $FechaDocumento );
$o_Base_ALM_TransaccionCabeceraBN->setTipodeCambio( floatval( $TipodeCambio ) );

$o_Base_ALM_TransaccionCabeceraBN->setReferenciaTipoDocumento( $ReferenciaTipoDocumento );
$o_Base_ALM_TransaccionCabeceraBN->setReferenciaNumeroDocumento( $ReferenciaNumeroDocumento );

$o_Base_ALM_TransaccionCabeceraBN->setIdCompania( $IdCompania );
$o_Base_ALM_TransaccionCabeceraBN->setIdTipoDocumento( $IdTipoDocumento );
$o_Base_ALM_TransaccionCabeceraBN->setComentario( $Comentario );

$o_Base_ALM_TransaccionCabeceraBN->setTipoDocumentoFiscal( $ReferenciaTipoDocumento );
$o_Base_ALM_TransaccionCabeceraBN->setSerieDocumentoFiscal( $s_SerieDocumentoFiscal );
$o_Base_ALM_TransaccionCabeceraBN->setNumeroDocumentoFiscal( $s_NumeroDocumentoFiscal );
/////////////////

if( isset( $_POST['control'] ) )
{
    if( $_FILES['file_importar'] ) 
    {
        $archivo = explode( ".", $_FILES['file_importar']['name'] );
        $extension = $archivo[1];
        //No es archivo csv
        if( $extension != "csv" )
        {
            echo "<SCRIPT>alert( 'Debe de seleccionar un archivo con extensión .csv !!' ); window.close();</SCRIPT>";
            return "3";
        }
    }
    
    $IGV = 0.18;
    $time = rand( 1, 10000 );
    $s_Carpeta = "documentos/";
    $s_NombreArchivo = "archivo_trx_".$time.".csv";
    
    if ( !is_dir( $s_Carpeta ) )
    {
          mkdir( $s_Carpeta, 0777 );
    }
    
    $s_DirArchivo = $s_Carpeta."archivo_trx_".$time.".csv";
    if( move_uploaded_file( $_FILES['file_importar']['tmp_name'], $s_DirArchivo ) )
    {
        $a_Data = array();
        $fp = fopen ( $s_DirArchivo, "r" );
        //El id del producto antiguo esta en el campo NumeroDeParte 
        while ( $datos = fgetcsv ( $fp, 1000, "," ) )
        {
            $IdEmpresa = 1;
            $IdAlmacenAntiguo         = trim( $datos[0] ); //Id Antiguo Almacen
            $IdProductoAntiguo        = trim( $datos[1] ); //Id Producto
            $ProductoDescrip          = trim( $datos[2] ); //Id Producto
            
            $PrecioCostoAntiguo       = floatval( trim( $datos[3] ) ); //Id Precio Costo Antiguo
            $PrecioPorUtilidadAntiguo = floatval( trim( $datos[4] ) ); //Stock Utilidad Precio Antiguo
            $PrecioConAntiguo         = floatval( trim( $datos[5] ) ); //Precio Final Antiguo
            
            $StockInicialAntiguo      = trim( $datos[6] ); //Stock Incial Antiguo
            
            $o_ALM_ItemMastBN = ALM_ItemMastFN::buscarItemObjxNumdeParte( $IdProductoAntiguo );
            
            if( $o_ALM_ItemMastBN )
            {
                $IdNuevoSucursal = $a_sucursales_almacen_equiv[$IdAlmacenAntiguo]['IdNuevoSucursal']; //Nueva Sucursal
                $IdNuevoAlmacen  = $a_sucursales_almacen_equiv[$IdAlmacenAntiguo]['IdNuevoAlmacen']; //Precio Nuevo
                
                if( $PrecioCostoAntiguo )
                {
                    $f_PrecioSinIGV  = utilMath::fnround( $PrecioConAntiguo / ( 1 + $IGV ), 2 );
                    $f_MontoGanancia = $f_PrecioSinIGV - $PrecioCostoAntiguo;
                    $f_PorceUtilidad = utilMath::fnround( ( $f_MontoGanancia * 100 ) / $PrecioCostoAntiguo, 2 );
                    //pr( "Costo[$PrecioCostoAntiguo] - PorceUtil[$f_PorceUtilidad] - PrecioSinIGV[$f_PrecioSinIGV] - PrecioConIGV[$PrecioConAntiguo] " );
                    
                    $a_DataItem = array( 
                                            "Cantidad"      => floatval( $StockInicialAntiguo ),
                                            "IdItem"        => $o_ALM_ItemMastBN->getIdItem(),
                                            "Lote"          => "000",
                                            "FechaVenci"    => date( "Y-m-d" ),
                                            "UniMed"        => "58",
                                            "Costo"         => $PrecioCostoAntiguo,
                                            "Porcentaje"    => $f_PorceUtilidad,
                                            "PrecioFinal"   => $f_PrecioSinIGV,
                                        );
                    $a_Data[$IdNuevoAlmacen][] = $a_DataItem; 
                    $a_LstItem[$o_ALM_ItemMastBN->getIdItem()] = $a_DataItem;
                }
            }
        }
        
        //pr( $a_Data );
        $con = Conexion::getConexion();
        $con->begin();
        try
        {
            foreach ( $a_Data as $s_Almacen => $a_DataValores )
            {
                pr( "---------------------------------------------------------------------------------------------------------------------" );
                pr( "---------------------------------------------------------------------------------------------------------------------" );
                $o_ALM_TransaccionCabeceraBN = clone $o_Base_ALM_TransaccionCabeceraBN;
                
                pr( $s_Almacen." : " );
                $o_ALM_TransaccionCabeceraBN->setIdAlmacen( $s_Almacen );
                
                $a_MovientoDetalle = array();
                foreach ( $a_DataValores as $i_Key => $a_Valores )
                {
                    $o_ALM_TransaccionDetalleBN = new ALM_TransaccionDetalleBN();
                    $o_ALM_TransaccionDetalleBN->setIdItem( $a_Valores['IdItem'] );
                    $o_ALM_TransaccionDetalleBN->setCantidad( $a_Valores['Cantidad'] );
                    $o_ALM_TransaccionDetalleBN->setLote( $a_Valores['Lote'] );
                    $o_ALM_TransaccionDetalleBN->setFechaVencimientoLote( $a_Valores['FechaVenci'] );
                    $o_ALM_TransaccionDetalleBN->setUnidadCodigo( $a_Valores['UniMed'] );
                    
                    $a_MovientoDetalle[] = $o_ALM_TransaccionDetalleBN;
                }
                
                $o_ALM_TransaccionCabeceraBN->setArrayMovientoDetalle( $a_MovientoDetalle );
    
                $o_MovimientoBL = new MovimientoBL();
                $o_MovimientoBL->GuardarMovientoTransaccion( $o_ALM_TransaccionCabeceraBN );
                
                $i_Id = $o_ALM_TransaccionCabeceraBN->getIdTransaccionCabeceraConcat();
                pr( "Transaccion Id: ".$i_Id );
                
                //AHORA SE REGISTRA LOS PRECIOS:
                foreach ( $a_sucursales_almacen_equiv as $i_Key => $a_SucuAlm )
                {
                    pr( "---------------------------------------------------------------------------------------------------------------------" );
                    pr( $a_SucuAlm );
                    foreach ( $a_DataValores as $i_Key => $a_Valores )
                    {
                        $o_DefaultDP = new MST_ListaPrecioDetalleDP();
                        $o_DefaultDP->setIdCompania( 1 );
                        $o_DefaultDP->setIdSucursal( ( int ) $a_SucuAlm['IdNuevoSucursal'] );
                        $o_DefaultDP->setIdItem( $a_Valores['IdItem'] );
                        $o_DefaultDP->setFechaInicio( date( "Y-m-d" ) );
                        $o_DefaultDP->setFechaFin( date( "Y-m-d" ) );
                        $o_DefaultDP->setPrecioCosto( $a_Valores['Costo'] );
                        $o_DefaultDP->setPorcentajeUtilidad( $a_Valores['Porcentaje'] );
                        $o_DefaultDP->setPrecioVenta( $a_Valores['PrecioFinal'] );
                        $o_DefaultDP->setEstado( "A" );
                        $o_DefaultDP->setFechaCreacion( date( "Y-m-d H:i:s" ) );
                        $o_DefaultDP->setUsuarioCreacion( "wtaype" );
                        $o_DefaultDP->setFechaModificacion( date( "Y-m-d H:i:s" ) );
                        $o_DefaultDP->setUsuarioModificacion( "wtaype" );
                        $b_Result = $o_DefaultDP->save();
                        pr( "Item[{$a_Valores['IdItem']}] - Costo[{$a_Valores['Costo']}] - PorceUtil[{$a_Valores['Porcentaje']}] - PrecioSinIGV[{$a_Valores['PrecioFinal']}] " );
                    }
                    pr( "---------------------------------------------------------------------------------------------------------------------" );
                }
            }
            //AHORA SOLO SE ACTUALIZA EL COSTO POR ITEM
            pr( "---------------------------------------------------------------------------------------------------------------------" );
            pr( "---------------------------------------------------------------------------------------------------------------------" );
            foreach ( $a_LstItem as $s_IdItem => $a_Item )
            {
                pr( $s_IdItem.": " );
                //AHORA EL DETALLE DEL PRODUCTO
                $o_ALM_ItemMastFN = new ALM_ItemMastFN();
                $o_ALM_ItemMastBN = $o_ALM_ItemMastFN->selectByPK( $s_IdItem );
                if( $o_ALM_ItemMastBN )
                {
                    $o_ALM_ItemMastDP = new ALM_ItemMastDP();
                    $o_ALM_ItemMastDP->setIdItem( $s_IdItem );
                
                    $o_ALM_ItemMastDP->setIdMarca( $o_ALM_ItemMastBN->getIdMarca() );
                    $o_ALM_ItemMastDP->setIdItemTipo( $o_ALM_ItemMastBN->getIdItemTipo() );
                    $o_ALM_ItemMastDP->setIdLinea( $o_ALM_ItemMastBN->getIdLinea() );
                    $o_ALM_ItemMastDP->setIdFamilia( $o_ALM_ItemMastBN->getIdFamilia() );
                
                    $o_ALM_ItemMastDP->setPrecioCosto( $a_Item['Costo'] );
                    $o_ALM_ItemMastDP->setUtilidadPorcentaje( $a_Item['Porcentaje'] );
                    $o_ALM_ItemMastDP->setPrecioVenta( $a_Item['PrecioFinal'] );
                    $o_ALM_ItemMastDP->setUsuarioModificacion( "wtaype" );
                    $o_ALM_ItemMastDP->setFechaModificacion( date( "Y-m-d H:i:s" ) );
                    $b_Result = $o_ALM_ItemMastDP->update();
                    pr( "Item[{$a_Item['IdItem']}] - Costo[{$a_Item['Costo']}] - PorceUtil[{$a_Item['Porcentaje']}] - PrecioSinIGV[{$a_Item['PrecioFinal']}] " );
                }
            }
            
            $con->commit();
        }
        catch ( Exception $o_Exception )
        {
            $con->rollback();
            pr( $o_Exception->getMessage() );
        }
    }
}
/*

$s_SQLQuery = "SELECT *";
$s_SQLQuery .= "FROM ALM_AlmacenMast WHERE 1 limit 0,2";
$o_SQLResult = mysql_query( $s_SQLQuery, $o_Resource );

 while ( $a_SQLRow = mysql_fetch_object( $o_SQLResult ) )
{
    print_r($a_SQLRow);
    echo "<br>";
    echo "<br>";
}


$s_SQLQuery = "SELECT *";
$s_SQLQuery .= "FROM cr_prestamo WHERE 1 limit 0,2";
$o_SQLResult = mysql_query( $s_SQLQuery, $o_Resource2 );

 while ( $a_SQLRow = mysql_fetch_object( $o_SQLResult ) )
{
    print_r($a_SQLRow);
    echo "<br>";
    echo "<br>";
}
echo "ok";
*/
?>
<form id="form1" name="form1" method="POST" enctype="multipart/form-data">
      <input type="hidden" name="control" value="1">
        <table hspace="20px" class="marco" width="96%">
          <tr>
            <td valign="top" colspan="2">
        
              <table width="100%" border="0" cellpadding="5" cellspacing="0" style="background:#E1E1E1">
                  <tr>
                      <td height="0">
                      <fieldset>
                        <legend class="fielsettex"><I>Datos Generales</I></legend>
                         <table width="100%" border="0" cellspacing="6" cellpadding="0">
                              <tr>
                                    <td nowrap="nowrap" width="8%" class="cabecera"><label class="label req" for="txtfile_importar" >Archivo a Importar</label></td>
                                    <td nowrap="nowrap" width="38%"><input class="text required" type="file" name="file_importar" id="file_importar" size="60"/></td>
                                    <td nowrap="nowrap" width="8%" class="cabecera">&nbsp;</td>
                              </tr>
                        </table>
                        </fieldset>                
                    </td>
          </tr>
                <tr>
                      <td height="0" width="100%">
                   
                         <table width="100%" border="0" cellspacing="5" cellpadding="0">
                       </table>
                       <table width="100%" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td><img src="/images/common/spacer.gif" width="10"></td>
                     </tr>
                        <tr>
                         <td align="center">
                          <input type="hidden" name="typeSubmit" id="typeSubmit">
                          <input class="button" type="submit" value="Grabar" onclick="$('typeSubmit').value='list';">
                           <input class="button" type="button" value="Cancelar" onclick="parent.objMainTab.windowsCloseAll();"/>
                          </td>
                        </tr>
                        <tr>
                    <td height="10">&nbsp;</td>
                 </tr>
                </table>
                </fieldset>
                   </td>
                </tr>
                <tr>
                    </table>
                    
                </form>
            <script type="text/javascript">
                var valid = new Validation('form1', {immediate : true});
            </script>
            </td>
              </tr>
        </table>