<?php
include("../conexion/conexion.php");
include("../conexion/contabilidad.php");
include("../conexion/turnos.php");


class carguefactura{

 function __construct()
 {
    $conn=new conexion();
    $this->conectar=$conn->conectar();

 }
                          
public function contabili($bodega,$tipoMovimiento,$valor,$numeroMoimiento,$nit,$valorgasto,$observacion,$excento,$excluido,$base19,$iva19,$base5,$iva5,$fechaM,$valorMovimiento,$otroiva,$baseotro,$ivaipc,$baseipc,$excentoCos,$excluidoCos,$base5Cos,$iva5Cos,$base19Cos,$iva19Cos,$otroivaCos,$baseotroCos,$tarjetas,$credito,$trasferencias,$contado,$retencionComp=0,$descuCompra=0,$tipoRete=0){

   

    contabilidad($bodega,$tipoMovimiento,$valor,$numeroMoimiento,$nit,$valorgasto,$observacion,$excento,$excluido,$base19,$iva19,$base5,$iva5,$fechaM,$valorMovimiento,$otroiva,$baseotro,$ivaipc,$baseipc,$excentoCos,$excluidoCos,$base5Cos,$iva5Cos,$base19Cos,$iva19Cos,$otroivaCos,$baseotroCos,$tarjetas,$credito,$trasferencias,$contado,0,0,$retencionComp,$descuCompra,$tipoRete);

}

public function consulnumfactur($factura,$provedor,$bodega){

    $numfactc= $this->conectar->query(" SELECT * FROM `factcompra` WHERE factcompra='$factura' and provedor='$provedor' and idbodegaCo=$bodega"); 
    
    if($numfactura=mysqli_fetch_object($numfactc)){

        return true;
          


    }else{
        return false;

    }

}

