<?php
include '../comunes_php/cors.php';
    include "../comunes_php/Log.class.php"; 
    $log = new Log("app_trace", "./");

    $parametros = print_r($_POST,TRUE); 
    $log->insert($parametros, false, false, false);



    $page = isset($_POST['page']) ? intval($_POST['page']) : 1;
    $rows = isset($_POST['rows']) ? intval($_POST['rows']) : 10;
    $offset = ($page-1)*$rows;
    $result = array();
    $mensaje = "Fueron guardados sus datos";
    include '../rdb/conn.php';





    $id = $_POST['id'];
    $usuario_id =$_REQUEST['usuario_id'];
    
	$cmbTipoProducto= isset($_REQUEST['cmbTipoProducto']) ?(is_null($_REQUEST['cmbTipoProducto'])?  '-1':$_REQUEST['cmbTipoProducto']) : '-1';
	$cmbFabrica= isset($_REQUEST['cmbFabrica']) ?(is_null($_REQUEST['cmbFabrica'])?  '-1':$_REQUEST['cmbFabrica']) : '-1';
	$codigo= isset($_REQUEST['codigo']) ? $_REQUEST['codigo'] : '';
	$tamano= isset($_REQUEST['tamano']) ? $_REQUEST['tamano'] : '';
	$nombre= isset($_REQUEST['nombre']) ? $_REQUEST['nombre'] : '';
	$descripcion= isset($_REQUEST['descripcion']) ? $_REQUEST['descripcion'] : '';

	$precio_contado = isset($_REQUEST['precio_contado']) ? $_REQUEST['precio_contado'] : '-1';
	$precio_tarjeta = isset($_REQUEST['precio_tarjeta']) ? $_REQUEST['precio_tarjeta'] : '-1';
	
    $fecha_actual= date("Y-m-d H:i:s");
   // $fecha_actual= $_POST['fecha'];
 
  
  
