🌹🏠🌹？》《》？《》？<?php
class Articulo extends Base
{
public $id;
public $empresa;
public $articulo;
public $descripcion;
public $opera_stock;
public $unidad_medida;
public $activo;
public $upb;
public $valor_dec;
public $peso_art;
public $volumen_art;
public $volumen_estiba;
public $volumen_carga;
public $articulo_relac;
public $habilitado;
public $bulto_x_pallet;
public $volumen_caja;
public $grupo;
public $subgrupo;
public $familia;
public $tipo_caja;
public $linea; // Terminado / Insumo
public $marca; 
public $t_artic;
public $origen_pais;
public $bulto_x_caja;

public $confirmados;
public $cambio;

public $alta;
public $unidad_medida_grupo; 
public $articulo_rel;
// articulo_log
public $l_usuario;
public $l_fecha;
public $l_tipo_mov;
public $l_campo;
public $l_valor_ant;
public $l_valor_act;

// articulo_cliente
public $articulo_cliente;

public $error = 0; // falso
public $msg_error;

function __construct($r_empresa,$r_articulo)
{  
//$this->conexion        = $r_base;
$this->empresa        = $r_empresa;
$this->articulo       = strtoupper(rtrim( (string)$r_articulo));
$this->t_artic        = ".";
$this->articulo_relac = "N";
$this->activo         = "S";
$this->habilitado     = "N";
$this->bulto_x_pallet = 0;
$this->bulto_x_caja   = 0;
$this->volumen_caja   = 0;
$this->alta           = 'N';
$this->confirmados    = 'S';
$this->cambio         = 'N';

} 

function r_select_articulo()
{ 
$this->error     = 0;
$this->msg_error = "";

$sql="select * from articulo     
       where empresa  = '{$this->empresa}'
         and articulo = '{$this->articulo}' ";
$resultado = @odbc_exec($this->conexion,$sql);
if (!$resultado){
  $this->error     = 2;
  $this->msg_error = "01- Error. No se pudo leer [articulo]";
  return;
}
$row=odbc_fetch_array($resultado);
if (!$row){
  $this->alta      = 'S';
  $this->error     = 1;
  $this->msg_error = "02- Error. No se pudo leer [articulo] $sql";
  return;
}
$this->alta          = 'N';
$this->id            = $row['id'];
$this->descripcion   = $this->eliminar_simbolos(trim( (string)$row['descripcion']));
$this->opera_stock   = $row['opera_stock'];
$this->unidad_medida = trim( (string)$row['unidad_medida']);
$this->activo        = $row['activo'];
$this->upb           = $row['upb'];
$this->valor_dec     = $row['valor_dec'];
$this->peso_art      = $row['peso_art'];
$this->volumen_art   = $row['volumen_art'];
$this->volumen_estiba = $row['volumen_estiba'];
$this->volumen_carga  = $row['volumen_carga'];
$this->articulo_relac = $row['articulo_relac'];
$this->habilitado     = trim( (string)$row['habilitado']);
$this->bulto_x_pallet = $row['bulto_x_pallet'];
$this->volumen_caja   = $row['volumen_caja'];
$this->grupo          = trim( (string)$row['grupo']);
$this->subgrupo       = trim( (string)$row['subgrupo']);
$this->familia        = trim( (string)$row['familia']);
$this->tipo_caja      = trim( (string)$row['tipo_caja']);
$this->linea          = trim( (string)$row['linea']);
$this->marca          = trim( (string)$row['marca']);
$this->t_artic        = trim( (string)$row['t_artic']);
$this->origen_pais    = $row['origen_pais'];
$this->bulto_x_caja   = $row['bulto_x_caja'];
odbc_free_result($resultado);

if ($this->confirmados == 'N'){

}
else{
   if ($this->habilitado != 'S'){
      $this->error     = 3;
      $this->msg_error = "03- Error. Articulo sin confirmar !! ";
      return;
   }
   if ($this->activo != 'S'){
      $this->error     = 3;
      $this->msg_error = "04- Error. Articulo Inactivo !! ";
      return;
   }
}
if ($this->volumen_art <= 0 || empty($this->volumen_art) ){
  $this->error     = 3;
  $this->msg_error = "05- Error. Articulo con Volumen invalido  !! ";
  return;
}
if ($this->upb <= 0 || empty($this->upb) ){
  $this->error     = 3;
  $this->msg_error = "06- Error. Articulo con UPB invalido  !! ";
  return;
}

$sql=" select unidad_medida 
         from grupo
        where empresa = '{$this->empresa}'
          and grupo   = '{$this->grupo}'";
$resultado=@odbc_exec($this->conexion, $sql);
if (!$resultado){
   if ($this->cambio == 'N'){
      $this->error     = 2;
      $this->msg_error = "07- Error. No se pudo leer [grupo]  !! ";
      return;
   }
}
$row=odbc_fetch_array($resultado);
if (!$row){
   if ($this->cambio == 'N'){
      $this->error     = 1;
      $this->msg_error = "08- Error. No se pudo leer [grupo]  !! ";
      return;
   }
}
$this->unidad_medida_grupo = $row['unidad_medida'];
odbc_free_result($resultado);
   
$sql=" select * from familia
        where empresa = '{$this->empresa}'
          and familia = '{$this->familia}'";
$resultado=@odbc_exec($this->conexion, $sql);
if (!$resultado){
   if ($this->cambio == 'N'){
      $this->error     = 2;
      $this->msg_error = "09- Error. No se pudo leer [familia]  !! ";
      return;
   }
}
$row=odbc_fetch_array($resultado);
if (!$row){
   if ($this->cambio == 'N'){
      $this->error     = 1;
      $this->msg_error = "10- Error. No se pudo leer [familia]  !! ";
      return;
   }
}
odbc_free_result($resultado);

if ($this->empresa == 12 and ( $this->grupo == '02' || $this->grupo == '03') ){
}
else{
   $sql = "select * from tipo_caja 
         where empresa = '{$this->empresa}'
           and tipo_caja = '{$this->tipo_caja}' ";
   $resultado=@odbc_exec($this->conexion,$sql);
   if (!$resultado){
      if ($this->cambio == 'N'){
         $this->error     = 2;
         $this->msg_error = "11- Error. No se pudo leer [tipo_caja]  !! ";
         return;
      }
   }
   $row=odbc_fetch_array($resultado);
   if (!$row){
      if ($this->cambio == 'N'){
         $this->error     = 1;
         $this->msg_error = "12- Error. No se pudo leer [tipo_caja]  !! ";
         return;
      }
   }
   odbc_free_result($resultado);
}

return;
}  

function r_insert_articulo() 
{
$this->error     = 0;
$this->msg_error = "";
$sql="select * from cpbt_nros 
       where empresa = 99
         and deposito = 'XX'
         and cpbante = 'ARTICULO' ";
$this->r_select_fila($sql,"cpbt_nros");
if ($this->error != 0 ){
   $this->error     = 2;
   $this->msg_error = "14- Error. No se pudo leer [cpbt_nros] !!  ";
   return;
}
$this->id = $this->row['numero'];
$this->id += 1;
$sql="insert into articulo values ( '{$this->id}','{$this->empresa}','{$this->articulo}' ,'{$this->grupo}','.',
                                  '{$this->linea}','{$this->marca}','{$this->t_artic}','{$this->origen_pais}',
                                  '{$this->descripcion}','{$this->opera_stock}','{$this->unidad_medida}',
                                  '{$this->activo}', '{$this->upb}','{$this->valor_dec}','{$this->peso_art}',
                                  '{$this->volumen_art}','{$this->volumen_estiba}','{$this->volumen_carga}',
                                  '{$this->articulo_relac}','{$this->habilitado}','{$this->bulto_x_pallet}',
                                  '{$this->volumen_caja}','{$this->subgrupo}','{$this->familia}',
                                  '{$this->tipo_caja}','{$this->bulto_x_caja}' ) ";
$resultado=@odbc_exec($this->conexion,$sql);
if (!$resultado) {
  $this->error     = 2;
  $this->msg_error = "15- Error. No se pudo insertar [articulo] !! ";
  return;
}
if (odbc_num_rows($resultado) != 1){
  $this->error     = 1;
  $this->msg_error = "16- Error. No se pudo insertar [articulo]";
  return;  
}
odbc_free_result($resultado);

if ($this->tipo_base == 'S'){
   $this->l_fecha = GLSA::r_reviso_fecha($this->l_fecha,"Ymd H:i:s");
}
$sql="insert into articulo_log values ('{$this->empresa}','{$this->articulo}','{$this->l_tipo_mov}','{$this->l_campo}',
                                       '{$this->l_valor_ant}','{$this->l_valor_act}','{$this->l_usuario}','{$this->l_fecha}','')";