 public function buscliente($provedor){

       
        $consulta=" select * from clientes where cedula='$provedor'";     
        $resultado=$this->conectar->query($consulta);
        if( $fila=mysqli_fetch_object($resultado)){
            return true;
        }else{
            return false;
        }


    }
public function facturacompra($factura,$provedor,$base5,$iva5,$exento,$iva19,$base19,$total,$fecha,$excluido,$tipoCompra,$bodega,$usuarioA,$otroiva,$baseotro,$retencionComp=0,$descuCompra=0,$tarjetas=0){

$totalCom=$total+$descuCompra;


    $ejecutarr=$this->conectar->prepare("INSERT INTO `factcompra`(`factcompra`, `provedor`, `base5`, `iva5`,
    `exento`, `iva19`, `base19`, `totalcompra`, `fechacompra`,`excluido`,`CompCredicto`,`idbodegaCo`,`usuariofc`,`fturno`,`otroiva`, `baseotroiva`,`retencion`,`otroDato`)  VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
    $ejecutarr->bind_param("ssssssssssssssssss",$factura,$provedor,$base5,$iva5,$exento,$iva19,$base19,$totalCom,$fecha,$excluido,$tipoCompra,$bodega,$usuarioA,$GLOBALS["turno"],$otroiva,$baseotro,$retencionComp,$descuCompra);
   $resul= $ejecutarr->execute();

    if($resul==true){
        return true;
        
    }else{
        return false;
    }
    
    


}
    
public function productoscompra($fila,$factura,$fecha,$provedor,$fechaActaRecep,$bodega,$usuarioA,$preciosTodos,$ordemCompra="No"){

   
    
    $ubicacionP="sin";
    foreach($fila as $valor) {
       
        $costopromedio=0;
                                        
        $codigo=$valor["Codigo"];
        $nombre=$valor["Nombre"];
        $caja=str_replace(' ', '',$valor["Cantida_caja"]);
        $frcc=str_replace(' ', '',$valor["Cantida_frcc"]);
        $precio=str_replace(' ', '',$valor["total"]);
        $iva=str_replace(' ', '',$valor["iva"]);  
        $tipoiva=str_replace(' ', '',$valor["tipo"]);   
        $base=str_replace(' ', '',$valor["Base"]); 
        $costocaja=str_replace(' ', '',$valor["costocaja"]); 
        $costofrcc=str_replace(' ', '',$valor["costofrcc"]); 

        $lote=str_replace(' ', '',$valor["lote"]);
        $fvencimiento=$valor["FVencimiento"];
        $Rinvima=$valor["Rinvima"];
        $Einvima=$valor["Einvima"];
        $observacion=$valor["Observac"];

        $ventaCaja=str_replace(' ', '',$valor["ventaCaja"]);
        $ventaFrcc=str_replace(' ', '',$valor["ventaFrcc"]);

        $ventaCaja2=str_replace(' ', '',$valor["ventaCaja2"]);
        $ventaFrcc2=str_replace(' ', '',$valor["ventaFrcc2"]);
        $precioblister=str_replace(' ', '',$valor["precioblister"]);
        $ubicacionP=$valor["ubicacion"];


        $utilidadCaja2=str_replace(' ', '', $valor["utilidadCaja2"]);
        $utilidadFrcc2=str_replace(' ', '',$valor["utilidadFrcc2"]);
        $precioCaja3=str_replace(' ', '',$valor["precioCaja3"]);
        $precioFrcc3=str_replace(' ', '',$valor["precioFrcc3"]);
        $utilidadCaja3=str_replace(' ', '',$valor["utilidadCaja3"]);
        $utilidadFrcc3=str_replace(' ', '',$valor["utilidadFrcc3"]);



        //utilidad caja, borrar tambien del la consulta update las dos ultimas
        $utilidadcaja=$valor["utilcaja"];
        $utilidadfrcc=$valor["utilifrcc"];





        if(!is_numeric($precioCaja3)){
            $precioCaja3=0;
        }
        if(!is_numeric($precioFrcc3)){
            $precioFrcc3=0;
        }
        


        if(!is_numeric($precioblister)){
            $precioblister=0;
        }



        if( $frcc==""|| $frcc==" "){
            $frcc=0;
        }
        if( $caja=="" || $caja==" "){
             $caja=0;
        }

   

        $consulta="SELECT * FROM `productos` INNER JOIN inventarios on productos.codigo=inventarios.codigoProd where codigo ='$codigo' AND idbodega=$bodega";     
        $resultado=$this->conectar->query($consulta);     

       if( $fi=mysqli_fetch_object($resultado)){   

        $inventario=str_replace(' ', '',$fi->inventario);
        $costoactual=str_replace(' ', '',$fi->costocaja);
        

       
        $costoPromedioactual=$fi->costopromediocaja;
         //calculo de costo promedio
         $pendinteLlegar=trim($fi->pendientellegar);
         if(!is_numeric($pendinteLlegar)){
            $pendinteLlegar=0;
          }
         
  //anexar german
        if(!is_numeric($costoactual)){
            $costoactual=0;
        }

       


        if(!is_numeric($costoPromedioactual)){
            $costoPromedioactual=0;
        }
        if(!is_numeric($caja)){
            $caja=0;
        }
        if(!is_numeric($frcc)){
            $frcc=0;
        }
        if($inventario==""|| $inventario=="NULL" ||$inventario==" "){
            $inventario=0; 
        }
        if(!is_numeric($costocaja)){
            $costocaja=0;
        }
        if(!is_numeric($costofrcc)){
            $costofrcc=0;
        }
        if(!is_numeric($ventaFrcc)){
            $ventaFrcc=0;
        }

        // if($inventario < 0 || $inventario < "0" ){
        //     $inventario=0;
        //  }
              
//fin anexar german

        
         if($costoactual==""||$costoactual==" "){
            $costoactual=0;
         }
         if(  $costoPromedioactual==""||  $costoPromedioactual==" "){
            $costoPromedioactual=0;
         }

         

         $valorinventarioactual=$inventario*$costoPromedioactual;
         $valointariocargue=$caja*$costocaja;
         $totalinventario=$inventario+$caja;

          $todalInv= $totalinventario;

        //   if($totalinventario <=0 ||$totalinventario <="0" ){
        //     $todalInv=$caja;
        //   }
         
        //  if($caja==0){
        //     $costopromedio=$costoPromedioactual;
        //  }else{
        //     $costopromedio=round(($valorinventarioactual+$valointariocargue)/$todalInv,0);


        //  }
         
        if ($caja == 0 || $totalinventario == 0) {
            // Sin nuevo cargue o total cero: mantener costo actual
            $costopromedio = $costoPromedioactual;
        } else {
            $costopromedio = round(($valorinventarioactual + $valointariocargue) / $todalInv, 0);
        }
         


        if($utilidadfrcc==" "){

            $utilidadfrcc=0;
        }
        if($utilidadcaja==" "){
            $utilidadcaja=0;
        }
        
        $factor=trim($fi->factor);

            //anexar german
                    if(!is_numeric($factor)){
                        $factor=0;
                    }
            //fin anexar german

        $frccacaja=0;
            if($frcc>0){
                //$frccacaja=round($frcc/$factor,3);    
                
                $inventarioEnfracc=round( $inventario*$factor,0);
                $SaldoInvenFrcc=$inventarioEnfracc+$frcc; 
                $frccacaja=round($SaldoInvenFrcc/$factor,3);
               // $totalcaja=round($frccacaja+(int)$caja,3); 
                $totalcaja=round($frccacaja+$caja,3); 
               // $ingreso=round( ($frcc/$factor)+(int)$caja);
               $ingreso=round( ($frcc/$factor)+$caja);

                }else{

                    //$totalcaja=round($inventario+(int)$caja,3);  

                    $totalcaja=round($inventario+$caja,3); 
                    

                    $ingreso=round($caja);
                }

               


         
                $pedientellegaractu=$pendinteLlegar - $ingreso ;   

                if($pedientellegaractu<=0){
                    $pedientellegaractu=0;
                }
        
   

            $ejecutar=$this->conectar->prepare( "INSERT INTO `prodcompra`( `cproducto`, `nomproduct`, `cantcaja`, `cantfrcc`, `costcaja`,
             `costofrcc`, `base`, `iva`, `tipo`, `fechacomp`, `numfactur`, `provedor`, 
             `total`,`lote`, `fvencimi`, `rinvima`, `estinvima`, `Observaciones`, `FechaRecepc`,
             `idbodegaCo`,`usuarioc`,`proturno` ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");

            $ejecutar->bind_param("ssssssssssssssssssssss", $codigo,$nombre,
             $caja,$frcc,$costocaja,$costofrcc,$base,$iva, $tipoiva,$fecha,
             $factura,$provedor,$precio,$lote,$fvencimiento,$Rinvima,$Einvima,
             $observacion,$fechaActaRecep,$bodega,$usuarioA,$GLOBALS["turno"]);
           $eject= $ejecutar->execute();
          



           $insertar=$this->conectar->prepare( "UPDATE `inventarios`  SET `inventario`=?,
           `costocaja`=?,`costofrcc`=?,`costopromediocaja`=?,`utilidacaja`=?,`utilidafrcc`=?,
            `VentaCaja`=?, `VentaFrcc`=?, `VentaCaja2`=?, `VentaFrcc2`=?,`fechaUltimaEntrada`=?,
            `ubicacion1`=?,`pendientellegar`=?,`precioblister`=?,`utilidacaja2`=?,`utilidafrcc2`=?,`VentaCaja3`=?,
            `VentaFrcc3`=?,`utilidacaja3`=?,`utilidafrcc3`=?, `ultmaModificacion`=? WHERE codigoProd=? AND idbodega=?");
           $insertar->bind_param("sssssssssssssssssssssss",$totalcaja,$costocaja,$costofrcc,$costopromedio,
           $utilidadcaja,$utilidadfrcc,$ventaCaja,$ventaFrcc,$ventaCaja2,$ventaFrcc2,$fecha,$ubicacionP,$pedientellegaractu,$precioblister,
           $utilidadCaja2,$utilidadFrcc2,$precioCaja3,$precioFrcc3,$utilidadCaja3,$utilidadFrcc3,$usuarioA,$codigo,$bodega);
           $actulizar= $insertar->execute();
    
           if($preciosTodos=="si"){

            $insertar=$this->conectar->prepare( "UPDATE `inventarios`  SET `utilidacaja`=?,`utilidafrcc`=?,
             `VentaCaja`=?, `VentaFrcc`=?, `VentaCaja2`=?, `VentaFrcc2`=?,`precioblister`=?,`utilidacaja2`=?,`utilidafrcc2`=?,`VentaCaja3`=?,
            `VentaFrcc3`=?,`utilidacaja3`=?,`utilidafrcc3`=?, `ultmaModificacion`=? WHERE codigoProd=?");
            $insertar->bind_param("sssssssssssssss",$utilidadcaja,$utilidadfrcc,$ventaCaja,$ventaFrcc,$ventaCaja2,$ventaFrcc2,$precioblister,
            $utilidadCaja2,$utilidadFrcc2,$precioCaja3,$precioFrcc3,$utilidadCaja3,$utilidadFrcc3,$usuarioA,$codigo);
            $actulizar= $insertar->execute(); 

  

        }

        $insertarrr=$this->conectar->prepare( "UPDATE `productos`  SET `registroInvima`=? WHERE codigo=?  ");
        $insertarrr->bind_param("ss",$Rinvima,$codigo);
        $actulizarrr= $insertarrr->execute();

   
// invantario tabla productos

        $inventarioGeneral=str_replace(' ', '',$fi->TotalInventario);
        $costoPromeGeneral=str_replace(' ', '',$fi->CostoPromedioP);
       
        if($inventarioGeneral==0 || $inventarioGeneral==""){
            $inventarioGeneral=0;
        }

        if(!is_numeric($costoPromeGeneral)){
            $costoPromeGeneral=0;
        }

        $valorInventaGeneral=round( $inventarioGeneral*$costoPromeGeneral);

        $saldoGeneral= round($inventarioGeneral+$ingreso,3); 

        // if($saldoGeneral<0 || $saldoGeneral<"0" ){
            
        //     $saldoGeneral=0;
        // }

        if($saldoGeneral<=0){
            $costopromedio=$costoPromeGeneral;
        }else{
            $costopromedio=round(($valorInventaGeneral+$valointariocargue)/$saldoGeneral,0);
        }
        


        $utilidadBlister=0;


        $actuli=$this->conectar->query("UPDATE `productos`  SET `CostoCajaP`='$costocaja',
        `CostoFrccP`='$costofrcc',`CostoPromedioP`='$costopromedio',
        `VentaCajaP`='$ventaCaja',`VentaFrccP`='$ventaFrcc',`UtilidadCajaP`='$utilidadcaja',`UtilidadFrccP`='$utilidadfrcc',
        `PrecioBlisterCaja`='$precioblister',`utilidadBlister`='$utilidadBlister'
      ,`TotalInventario`='$saldoGeneral' WHERE codigo='$codigo' ");




         if($ordemCompra !="Si"){
            return 1;
         }

          


          
          
 // invantario tabla productos FIN

            
        }                      

        
           

            //fin  insertar productos facturado en la tabla

    }
    

}





public function kardex($fila,$tipo,$fecha,$factura,$provedor,$tipodetalle,$bodega,$usuarioA){

    foreach($fila as $valor) {

        $codigo=$valor["Codigo"];        
        $caja=str_replace(' ', '',$valor["Cantida_caja"]);
        $frcc=str_replace(' ', '',$valor["Cantida_frcc"]);       

        $valorcaja=str_replace(' ', '',$valor["costocaja"]); 
        $valorfrcc=str_replace(' ', '',$valor["costofrcc"]); 

        if($valorcaja=="" || $valorcaja==" "){
            $valorcaja=0;
        }
        if($valorfrcc==""||$valorfrcc==" "){
            $valorfrcc=0;
        }
        if($frcc==""||$frcc==" ")
        {
            $frcc=0;
        }
        if(!is_numeric($caja)){
            $caja=0;
        }

        $consulta="SELECT * FROM `productos` INNER JOIN inventarios on productos.codigo=inventarios.codigoProd where codigo ='$codigo' AND idbodega=$bodega";    
        $resultado=$this->conectar->query($consulta);         
        $fi=mysqli_fetch_object($resultado);        
        
        $inventario1=str_replace(' ', '',$fi->inventario);
        $factor=str_replace(' ', '',$fi->factor);
        
        if(!is_numeric($factor)){
            $factor=0;
        }


        if(!is_numeric($inventario1)){
            $inventario1=0;
        }

        $inventariofrcc=round($factor*$inventario1,3);


    $ejecutarr=$this->conectar->prepare("INSERT INTO `kardex`(`cliente`,`numero`,`producto`, `tipo`, `detalle`,
    `caja`, `frcc`, `inventarioo`, `fecha`, `inventFrcc`, `valoUnitcaja`, `valorUnifrcc`,`idbodegaK`,`usuariok`,`kturno`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
    $ejecutarr->bind_param("sssssssssssssss",$provedor,$factura,$codigo,$tipo,$tipodetalle,$caja,$frcc,$inventario1,$fecha,$inventariofrcc,$valorcaja,$valorfrcc,$bodega,$usuarioA,$GLOBALS["turno"]);
    $ejecutarr->execute(); 
    
    if($tipo=="compra" || $tipo=="entrada"){

            $borrar=false;

            if($factor>0){
                
                    if($caja>0){
                    $saldoFrcc=round($factor*$caja,3)+$frcc;
                    }else{
                    $saldoFrcc=$frcc;  
                    }

                    if($saldoFrcc==$inventariofrcc){
                        $borrar=true;
                    }
            }else{
                if($caja==$inventario1){
                    $borrar=true;
                }
               
            }
            

            if($borrar==true ){

                $consultas="DELETE FROM `vencimientos` WHERE codigo_pr='$codigo' and bodegav=$bodega";    
                $resultadoo=$this->conectar->query($consultas);  
                
            }


        $nombePr=$valor["Nombre"];
        $lote=$valor["lote"];
        $fechaV=$valor["FVencimiento"];

        $ejecutarrr=$this->conectar->prepare("INSERT INTO `vencimientos`( `codigo_pr`, `nombre_pro`, `caja`, `frcc`, `lote`, `fechaVencimiento`, `number_factur`, `Provedor_nit`, `otroos`,`bodegav`)
         VALUES (?,?,?,?,?,?,?,?,?,?)");
        $ejecutarrr->bind_param("ssssssssss",$codigo,$nombePr,$caja,$frcc,$lote,$fechaV,$factura,$provedor,$usuarioA,$bodega);
        $ejecutarrr->execute(); 



    }


    }
    if($ejecutarr){
        return true;
    }
 }   



 public function salida($fila,$bodega){

   
    foreach($fila as $valor) {
      
                                        
        $codigo=$valor["Codigo"];        
        $caja=str_replace(' ', '',$valor["Cantida_caja"]);
        $frcc=str_replace(' ', '',$valor["Cantida_frcc"]);
        
       // $costocaja=$valor["costocaja"]; 
       // $costofrcc=$valor["costofrcc"]; 

       $consulta="SELECT * FROM `productos` INNER JOIN inventarios on productos.codigo=inventarios.codigoProd where codigo ='$codigo' AND idbodega=$bodega";   
        $resultado=$this->conectar->query($consulta);         
        $fi=mysqli_fetch_object($resultado);        
        $inventario=str_replace(' ', '',$fi->inventario);
        $factor=str_replace(' ', '',$fi->factor);

            //anexar german
                
            if(!is_numeric($caja)){
                $caja=0;
            }
            if(!is_numeric($frcc)){
                $frcc=0;
            }
            if($inventario==""|| $inventario=="NULL"){
                $inventario=0; 
            }

            if(!is_numeric($factor)){
                $factor=0;
            }
            //fin anexar german


        $frccacaja=0;
            if($frcc>0){
                  
                 $inventarioEnfracc=round( $inventario*$factor,0);
                 $SaldoInventario=$inventarioEnfracc-$frcc;    

                 if($SaldoInventario==0){
                    $frccacaja=$inventario;
                   

                  }else{
                   $frccacaja= round( $frcc/$factor,3);
                
                  }
                }
               // $subtocaja=round($frccacaja+(int) $caja,3);
                $subtocaja=round($frccacaja+ $caja,3);
        $totalcaja=round($inventario-$subtocaja,3);   
        
        // if($totalcaja == 0.001  || $totalcaja == 0.002 || $totalcaja == 0.003 || $totalcaja == 0.004 || $totalcaja == 0.005 || $totalcaja == 0.006 || $totalcaja == 0.007 || $totalcaja == 0.008 || $totalcaja == 0.009 || $totalcaja == -0.001 || $totalcaja == -0.002 || $totalcaja == -0.003 || $totalcaja == -0.004 || $totalcaja == -0.005 || $totalcaja == -0.006 || $totalcaja == -0.007 || $totalcaja == -0.008 || $totalcaja == -0.009 ) {
        //     $totalcaja=0;

        // }
           $insertar=$this->conectar->prepare( "UPDATE `inventarios`  SET `inventario`=? WHERE codigoProd=? and idbodega=? ");
           $insertar->bind_param("sss",$totalcaja,$codigo,$bodega);
           $actulizarrA= $insertar->execute();

       
// invantario tabla productos
$inventarioGeneral=str_replace(' ', '',$fi->TotalInventario);


if(!is_numeric($inventarioGeneral)){
    $inventarioGeneral=0;
}





$saldoGeneral= round($inventarioGeneral-$subtocaja,3); 

// if($saldoGeneral<0 || $saldoGeneral<"0" ){
    
//     $saldoGeneral=0;
// }






 $insertar=$this->conectar->prepare( "UPDATE `productos`  SET 
   `TotalInventario`=?  WHERE  codigo=? ");

    $insertar->bind_param("ss",$saldoGeneral,$codigo);
    $actulizar= $insertar->execute();


  
  
// invantario tabla productos FIN
            
          
    }

    if($actulizarrA){
        return true;
    
    }


 }


 public function entrada($fila,$bodega,$fecha,$preciosTodos){

    $ubicacionP="sin";
    foreach($fila as $valor) {
       
        $costopromedio=0;

        
                                        
        $codigo=$valor["Codigo"];
        $nombre=$valor["Nombre"];
        $caja=str_replace(' ', '',$valor["Cantida_caja"]);
        $frcc=str_replace(' ', '',$valor["Cantida_frcc"]);
        $precio=str_replace(' ', '',$valor["total"]);
        $iva=str_replace(' ', '',$valor["iva"]);  
        $tipoiva=str_replace(' ', '',$valor["tipo"]);   
        $base=str_replace(' ', '',$valor["Base"]); 
        $costocaja=str_replace(' ', '',$valor["costocaja"]); 
        $costofrcc=str_replace(' ', '',$valor["costofrcc"]); 

        $lote=str_replace(' ', '',$valor["lote"]);
        $fvencimiento=$valor["FVencimiento"];
        $Rinvima=$valor["Rinvima"];
        $Einvima=$valor["Einvima"];
        $observacion=$valor["Observac"];

        $ventaCaja=str_replace(' ', '',$valor["ventaCaja"]);
        $ventaFrcc=str_replace(' ', '',$valor["ventaFrcc"]);

        $ventaCaja2=str_replace(' ', '',$valor["ventaCaja2"]);
        $ventaFrcc2=str_replace(' ', '',$valor["ventaFrcc2"]);
        $precioblister=str_replace(' ', '',$valor["precioblister"]);
        $ubicacionP=$valor["ubicacion"];


        $utilidadCaja2=str_replace(' ', '',$valor["utilidadCaja2"]);
        $utilidadFrcc2=str_replace(' ', '',$valor["utilidadFrcc2"]);
        $precioCaja3=str_replace(' ', '',$valor["precioCaja3"]);
        $precioFrcc3=str_replace(' ', '',$valor["precioFrcc3"]);
        $utilidadCaja3=str_replace(' ', '',$valor["utilidadCaja3"]);
        $utilidadFrcc3=str_replace(' ', '',$valor["utilidadFrcc3"]);



        //utilidad caja, borrar tambien del la consulta update las dos ultimas
        $utilidadcaja=$valor["utilcaja"];
        $utilidadfrcc=$valor["utilifrcc"];

        if(!is_numeric($precioCaja3)){
            $precioCaja3=0;
        }
        if(!is_numeric($precioFrcc3)){
            $precioFrcc3=0;
        }
        


        if(!is_numeric($precioblister)){
            $precioblister=0;
        }



        if( $frcc==""|| $frcc==" "){
            $frcc=0;
        }
        if( $caja=="" || $caja==" "){
             $caja=0;
        }

        $consulta="SELECT * FROM `productos` INNER JOIN inventarios on productos.codigo=inventarios.codigoProd where codigo ='$codigo' AND idbodega=$bodega";     
        $resultado=$this->conectar->query($consulta);     

       if( $fi=mysqli_fetch_object($resultado)){   

        $inventario=str_replace(' ', '',$fi->inventario);
        $costoactual=str_replace(' ', '',$fi->costocaja);
        

       
        $costoPromedioactual=$fi->costopromediocaja;
         //calculo de costo promedio
         $pendinteLlegar=str_replace(' ', '',$fi->pendientellegar);
         if(!is_numeric($pendinteLlegar)){
            $pendinteLlegar=0;
          }
         
  //anexar german
        if(!is_numeric($costoactual)){
            $costoactual=0;
        }

       


        if(!is_numeric($costoPromedioactual)){
            $costoPromedioactual=0;
        }
        if(!is_numeric($caja)){
            $caja=0;
        }
        if(!is_numeric($frcc)){
            $frcc=0;
        }
        if($inventario==""|| $inventario=="NULL" ||$inventario==" "){
            $inventario=0; 
        }
        if(!is_numeric($costocaja)){
            $costocaja=0;
        }
        if(!is_numeric($costofrcc)){
            $costofrcc=0;
        }
        if(!is_numeric($ventaFrcc)){
            $ventaFrcc=0;
        }

        
              
//fin anexar german

        //  if($inventario < 0 || $inventario < "0" ){
        //     $inventario=0;
        //  }
         if($costoactual==""||$costoactual==" "){
            $costoactual=0;
         }
         if(  $costoPromedioactual==""||  $costoPromedioactual==" "){
            $costoPromedioactual=0;
         }

         

         $valorinventarioactual=$inventario*$costoPromedioactual;
         $valointariocargue=$caja*$costocaja;
         $totalinventario=$inventario+$caja;
         
        //  if($caja==0){
        //     $costopromedio=$costoPromedioactual;
        //  }else{
        //     $costopromedio=round(($valorinventarioactual+$valointariocargue)/$totalinventario,0);


        //  }

        if ($caja == 0 || $totalinventario == 0) {
             // Sin nuevo cargue o total cero: mantener costo actual
              $costopromedio = $costoPromedioactual;
        } else {
            $costopromedio = round(($valorinventarioactual + $valointariocargue) / $totalinventario, 0);
        }
         


        if($utilidadfrcc==" "){

            $utilidadfrcc=0;
        }
        if($utilidadcaja==" "){
            $utilidadcaja=0;
        }
        
        $factor=str_replace(' ', '',$fi->factor);

            //anexar german
                    if(!is_numeric($factor)){
                        $factor=0;
                    }
            //fin anexar german

        $frccacaja=0;
            if($frcc>0){
                //$frccacaja=round($frcc/$factor,3);    
                
                $inventarioEnfracc=round( $inventario*$factor,0);
                $SaldoInvenFrcc=$inventarioEnfracc+$frcc; 
                $frccacaja=round($SaldoInvenFrcc/$factor,3);
                // $totalcaja=round($frccacaja+(int)$caja,3); 
                // $ingreso=round( ($frcc/$factor)+(int)$caja);

                $totalcaja=round($frccacaja+$caja,3); 
                $ingreso=round( ($frcc/$factor)+$caja);

                }else{
                    // $totalcaja=round($inventario+(int)$caja,3);  
                    $totalcaja=round($inventario+$caja,3); 
                    $ingreso=round($caja);
                }

               


         
                $pedientellegaractu=$pendinteLlegar - $ingreso ;   

                if($pedientellegaractu<=0){
                    $pedientellegaractu=0;
                }
        
          
          
           


           $insertar=$this->conectar->prepare( "UPDATE `inventarios`  SET `inventario`=?,
           `costocaja`=?,`costofrcc`=?,`costopromediocaja`=?,`utilidacaja`=?,`utilidafrcc`=?,
            `VentaCaja`=?, `VentaFrcc`=?, `VentaCaja2`=?, `VentaFrcc2`=?,`fechaUltimaEntrada`=?,
            `ubicacion1`=?,`pendientellegar`=?,`precioblister`=?,`utilidacaja2`=?,`utilidafrcc2`=?,`VentaCaja3`=?,
            `VentaFrcc3`=?,`utilidacaja3`=?,`utilidafrcc3`=?,`ultmaModificacion`=? WHERE codigoProd=? AND idbodega=?");
           $insertar->bind_param("sssssssssssssssssssssss",$totalcaja,$costocaja,$costofrcc,$costopromedio,
           $utilidadcaja,$utilidadfrcc,$ventaCaja,$ventaFrcc,$ventaCaja2,$ventaFrcc2,$fecha,$ubicacionP,$pedientellegaractu,$precioblister,
           $utilidadCaja2,$utilidadFrcc2,$precioCaja3,$precioFrcc3,$utilidadCaja3,$utilidadFrcc3,$_SESSION["usuario"],$codigo,$bodega);
           $actulizar= $insertar->execute();
           

           if($preciosTodos=="si"){

            $insertar=$this->conectar->prepare( "UPDATE `inventarios`  SET `utilidacaja`=?,`utilidafrcc`=?,
             `VentaCaja`=?, `VentaFrcc`=?, `VentaCaja2`=?, `VentaFrcc2`=?,`precioblister`=?,`utilidacaja2`=?,`utilidafrcc2`=?,`VentaCaja3`=?,
            `VentaFrcc3`=?,`utilidacaja3`=?,`utilidafrcc3`=?,`ultmaModificacion`=?  WHERE codigoProd=?");
            $insertar->bind_param("sssssssssssssss",$utilidadcaja,$utilidadfrcc,$ventaCaja,$ventaFrcc,$ventaCaja2,$ventaFrcc2,$precioblister,
            $utilidadCaja2,$utilidadFrcc2,$precioCaja3,$precioFrcc3,$utilidadCaja3,$utilidadFrcc3,$_SESSION["usuario"],$codigo);
            $actulizar= $insertar->execute(); 


        }

        $insertarrr=$this->conectar->prepare( "UPDATE `productos`  SET `registroInvima`=? WHERE codigo=?  ");
           $insertarrr->bind_param("ss",$Rinvima,$codigo);
           $actulizarrr= $insertarrr->execute();


// invantario tabla productos
$inventarioGeneral=str_replace(' ', '',$fi->TotalInventario);
$costoPromeGeneral=str_replace(' ', '',$fi->CostoPromedioP);

if(!is_numeric($inventarioGeneral)){
    $inventarioGeneral=0;
}

if(!is_numeric($costoPromeGeneral)){
    $costoPromeGeneral=0;
}

$valorInventaGeneral=round( $inventarioGeneral*$costoPromeGeneral);

$saldoGeneral= round($inventarioGeneral+ $ingreso,3); 

if($saldoGeneral<0 || $saldoGeneral<"0" ){
    
    $saldoGeneral=0;
}

if($saldoGeneral<=0){
    $costopromedio=$costoPromeGeneral;
}else{
    $costopromedio=round(($valorInventaGeneral+$valointariocargue)/$saldoGeneral,0);
}


$utlidadBlister=0;

$insertar=$this->conectar->prepare( "UPDATE `productos`  SET `CostoCajaP`=?,        
`CostoFrccP`=?,`CostoPromedioP`=?,`VentaCajaP`=?
,`VentaFrccP`=?,`UtilidadCajaP`=?,`UtilidadFrccP`=?
,`PrecioBlisterCaja`=?,`utilidadBlister`=?
,`TotalInventario`=?  WHERE codigo=? ");

    $insertar->bind_param("sssssssssss",$costocaja,$costofrcc,
    $costopromedio,$ventaCaja,$ventaFrcc,$utilidadcaja,$utilidadfrcc,$precioblister,$utlidadBlister,$saldoGeneral,$codigo);
    $actulizar= $insertar->execute();


  
  
// invantario tabla productos FIN






            
            } else{
                $actulizar=false; 
            }                     

        
           

            //fin  insertar productos facturado en la tabla

    }   if($actulizar){
        return true;
    }else{
        return false;
    }

 }


 public function actulizarnumersalida($numero,$bodega){
       
    $insertarfac="UPDATE `empresa` SET `salida`=$numero where bodegaEm=$bodega";            
    $actulizar=$this->conectar->query($insertarfac); 
         

}

public function  consusnumerosalida($bodega){
            
    $numfact= $this->conectar->query("SELECT * FROM `empresa` where bodegaEm=$bodega"); 
    $numfactura=mysqli_fetch_object($numfact);
    $fact=$numfactura->salida;
    $numerosalida=$fact+1;
   
    return($numerosalida);
   
  
}
public function  consusnumeroentrada($bodega){
            
    $numfact= $this->conectar->query("SELECT * FROM `empresa` where bodegaEm=$bodega"); 
    $numfactura=mysqli_fetch_object($numfact);
    $fact=$numfactura->entrada;
    $numeroentrada=$fact+1;
   
    return($numeroentrada);
   
  
}
public function actulizarnumeentrada($numero,$bodega){
      
   $insertarfac="UPDATE `empresa` SET `entrada`=$numero where `bodegaEm`=$bodega";            
   $actulizar=$this->conectar->query($insertarfac); 
   
//    $insertar=$this->conectar->prepare( "UPDATE `empresa`  SET 
//     `entrada`=? WHERE bodegaEm=? ");
//     $insertar->bind_param("ss",$numero,$bodega);
//     $actulizar= $insertar->execute();      

}

public function consultarixistencias($fila,$bodega){
    $GLOBALS["respuest"]=0;
    foreach($fila as $valor) {
        $codigo=$valor["Codigo"];
     
        $caja=str_replace(' ', '',$valor["Cantida_caja"]);
        $frcc=str_replace(' ', '',$valor["Cantida_frcc"]);
       
        $consulta="SELECT * FROM `productos` INNER JOIN inventarios on productos.codigo=inventarios.codigoProd where codigo ='$codigo' AND idbodega=$bodega";    
        $resultado=$this->conectar->query($consulta);         
        if($fi=mysqli_fetch_object($resultado)){

                                
                        $inventario=str_replace(' ', '', $fi->inventario);

                        $factor=str_replace(' ', '',$fi->factor);  
                        $controlInventario= trim($fi->controlInventario);

                        $frccacaja=0;

                        if($factor==0 && $frcc > 0){
                            $GLOBALS["respuest"]=2;
                            $GLOBALS["prod"]=$codigo;
                        }else{
                                //anexar german
                                                                            
                                if(!is_numeric($caja)){
                                    $caja=0;
                                }
                                if(!is_numeric($frcc)){
                                    $frcc=0;
                                }
                                if($inventario==""|| $inventario=="NULL"){
                                    $inventario=0; 
                                }

                                if(!is_numeric($factor)){
                                    $factor=0;
                                }
                                    
                            //fin anexar german


                                if($frcc>0){

                                  $frccacaja=round($frcc/$factor,3); 
                                  $inventarioEnfracc=round( $inventario*$factor,0);
                                  $SaldoInventario=$inventarioEnfracc-$frcc;            
                  
                                        if($SaldoInventario==0){
                                            $frccacaja=$inventario;
                                            

                                        }else{
                                            $frccacaja= round( $frcc/$factor,3);
                                        
                                        }

                                }
                                            
                        
                            }
                            // $subtocaja=round($frccacaja+(int) $caja,3);
                            $subtocaja=round($frccacaja+ $caja,3);
                            $total=round( $inventario-$subtocaja,3);   
                    if($total<0 ){
                        
                        if($controlInventario !="no") {

                            $GLOBALS["respuest"]=1;
                            $GLOBALS["prod"]=$codigo;

                        } 
                      
                    } 
        
        }else{
            $GLOBALS["respuest"]=2;
            $GLOBALS["prod"]='error en producto'.$codigo;

        }              


}

return $GLOBALS["respuest"];

}

public function consultarfactor($fila,$bodega){
    $GLOBALS["factor"]=0;

    foreach($fila as $valor) {
      
                                        
        $codigo=$valor["Codigo"];       
      
        $frcc=str_replace(' ', '',$valor["Cantida_frcc"]);       
       

        $consulta="SELECT * FROM `productos` INNER JOIN inventarios on productos.codigo=inventarios.codigoProd where codigo ='$codigo' AND idbodega=$bodega ";     
        $resultado=$this->conectar->query($consulta);         
        
        if($fi=mysqli_fetch_object($resultado)){        
       
        $factor=$fi->factor;

              //anexar german                                        
        
                if(!is_numeric($factor)){
                    $factor=0;
                }

                if($_SESSION["confirmarTraslado"]==1){
                    $pendienteCOnfir=$fi->cantidTraslada;
                    if($pendienteCOnfir>0){
                        $GLOBALS["factor"]=1;
                        $GLOBALS["prod"]=$codigo." "."El producto Tiene traslados Pendientes por confirmar";
                        break;
                    }
                }

             //fin anexar german

            if($frcc>0 && $factor==0){
                $GLOBALS["factor"]=1; 
                $GLOBALS["prod"]=$codigo;            
                }

            }else{
                $GLOBALS["factor"]=1; 
                $GLOBALS["prod"]=', No  Existe el Producto Revisar o No esta Asiganado a la bodega:  Producto'.$codigo; 

            }

       if( $GLOBALS["factor"]==1){
        return  $GLOBALS["prod"];
       }else{
        return 0;
       }
     
            
}

}



public function  consusnumeroobs($bodega){
            
    $numfact= $this->conectar->query("SELECT * FROM `empresa` where bodegaEm=$bodega"); 
    $numfactura=mysqli_fetch_object($numfact);
    $fact=$numfactura->obs;
    $numeroobs=$fact+1;
   
    return( $numeroobs);
   
  
}
public function actulizarnumeobs($numero,$bodega){
       
    $insertarfac="UPDATE `empresa` SET `obs`=$numero where bodegaEm=$bodega";            
    $actulizar=$this->conectar->query($insertarfac); 
                 

}

public function entradaobs($fila,$bodega){

   
    foreach($fila as $valor) {
      
                                        
        $codigo=$valor["Codigo"];        
        $caja=str_replace(' ', '',$valor["Cantida_caja"]);
        $frcc=str_replace(' ', '',$valor["Cantida_frcc"]);
        

        /*
            $costocaja=$valor["costocaja"]; 
            $costofrcc=$valor["costofrcc"]; 
            $utilidadcaja=$valor["utilcaja"];
            $utilidadfrcc=$valor["utilifrcc"];
            
            if($utilidadfrcc==" "){

                $utilidadfrcc=0;
            }
            if($utilidadcaja==" "){

                $utilidadcaja=0;
            }
        */

        $consulta="SELECT * FROM `productos` INNER JOIN inventarios on productos.codigo=inventarios.codigoProd where codigo ='$codigo' AND idbodega=$bodega";   
          
        $resultado=$this->conectar->query($consulta);         
       if( $fi=mysqli_fetch_object($resultado)){  

        $inventario=str_replace(' ', '',$fi->inventario);
        $factor=str_replace(' ', '',$fi->factor);
         
        $frccacaja=0;
            if($frcc>0){
                $frccacaja=round($frcc/$factor,3);    
                
                $inventarioEnfracc=round( $inventario*$factor,0);
                $SaldoInvenFrcc=$inventarioEnfracc+$frcc; 
                $frccacaja=round($SaldoInvenFrcc/$factor,3);
                // $totalcaja=round($frccacaja+(int)$caja,3); 
                $totalcaja=round($frccacaja+$caja,3); 
                
                
                }else{
                    // $totalcaja=round($inventario+(int)$caja,3);

                    $totalcaja=round($inventario+$caja,3); 

                }
                
    
    

       // $insertar=$this->conectar->prepare( "UPDATE `productos`  SET `inventario`=?,`costocaja`=?,`costofrcc`=?,`utilidacaja`=?,`utilidafrcc`=? WHERE codigo=?");

        $insertar=$this->conectar->prepare( "UPDATE `inventarios`  SET `inventario`=? WHERE codigoProd=? and idbodega=?");
        $insertar->bind_param("sss",$totalcaja,$codigo,$bodega);
        $actulizar= $insertar->execute();
        





        // invantario tabla productos
$inventarioGeneral=str_replace(' ', '',$fi->TotalInventario);


if(!is_numeric($inventarioGeneral)){
    $inventarioGeneral=0;
}





$saldoGeneral= round($inventarioGeneral+$totalcaja,3); 

if($saldoGeneral<0 || $saldoGeneral<"0" ){
    
    $saldoGeneral=0;
}






$insertar=$this->conectar->prepare( "UPDATE `productos`  SET 
`TotalInventario`=?  WHERE codigo=? ");

    $insertar->bind_param("ss",$saldoGeneral,$codigo);
    $actulizar= $insertar->execute();


  
  
// invantario tabla productos FIN
    
        }
          
    }

    if($actulizar){
    return true;
}else{
    return false;
}

 }

 public function carteracliente($cedula,$nombre,$abono,$bodega,$usuarioA,$detalle,$movimiento){
    $fecha=date("Y-m-d");
      $consulta=$this->conectar->prepare( " INSERT INTO `carteracliente`( `cedCliente`, `Nombrec`, `abono`, `fechaAbono`,`observa`,`idbodega`,`usuario`,`carturno`,`facturaCruze`)
       VALUES (?,?,?,?,?,?,?,?,?)");
    
     $consulta->bind_param("sssssssss",$cedula,$nombre,$abono,$fecha,$detalle,$bodega,$usuarioA,$GLOBALS["turno"],$movimiento);
     $consulta->execute();
    
    
    }


}



?>