try {    
mysqli_query( $conn,"SET AUTOCOMMIT=0");
mysqli_query( $conn,"START TRANSACTION");


    if (isset($_POST['id']) && trim($_POST['id'])!='ALTA') {
        //modificacion


         
            $sql=" UPDATE `productos` SET ";
        	if ($cmbTipoProducto<>'') {$sql .="`tipo_producto_id`= $cmbTipoProducto,     "; }
        	if ($cmbFabrica<>'') {$sql .="`fabrica_id`= $cmbFabrica,     "; }
        	if ($codigo<>'') {$sql .="`codigo`= '$codigo',     "; }
        	if ($tamano<>'') {$sql .="`tamano`='$tamano',     "; }
        	if ($nombre<>'') {$sql .="`nombre`='$nombre',     "; }
        	if ($descripcion<>'') {$sql .="`descripcion`= '$descripcion'     "; }
        	
            $sql.=" WHERE id=$id";
								     

            @mysqli_query( $conn,$sql);
            $actualizados=mysqli_affected_rows($conn);
            $log->insert($sql, false, false, false);

            $result["sql"]=$sql;
            
            
            //actualizo los precios
            
            $sql=    "UPDATE  `precio_productos` set fecha_fin='$fecha_actual' where producto_id=$id ";
            @mysqli_query( $conn,$sql);
            
            $sql=    "INSERT INTO `precio_productos`";
            $sql  .="    (`producto_id`, `precio`, `fecha_inicio`, `fecha_fin`, `borrado`, `precio_financiado`) ";
            $sql  .="    VALUES ";
            $sql  .="    ($id,$precio_contado,'$fecha_actual',null,0,$precio_tarjeta)";
            @mysqli_query( $conn,$sql);
            $log->insert($sql, false, false, false);

            //si vienen armo un arreglo con el contenido y doy de alta
            
             if (isset($_REQUEST['adicionales'])){
                $adicionales= json_decode($_REQUEST['adicionales'], true);
                
                $sql = "delete from  adicionales_por_producto where producto_id=$id";
                @mysqli_query( $conn,$sql);
             
   	            $log->insert($sql, false, false, false);
                $sql = "delete from  precio_adicionales where producto_id=$id";
               
                @mysqli_query( $conn,$sql);       
 	            $log->insert($sql, false, false, false);
               	    
                $sql = "delete from  producto_materia_prima where producto_id=$id";
                @mysqli_query( $conn,$sql);
   	            $log->insert($sql, false, false, false);

                $orden=0;
                 foreach($adicionales as $cr){
                    $orden++;
					    
                        
                        $sql  ="INSERT INTO `adicionales_por_producto`";
                        $sql  .="(`producto_id`, `adicional_id`,`orden`) VALUES ";
                        $sql  .="($id, $cr[adicional_id], $orden)"; 
					    @mysqli_query( $conn,$sql);
	                    $log->insert($sql, false, false, false);

                        //inhabilito el precio anterior
                        $sql  ="UPDATE  `precio_adicionales` set fecha_fin='$fecha' where producto_id=$id  and adicional_id=$cr[adicional_id]";
                        @mysqli_query( $conn,$sql);
	                    $log->insert($sql, false, false, false);
                	    
                        //meto nuevo precio
                        $sql  ="INSERT INTO `precio_adicionales`";
                        $sql  .="(`producto_id`, `adicional_id`,`precio`,fecha_inicio,fecha_fin) VALUES ";
                        $sql  .="($id, $cr[adicional_id], $cr[precio],'$fecha',null)"; 
					    @mysqli_query( $conn,$sql);
	                    $log->insert($sql, false, false, false);
                }
                $materia_prima= json_decode($_REQUEST['materia_prima'], true);

                $orden=0;
                 foreach($materia_prima as $cr){
                    $orden++;
					    
                        
                        $sql  ="INSERT INTO `producto_materia_prima`";
                        $sql  .="(`producto_id`, `materia_prima_id`,`cantidad`) VALUES ";
                        $sql  .="($id, $cr[materia_prima_id], $cr[cantidad])"; 
					    @mysqli_query( $conn,$sql);
	                    $log->insert($sql, false, false, false);


                }

            } //fin de area de manejo de renglones

    } // fin modificaciones 
    else
    {
        //alta        
    	   $sql= " select IFNULL(max(id),0)+1 from productos ";
    
    	    $rs = mysqli_query( $conn,$sql);
    	    $row = mysqli_fetch_row($rs);
    	    $id = $row[0];
    

	
	
            $sql  ="INSERT INTO ";
            $sql  .="	`productos`";
            $sql  .="	(`id`, `nombre`, `codigo`, ";
            $sql  .="	`tipo_producto_id`, `fabrica_id`, `tamano`, ";
            $sql  .="	`descripcion` ) VALUES";
            $sql  .="   ($id, '$nombre','$codigo',";
            $sql  .="   $cmbTipoProducto,$cmbFabrica,$tamano,";
            $sql  .="	'$descripcion')";
 
 
        
            
            
            mysqli_query( $conn,$sql);
            $actualizados=mysqli_affected_rows($conn);
            
       	    $result["sql"] = $sql;
       	
	        $log->insert($sql, false, false, false);

    
           
            //actualizo los precios
            
            $sql=    "UPDATE  `precio_productos` set fecha_fin='$fecha_actual' where producto_id=$id ";
            @mysqli_query( $conn,$sql);
         	
	        $log->insert($sql, false, false, false);

            
            $sql=    "INSERT INTO `precio_productos`";
            $sql  .="    (`producto_id`, `precio`, `fecha_inicio`, `fecha_fin`, `borrado`, `precio_financiado`) ";
            $sql  .="    VALUES ";
            $sql  .="    ($id,$precio_contado,'$fecha_actual',null,0,$precio_tarjeta)";
            @mysqli_query( $conn,$sql);
            
	        $log->insert($sql, false, false, false);

            
            //si vienen armo un arreglo con el contenido y doy de alta
                $orden=0;
                $adicionales= json_decode($_REQUEST['adicionales'], true);
                
                 foreach($adicionales as $cr){
                    $orden++;
					    
                        
                        $sql  ="INSERT INTO `adicionales_por_producto`";
                        $sql  .="(`producto_id`, `adicional_id`,`orden`) VALUES ";
                        $sql  .="($id, $cr[adicional_id], $orden)"; 
					    @mysqli_query( $conn,$sql);
	                    $log->insert($sql, false, false, false);
					    


                        //inhabilito el precio anterior
                        $sql  ="UPDATE  `precio_adicionales` set fecha_fin='$fecha' where producto_id=$id  and adicional_id=$cr[adicional_id]";
                        @mysqli_query( $conn,$sql);
	                    $log->insert($sql, false, false, false);

                	    
                        //meto nuevo precio
                        $sql  ="INSERT INTO `precio_adicionales`";
                        $sql  .="(`producto_id`, `adicional_id`,`precio`,fecha_inicio,fecha_fin) VALUES ";
                        $sql  .="($id, $cr[adicional_id], $cr[precio],'$fecha',null)"; 
					    @mysqli_query( $conn,$sql);
	                    $log->insert($sql, false, false, false);

                }
                $materia_prima= json_decode($_REQUEST['materia_prima'], true);

                $orden=0;
                 foreach($materia_prima as $cr){
                    $orden++;
					    
                        
                        $sql  ="INSERT INTO `producto_materia_prima`";
                        $sql  .="(`producto_id`, `materia_prima_id`,`cantidad`) VALUES ";
                        $sql  .="($id, $cr[materia_prima_id], $cr[cantidad])"; 
					    @mysqli_query( $conn,$sql);
	                    $log->insert($sql, false, false, false);



                }

    }// fin alta 
    
    
    if (isset($_POST['id']) && trim($_POST['id'])==='ALTA') {
                    //En el alta controlo que se haya insertado algun registro
                    mysqli_query( $conn,"COMMIT");
                    $result["actualizados"]=$actualizados;
                    if ($actualizados>0) {
                    $result["estado"]=true;
                    $result["msg"] = "Producto actualizado. ";
                    } else
                    {
                    $result["estado"]=false;
                    $result["msg"] = "No se realizo Ninguna actualizacion en la base de datos.";
                        
                    }
    } else {
                    mysqli_query( $conn,"COMMIT");
                    $result["actualizados"]=$actualizados;
                    if ($actualizados>0) {
                    $result["estado"]=true;
                    $result["msg"] = "Producto actualizado. ";
                    } else
                    {
                    $result["estado"]=true;
                    $result["msg"] = "No se realizo Ninguna actualizacion los datos del cuerpo del contrato, No sería problemas si se trata de un pago o una modificacion de un producto.";
                        
                    } 
    }
    
    echo json_encode($result);
	
} catch(exception $error) {
    
mysqli_query( $conn,"ROLLBACK");
$result["msg"] = "Errores grabando en la base de datos: ".$error->getMessage();
$result["estado"]=false;

echo json_encode($result);
	
}
    
  
?>