$resultado=@odbc_exec($this->conexion,$sql);
if (!$resultado) {
  $this->error     = 2;
  $this->msg_error = "17- Error. No se pudo insertar [articulo_log] !! ";
  return;
}
if (odbc_num_rows($resultado) != 1){
  $this->error     = 1;
  $this->msg_error = "18- Error. No se pudo insertar [articulo_log] !! ";
  return;  
}
odbc_free_result($resultado);

$sql="update cpbt_nros set numero = numero + 1 
       where empresa = 99
         and deposito = 'XX'
         and cpbante = 'ARTICULO' ";
$this->r_exec($sql,"cpbt_nros",1);
if ($this->error != 0 ){
   $this->error     = 2;
   $this->msg_error = "19- Error. No se pudo leer [cpbt_nros] !!  ";
   return;
}

return;
}

function r_update_articulo() 
{

$this->error     = 0;
$this->msg_error = "";
$p_cancel        = false;
$sql="update articulo set descripcion = '{$this->descripcion}',
                          linea       = '{$this->linea}',
                          grupo       = '{$this->grupo}',
                          subgrupo    = '{$this->subgrupo}',
                          familia     = '{$this->familia}',
                          origen_pais = '{$this->origen_pais}',
                          opera_stock = '{$this->opera_stock}',
                          unidad_medida = '{$this->unidad_medida}',
                          activo        = '{$this->activo}',
                          habilitado    = '{$this->habilitado}',
                          volumen_estiba = '{$this->volumen_estiba}',
                          volumen_carga  = '{$this->volumen_carga}',
                          bulto_x_pallet = '{$this->bulto_x_pallet}',
                          volumen_caja   = '{$this->volumen_caja}',
                          tipo_caja      = '{$this->tipo_caja}',
                          bulto_x_caja   = '{$this->bulto_x_caja}'
       where empresa  = '{$this->empresa}'
         and articulo = '{$this->articulo}'";
$resultado=@odbc_exec($this->conexion,$sql);
if (!$resultado) {
  $this->error     = 2;
  $this->msg_error = "20- Error. No se pudo actualizar [articulo] !! ";
  return;
}
if (odbc_num_rows($resultado) != 1){
  $this->error     = 1;
  $this->msg_error = "21- Error. No se pudo actualizar [articulo] !! ";
  return;  
}
odbc_free_result($resultado);

return;
}

