<commit_before><?php

/*
 * This file is part of FacturaSctipts
 * Copyright (C) 2015  <NAME>  <EMAIL>
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 * 
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

require_model('albaran_proveedor.php');
require_model('articulo.php');
require_model('articulo_proveedor.php');
require_model('pedido_proveedor.php');

/**
 * Description of articulos_documento
 *
 * @author carlos
 */
class compras_actualiza_arts extends fs_controller
{
   public $documento;
   public $lineas;
   public $tipodoc;
   
   public function __construct()
   {
      parent::__construct(__CLASS__, 'Artículos documento', 'compras', FALSE, FALSE);
   }
   
   protected function private_core()
   {
      $this->share_extensions();
      
      $this->documento = FALSE;
      $this->lineas = array();
      $this->tipodoc = 'Documento';
      if( isset($_REQUEST['doc']) AND isset($_REQUEST['id']) )
      {
         if($_REQUEST['doc'] == 'pedido')
         {
            $pedido0 = new pedido_proveedor();
            $this->documento = $pedido0->get($_REQUEST['id']);
            $this->tipodoc = FS_PEDIDO;
         }
         else
         {
            $albaran0 = new albaran_proveedor();
            $this->documento = $albaran0->get($_REQUEST['id']);
            $this->tipodoc = FS_ALBARAN;
         }
         
         if($this->documento)
         {
            $this->lineas = $this->documento->get_lineas();
            
            $art0 = new articulo();
            $ap0 = new articulo_proveedor();
            
            $cambios = 0;
            foreach($this->lineas as $i => $value)
            {
               $this->lineas[$i]->refproveedor = $value->referencia;
               $this->lineas[$i]->codbarras = '';
               $this->lineas[$i]->precio_compra = 0;
               $this->lineas[$i]->dto_compra = 0;
               $this->lineas[$i]->precio_venta = 0;
               
               $ap = $ap0->get_by($value->referencia, $this->documento->codproveedor);
               if($ap)
               {
                  $this->lineas[$i]->refproveedor = $ap->refproveedor;
                  $this->lineas[$i]->precio_compra = $ap->precio;
                  $this->lineas[$i]->dto_compra = $ap->dto;
               }
               
               $articulo = $art0->get($value->referencia);
               if($articulo)
               {
                  $this->lineas[$i]->codbarras = $articulo->codbarras;
                  $this->lineas[$i]->precio_venta = $articulo->pvp;
               }
               
               /// ¿Tenemos los datos del form?
               if( isset($_POST['update_'.$value->idlinea]) )
               {
                  /**
                   * Volvemos a buscar el artículos del proveedor, pero esta vez
                   * buscamos también con la referencia del proveedor.
                   */
                  $ap = $ap0->get_by($value->referencia, $this->documento->codproveedor, $_POST['refproveedor_'.$value->idlinea]);
                  if(!$ap)
                  {
                     $ap = new articulo_proveedor();
                     $ap->codproveedor = $this->documento->codproveedor;
                  }
                  
                  $ap->referencia = $value->referencia;
                  $ap->refproveedor = $_POST['refproveedor_'.$value->idlinea];
                  $this->lineas[$i]->refproveedor = $ap->refproveedor;
                  
                  $ap->precio = floatval($_POST['coste_'.$value->idlinea]);
                  $ap->dto = floatval($_POST['dto_'.$value->idlinea]);
                  $ap->save();
                  
                  if( isset($_POST['descripciones']) OR isset($_POST['codbarras']) OR isset($_POST['pvps']) )
                  {
                     if($articulo)
                     {
                        if( isset($_POST['descripciones']) )
                        {
                           $articulo->descripcion = $_POST['descripcion_'.$value->idlinea];
                        }
                        
                        if( isset($_POST['codbarras']) )
                        {
                           $articulo->codbarras = $_POST['codbarras_'.$value->idlinea];
                           $this->lineas[$i]->codbarras = $articulo->codbarras;
                        }
                        
                        if( isset($_POST['pvps']) )
                        {
                           $articulo->set_pvp( floatval($_POST['pvp_'.$value->idlinea]) );
                        }
                        
                        /// ¿usamos la referencia de proveedor como equivalencia?
                        if($_POST['refproveedor_'.$value->idlinea] != '' AND $_POST['refproveedor_'.$value->idlinea] != $articulo->referencia)
                        {
                           $articulo->equivalencia = $_POST['refproveedor_'.$value->idlinea];
                        }
                        
                        $articulo->save();
                     }
                  }
                  
                  $cambios++;
               }
            }
            
            if($cambios > 0)
            {
               $this->new_message($cambios.' cambios realizados.');
            }
         }
         else
            $this->new_error_msg('Documento no encontrado.');
      }
      else<commit_msg>Solucionado bug al meter la referencia de proveedor en el código de equivalencia del artículo.<commit_after><?php

/*
 * This file is part of FacturaSctipts
 * Copyright (C) 2015  <NAME>  <EMAIL>
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 * 
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

require_model('albaran_proveedor.php');
require_model('articulo.php');
require_model('articulo_proveedor.php');
require_model('pedido_proveedor.php');

/**
 * Description of articulos_documento
 *
 * @author carlos
 */
class compras_actualiza_arts extends fs_controller
{
   public $documento;
   public $lineas;
   public $tipodoc;
   
   public function __construct()
   {
      parent::__construct(__CLASS__, 'Artículos documento', 'compras', FALSE, FALSE);
   }
   
   protected function private_core()
   {
      $this->share_extensions();
      
      $this->documento = FALSE;
      $this->lineas = array();
      $this->tipodoc = 'Documento';
      if( isset($_REQUEST['doc']) AND isset($_REQUEST['id']) )
      {
         if($_REQUEST['doc'] == 'pedido')
         {
            $pedido0 = new pedido_proveedor();
            $this->documento = $pedido0->get($_REQUEST['id']);
            $this->tipodoc = FS_PEDIDO;
         }
         else
         {
            $albaran0 = new albaran_proveedor();
            $this->documento = $albaran0->get($_REQUEST['id']);
            $this->tipodoc = FS_ALBARAN;
         }
         
         if($this->documento)
         {
            $this->lineas = $this->documento->get_lineas();
            
            $art0 = new articulo();
            $ap0 = new articulo_proveedor();
            
            $cambios = 0;
            foreach($this->lineas as $i => $value)
            {
               $this->lineas[$i]->refproveedor = $value->referencia;
               $this->lineas[$i]->codbarras = '';
               $this->lineas[$i]->precio_compra = 0;
               $this->lineas[$i]->dto_compra = 0;
               $this->lineas[$i]->precio_venta = 0;
               
               $ap = $ap0->get_by($value->referencia, $this->documento->codproveedor);
               if($ap)
               {
                  $this->lineas[$i]->refproveedor = $ap->refproveedor;
                  $this->lineas[$i]->precio_compra = $ap->precio;
                  $this->lineas[$i]->dto_compra = $ap->dto;
               }
               
               $articulo = $art0->get($value->referencia);
               if($articulo)
               {
                  $this->lineas[$i]->codbarras = $articulo->codbarras;
                  $this->lineas[$i]->precio_venta = $articulo->pvp;
               }
               
               /// ¿Tenemos los datos del form?
               if( isset($_POST['update_'.$value->idlinea]) )
               {
                  /**
                   * Volvemos a buscar el artículos del proveedor, pero esta vez
                   * buscamos también con la referencia del proveedor.
                   */
                  $ap = $ap0->get_by($value->referencia, $this->documento->codproveedor, $_POST['refproveedor_'.$value->idlinea]);
                  if(!$ap)
                  {
                     $ap = new articulo_proveedor();
                     $ap->codproveedor = $this->documento->codproveedor;
                  }
                  
                  $ap->referencia = $value->referencia;
                  $ap->refproveedor = $_POST['refproveedor_'.$value->idlinea];
                  $this->lineas[$i]->refproveedor = $ap->refproveedor;
                  
                  $ap->precio = floatval($_POST['coste_'.$value->idlinea]);
                  $ap->dto = floatval($_POST['dto_'.$value->idlinea]);
                  $ap->save();
                  
                  if($articulo)
                  {
                     if( isset($_POST['descripciones']) )
                     {
                        $articulo->descripcion = $_POST['descripcion_'.$value->idlinea];
                     }
                     
                     if( isset($_POST['codbarras']) )
                     {
                        $articulo->codbarras = $_POST['codbarras_'.$value->idlinea];
                        $this->lineas[$i]->codbarras = $articulo->codbarras;
                     }
                     
                     if( isset($_POST['pvps']) )
                     {
                        $articulo->set_pvp( floatval($_POST['pvp_'.$value->idlinea]) );
                     }
                     
                     /// ¿usamos la referencia de proveedor como equivalencia?
                     if($_POST['refproveedor_'.$value->idlinea] != '' AND $_POST['refproveedor_'.$value->idlinea] != $articulo->referencia)
                     {
                        if( is_null($articulo->equivalencia) )
                        {
                           $articulo->equivalencia = $_POST['refproveedor_'.$value->idlinea];
                        }
                     }
                     
                     $articulo->save();
                  }
                  
                  $cambios++;
               }
            }
            
            if($cambios > 0)
            {
               $this->new_message($cambios.' cambios realizados.');
            }
         }
         else
            $this->new_error_msg('Documento no encontrado.');
      }
      else
{'fraction_non_alphanumeric': 0.12926195861606768, 'fraction_numerical': 0.003183379408561615, 'mean_word_length': 1.4107431340872374, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 184, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5405900', 'n_tokens_mistral': 3453, 'n_tokens_neox': 3328, 'n_words': 619}