function r_insert_articulo_log()
{
$this->error     = 0;
$this->msg_error = "";

if ($this->tipo_base == 'S'){
   //$this->l_fecha = date("Ymd H:i:s",strtotime($this->l_fecha) );
   $this->l_fecha = GLSA::r_reviso_fecha($this->l_fecha,"Ymd H:i:s");
}
$sql="insert into articulo_log values ('{$this->empresa}','{$this->articulo}','{$this->l_tipo_mov}','{$this->l_campo}',
                                       '{$this->l_valor_ant}','{$this->l_valor_act}','{$this->l_usuario}','{$this->l_fecha}','')";
$resultado=@odbc_exec($this->conexion,$sql);
if (!$resultado) {
  $this->error     = 2;
  $this->msg_error = "22- Error. No se pudo insertar [articulo_log] !! ";
  return;
}
if (odbc_num_rows($resultado) != 1){
  $this->error     = 1;
  $this->msg_error = "23- Error. No se pudo insertar [articulo_log] !! ";
  return;  
}
odbc_free_result($resultado);
return;
}

function r_insert_rel_art()
{
   $this->error     = 0;
   $this->msg_error = "";
   $sql="insert into rel_art values ( '{$this->empresa}','{$this->articulo}','{$this->articulo_rel}','')";
   $resultado=@odbc_exec($this->conexion,$sql);
   if (!$resultado) {
      $this->error     = 2;
      $this->msg_error = "24- Error. No se pudo insertar [rel_art] !! ";
      return;
   }
   if (odbc_num_rows($resultado) != 1){
      $this->error     = 1;
      $this->msg_error = "25- Error. No se pudo insertar [rel_art] !! ";
      return;
   }
   odbc_free_result($resultado);
   return;
}

function r_insert_r_artic()
{
$this->error     = 0;
$this->msg_error = "";
$sql="insert into r_artic values ( '{$this->empresa}','{$this->articulo}','{$this->articulo_rel}')";
$resultado=@odbc_exec($this->conexion,$sql);
if (!$resultado) {
   $this->error     = 2;
   $this->msg_error = "26- Error. No se pudo insertar [r_artic] !! ";
   return;
}
if (odbc_num_rows($resultado) != 1){
   $this->error     = 1;
   $this->msg_error = "27- Error. No se pudo insertar [r_artic] !! ";
   return;
}
odbc_free_result($resultado);
return;
}

function r_id_articulo()
{
$this->error     = 0;
$this->msg_error = "";
$p_cancel        = false;
$sql="select id from articulo  
       where empresa = '{$this->empresa}'
         and articulo = '{$this->articulo}' ";
$resultado=@odbc_exec($this->conexion,$sql);
if (!$resultado) {
   $this->error     = 2;
   $this->msg_error = "28- Error. No se pudo leer [articulo] !! ";
   return;
}
$row=odbc_fetch_array($resultado);
if (!$row){
   $this->error     = 1;
   $this->msg_error = "29- Error. No se pudo leer [articulo] !! ";
   return;
}
$this->id = $row['id'];
odbc_free_result($resultado);

return ;
}

function r_articulo_de_relacion()
{
$this->error     = 0;
$this->msg_error = "";
$p_cancel        = false;
$p_articulo      = '';

$sql="select articulo from rel_art 
    where empresa = '{$this->empresa}'
      and articulo_rel = '{$this->articulo}' ";
$resultado=@odbc_exec($this->conexion,$sql);
if (!$resultado) {
   $this->error     = 2;
   $this->msg_error = "30- Error. No se pudo leer [rel_art] !! ";
   return $p_articulo;
}
$row=odbc_fetch_array($resultado);
if (!$row){
   $this->error     = 1;
   $this->msg_error = "31- Error. No se pudo leer [rel_art] !! ";
   return $p_articulo;
}
$p_articulo = rtrim( (string)$row['articulo']);
odbc_free_result($resultado);

return $p_articulo ;
}

function r_update_articulo_cambios()
{

$this->error     = 0;
$this->msg_error = "";
$p_cancel        = false;
$sql="update articulo set upb = '{$this->upb}',
                          volumen_art = '{$this->volumen_art}',
                          peso_art    = '{$this->peso_art}'
       where empresa  = '{$this->empresa}'
         and articulo = '{$this->articulo}'";
$resultado=@odbc_exec($this->conexion,$sql);
if (!$resultado) {
   $this->error     = 2;
   $this->msg_error = "32- Error. No se pudo actualizar [articulo] !!";
   return;
}
if (odbc_num_rows($resultado) != 1){
   $this->error     = 1;
   $this->msg_error = "33- Error. No se pudo actualizar [articulo] !!";
   return;
}
odbc_free_result($resultado);

return;
}

function r_select_articulo_cliente()
{
$this->error = 0;
$this->msg_error = '';
$sql="select * from articulo_cliente
       where empresa = '{$this->empresa}'
         and articulo_cliente = '{$this->articulo_cliente}'
         and estado  = 1 ";
$this->r_select_fila($sql,"articulo_cliemte");
if ($this->error != 0 ){
   $this->error = 1;
   $this->msg_error = '34- Error. Articulo Cliente inexistente !! ';
   return;
}
$this->articulo = $this->row['articulo'];

return;
}

public static function r_artic($r_empresa,$r_articulo)
{
global $Base;

$pa_return['error'] = 'OK';
$pa_return['msg']   = '';
$pa_return['articulo'] = '';

$sql="select * from r_artic
      where empresa      = '$r_empresa'
        and articulo_rel = '$r_articulo'";
$Base->r_select_fila($sql,"r_artic");
if ($Base->error != 0){
   $pa_return['error'] = "NOK";
   $pa_return['msg']   = "34- Error. No se pudo leer [r_artic] !! ";
   return $pa_return;
}
$pa_return['articulo'] = rtrim( (string)$Base->row['articulo']);

return $pa_return;
}

public static function r_ean_articulo($r_empresa,$r_articulo)
{
global $Base;

$pa_return['error'] = 'OK';
$pa_return['msg']   = '';
$pa_return['ean'] = '';

$sql="select articulo_rel from r_artic
        where empresa = '$r_empresa'
          and articulo = '$r_articulo'
          and articulo != articulo_rel
        order by 1 desc";
$resultado=@odbc_exec($Base->conexion,$sql);
if ($resultado){
   $row=odbc_fetch_array($resultado);
   if ($row){
      $pa_return['ean']=$row['articulo_rel'];
   }
   odbc_free_result($resultado);
}

return $pa_return;

}

function __destruct()
{
  //odbc_close($this->conexion);
}
}
?>