コード例 #1
0
 protected function editAction()
 {
     $this->page->extra_url = '&action=edit&ref=' . urlencode($this->articulo->referencia);
     $this->template = 'cuentas_articulo/form';
     if ($_SERVER['REQUEST_METHOD'] === 'POST') {
         foreach ($_POST as $name => $value) {
             if (property_exists($this->articulo, $name)) {
                 $this->articulo->{$name} = $value;
             }
         }
         if ($this->articulo->save()) {
             $this->new_message('Articulo actualizado correctamente!');
         } else {
             $this->new_error_msg('Error al actualizar el artículo!');
         }
     }
 }
コード例 #2
0
 private function new_articulo()
 {
     /// desactivamos la plantilla HTML
     $this->template = FALSE;
     $art0 = new articulo();
     $art0->referencia = $_REQUEST['referencia'];
     if ($art0->exists()) {
         $this->results[] = $art0->get($_REQUEST['referencia']);
     } else {
         $art0->descripcion = $_REQUEST['descripcion'];
         $art0->set_impuesto($_REQUEST['codimpuesto']);
         $art0->set_pvp(floatval($_REQUEST['pvp']));
         if ($_REQUEST['codfamilia'] != '') {
             $art0->codfamilia = $_REQUEST['codfamilia'];
         }
         if ($_REQUEST['codfabricante'] != '') {
             $art0->codfabricante = $_REQUEST['codfabricante'];
         }
         if ($art0->save()) {
             $this->results[] = $art0;
         }
     }
     header('Content-Type: application/json');
     echo json_encode($this->results);
 }
コード例 #3
0
 private function new_articulo()
 {
     /// desactivamos la plantilla HTML
     $this->template = FALSE;
     $art0 = new articulo();
     $art0->referencia = $_REQUEST['referencia'];
     if ($art0->exists()) {
         $this->results[] = $art0->get($_REQUEST['referencia']);
     } else {
         $art0->descripcion = $_REQUEST['descripcion'];
         $art0->set_impuesto($_REQUEST['codimpuesto']);
         $art0->set_pvp(floatval($_REQUEST['pvp']));
         $art0->costemedio = floatval($_REQUEST['coste']);
         $art0->preciocoste = floatval($_REQUEST['coste']);
         $art0->publico = isset($_POST['publico']);
         if ($_POST['codfamilia'] != '') {
             $art0->codfamilia = $_REQUEST['codfamilia'];
         }
         if ($_POST['codfabricante'] != '') {
             $art0->codfabricante = $_REQUEST['codfabricante'];
         }
         if ($_POST['refproveedor'] != '' and $_POST['refproveedor'] != $_POST['referencia']) {
             $art0->equivalencia = $_POST['refproveedor'];
         }
         if ($art0->save()) {
             $art0->coste = floatval($_POST['coste']);
             $art0->dtopor = 0;
             /// buscamos y guardamos el artículo del proveedor
             $ap = $this->articulo_prov->get_by($art0->referencia, $_POST['codproveedor'], $_POST['refproveedor']);
             if ($ap) {
                 $art0->coste = $ap->precio;
                 $art0->dtopor = $ap->dto;
             } else {
                 $ap = new articulo_proveedor();
                 $ap->codproveedor = $_POST['codproveedor'];
             }
             $ap->referencia = $art0->referencia;
             $ap->refproveedor = $_POST['refproveedor'];
             $ap->descripcion = $art0->descripcion;
             $ap->codimpuesto = $art0->codimpuesto;
             $ap->precio = floatval($_POST['coste']);
             /// pero solamente si tiene una refproveedor asignada
             if ($_POST['refproveedor'] != '') {
                 $ap->save();
             }
             $this->results[] = $art0;
         }
     }
     header('Content-Type: application/json');
     echo json_encode($this->results);
 }
コード例 #4
0
 protected function private_core()
 {
     /// ¿El usuario tiene permiso para eliminar en esta página?
     $this->allow_delete = $this->user->allow_delete_on(__CLASS__);
     $articulo = new articulo();
     $this->familia = new familia();
     $this->fabricante = new fabricante();
     $this->impuesto = new impuesto();
     $this->tarifa = new tarifa();
     $inventario = new inventario();
     /**
      * Si hay alguna extensión de tipo config y texto no_tab_tarifas,
      * desactivamos la pestaña tarifas.
      */
     $this->mostrar_tab_tarifas = TRUE;
     foreach ($this->extensions as $ext) {
         if ($ext->type == 'config' and $ext->text == 'no_tab_tarifas') {
             $this->mostrar_tab_tarifas = FALSE;
             break;
         }
     }
     if (isset($_POST['codtarifa'])) {
         /// crear/editar tarifa
         $tar0 = $this->tarifa->get($_POST['codtarifa']);
         if (!$tar0) {
             $tar0 = new tarifa();
             $tar0->codtarifa = $_POST['codtarifa'];
         }
         $tar0->nombre = $_POST['nombre'];
         $tar0->aplicar_a = $_POST['aplicar_a'];
         $tar0->set_x(floatval($_POST['dtopor']));
         $tar0->set_y(floatval($_POST['inclineal']));
         if ($tar0->save()) {
             $this->new_message("Tarifa guardada correctamente.");
         } else {
             $this->new_error_msg("¡Imposible guardar la tarifa!");
         }
     } else {
         if (isset($_GET['delete_tarifa'])) {
             /// eliminar tarifa
             $tar0 = $this->tarifa->get($_GET['delete_tarifa']);
             if ($tar0) {
                 if ($tar0->delete()) {
                     $this->new_message("Tarifa borrada correctamente.");
                 } else {
                     $this->new_error_msg("¡Imposible borrar la tarifa!");
                 }
             } else {
                 $this->new_error_msg("¡La tarifa no existe!");
             }
         } else {
             if (isset($_POST['referencia']) and isset($_POST['codfamilia']) and isset($_POST['codimpuesto'])) {
                 /// nuevo artículo
                 $this->save_codfamilia($_POST['codfamilia']);
                 $this->save_codimpuesto($_POST['codimpuesto']);
                 $art0 = $articulo->get($_POST['referencia']);
                 if ($art0) {
                     $this->new_error_msg('Ya existe el artículo <a href="' . $art0->url() . '">' . $art0->referencia . '</a>');
                 } else {
                     $articulo->referencia = $_POST['referencia'];
                     $articulo->descripcion = $_POST['referencia'];
                     $articulo->nostock = isset($_POST['nostock']);
                     if ($_POST['codfamilia'] != '') {
                         $articulo->codfamilia = $_POST['codfamilia'];
                     }
                     if ($_POST['codfabricante'] != '') {
                         $articulo->codfabricante = $_POST['codfabricante'];
                     }
                     $articulo->set_pvp(floatval($_POST['pvp']));
                     $articulo->set_impuesto($_POST['codimpuesto']);
                     if ($articulo->save()) {
                         $inventario->codalmacen = $_POST['codfamilia'];
                         $inventario->referencia = $_POST['referencia'];
                         $inventario->save();
                         header('location: ' . $articulo->url());
                     } else {
                         $this->new_error_msg("¡Error al crear el articulo!");
                     }
                 }
             } else {
                 if (isset($_GET['delete'])) {
                     /// eliminar artículo
                     $art = $articulo->get($_GET['delete']);
                     if ($art) {
                         if ($art->delete()) {
                             $this->new_message("Articulo " . $art->referencia . " eliminado correctamente.");
                         } else {
                             $this->new_error_msg("¡Error al eliminarl el articulo!");
                         }
                     }
                 }
             }
         }
     }
     /// recogemos los datos necesarios para la búsqueda
     $this->buscar = FALSE;
     $this->codfamilia = '';
     if (isset($_REQUEST['codfamilia'])) {
         $this->codfamilia = $_REQUEST['codfamilia'];
         $this->buscar = TRUE;
     }
     $this->codfabricante = '';
     if (isset($_REQUEST['codfabricante'])) {
         $this->codfabricante = $_REQUEST['codfabricante'];
         $this->buscar = TRUE;
     }
     $this->con_stock = isset($_REQUEST['con_stock']);
     $this->bloqueados = isset($_REQUEST['bloqueados']);
     if (isset($_REQUEST['query']) or $this->con_stock or $this->bloqueados) {
         $this->buscar = TRUE;
     }
     $this->offset = 0;
     if (isset($_GET['offset'])) {
         $this->offset = intval($_GET['offset']);
     }
     if (isset($_GET['solo_stock'])) {
         $this->resultados = $articulo->search('', $this->offset, '', TRUE);
     } else {
         if (isset($_GET['public'])) {
             $this->resultados = $articulo->all_publico($this->offset);
         } else {
             $this->resultados = $articulo->search($this->query, $this->offset, $this->codfamilia, $this->con_stock, $this->codfabricante, $this->bloqueados);
         }
     }
 }
コード例 #5
0
 protected function private_core()
 {
     /// ¿El usuario tiene permiso para eliminar en esta página?
     $this->allow_delete = $this->user->allow_delete_on(__CLASS__);
     $articulo = new articulo();
     $this->familia = new familia();
     $this->fabricante = new fabricante();
     $this->impuesto = new impuesto();
     $this->tarifa = new tarifa();
     /**
      * Si hay alguna extensión de tipo config y texto no_tab_tarifas,
      * desactivamos la pestaña tarifas.
      */
     $this->mostrar_tab_tarifas = TRUE;
     foreach ($this->extensions as $ext) {
         if ($ext->type == 'config' and $ext->text == 'no_tab_tarifas') {
             $this->mostrar_tab_tarifas = FALSE;
             break;
         }
     }
     if (isset($_POST['codtarifa'])) {
         /// crear/editar tarifa
         $tar0 = $this->tarifa->get($_POST['codtarifa']);
         if (!$tar0) {
             $tar0 = new tarifa();
             $tar0->codtarifa = $_POST['codtarifa'];
         }
         $tar0->nombre = $_POST['nombre'];
         $tar0->aplicar_a = $_POST['aplicar_a'];
         $tar0->set_x(floatval($_POST['dtopor']));
         $tar0->set_y(floatval($_POST['inclineal']));
         $tar0->mincoste = isset($_POST['mincoste']);
         $tar0->maxpvp = isset($_POST['maxpvp']);
         if ($tar0->save()) {
             $this->new_message("Tarifa guardada correctamente.");
         } else {
             $this->new_error_msg("¡Imposible guardar la tarifa!");
         }
     } else {
         if (isset($_GET['delete_tarifa'])) {
             /// eliminar tarifa
             $tar0 = $this->tarifa->get($_GET['delete_tarifa']);
             if ($tar0) {
                 if ($tar0->delete()) {
                     $this->new_message("Tarifa borrada correctamente.");
                 } else {
                     $this->new_error_msg("¡Imposible borrar la tarifa!");
                 }
             } else {
                 $this->new_error_msg("¡La tarifa no existe!");
             }
         } else {
             if (isset($_POST['referencia']) and isset($_POST['codfamilia']) and isset($_POST['codimpuesto'])) {
                 /// nuevo artículo
                 $this->save_codimpuesto($_POST['codimpuesto']);
                 $art0 = $articulo->get($_POST['referencia']);
                 if ($art0) {
                     $this->new_error_msg('Ya existe el artículo <a href="' . $art0->url() . '">' . $art0->referencia . '</a>');
                 } else {
                     if ($_POST['referencia'] == '') {
                         $articulo->referencia = $articulo->get_new_referencia();
                     } else {
                         $articulo->referencia = $_POST['referencia'];
                     }
                     $articulo->descripcion = $_POST['descripcion'];
                     $articulo->nostock = isset($_POST['nostock']);
                     if ($_POST['codfamilia'] != '') {
                         $articulo->codfamilia = $_POST['codfamilia'];
                     }
                     if ($_POST['codfabricante'] != '') {
                         $articulo->codfabricante = $_POST['codfabricante'];
                     }
                     $articulo->set_pvp(floatval($_POST['pvp']));
                     $articulo->set_impuesto($_POST['codimpuesto']);
                     if ($articulo->save()) {
                         header('location: ' . $articulo->url());
                     } else {
                         $this->new_error_msg("¡Error al crear el articulo!");
                     }
                 }
             } else {
                 if (isset($_GET['delete'])) {
                     /// eliminar artículo
                     $art = $articulo->get($_GET['delete']);
                     if ($art) {
                         if ($art->delete()) {
                             $this->new_message("Articulo " . $art->referencia . " eliminado correctamente.");
                         } else {
                             $this->new_error_msg("¡Error al eliminarl el articulo!");
                         }
                     }
                 }
             }
         }
     }
     /// obtenemos los datos para la búsqueda
     $this->offset = 0;
     if (isset($_REQUEST['offset'])) {
         $this->offset = intval($_REQUEST['offset']);
     }
     $this->b_codfamilia = '';
     if (isset($_REQUEST['b_codfamilia'])) {
         $this->b_codfamilia = $_REQUEST['b_codfamilia'];
     }
     $this->b_codfabricante = '';
     if (isset($_REQUEST['b_codfabricante'])) {
         $this->b_codfabricante = $_REQUEST['b_codfabricante'];
     }
     $this->b_constock = isset($_REQUEST['b_constock']);
     $this->b_bloqueados = isset($_REQUEST['b_bloqueados']);
     $this->b_publicos = isset($_REQUEST['b_publicos']);
     $this->b_codtarifa = '';
     if (isset($_REQUEST['b_codtarifa'])) {
         $this->b_codtarifa = $_REQUEST['b_codtarifa'];
         setcookie('b_codtarifa', $this->b_codtarifa, time() + FS_COOKIES_EXPIRE);
     } else {
         if (isset($_COOKIE['b_codtarifa'])) {
             $this->b_codtarifa = $_COOKIE['b_codtarifa'];
         }
     }
     $this->b_orden = 'refmin';
     if (isset($_REQUEST['b_orden'])) {
         $this->b_orden = $_REQUEST['b_orden'];
         setcookie('ventas_articulos_orden', $this->b_orden, time() + FS_COOKIES_EXPIRE);
     } else {
         if (isset($_COOKIE['ventas_articulos_orden'])) {
             $this->b_orden = $_COOKIE['ventas_articulos_orden'];
         }
     }
     $this->b_url = $this->url() . "&query=" . $this->query . "&b_codfabricante=" . $this->b_codfabricante . "&b_codfamilia=" . $this->b_codfamilia . "&b_codtarifa=" . $this->b_codtarifa;
     if ($this->b_constock) {
         $this->b_url .= '&b_constock=TRUE';
     }
     if ($this->b_bloqueados) {
         $this->b_url .= '&b_bloqueados=TRUE';
     }
     if ($this->b_publicos) {
         $this->b_url .= '&b_publicos=TRUE';
     }
     $this->search_articulos();
 }
コード例 #6
0
 protected function process()
 {
     $this->custom_search = TRUE;
     $articulo = new articulo();
     $this->familia = new familia();
     $this->impuesto = new impuesto();
     $this->tarifa = new tarifa();
     $this->buttons[] = new fs_button('b_nuevo_articulo', 'Nuevo', '#nuevo');
     $this->buttons[] = new fs_button('b_modificar_iva', 'Modificar IVA', '#mod-iva');
     $this->codfamilia = '';
     if (isset($_REQUEST['codfamilia'])) {
         $this->codfamilia = $_REQUEST['codfamilia'];
     }
     $this->con_stock = isset($_REQUEST['con_stock']);
     if (isset($_POST['codtarifa'])) {
         $tar0 = $this->tarifa->get($_POST['codtarifa']);
         if (!$tar0) {
             $tar0 = new tarifa();
             $tar0->codtarifa = $_POST['codtarifa'];
         }
         $tar0->nombre = $_POST['nombre'];
         $tar0->incporcentual = 0 - floatval($_POST['dtopor']);
         if ($tar0->save()) {
             $this->new_message("Tarifa guardada correctamente.");
         } else {
             $this->new_error_msg("¡Imposible guardar la tarifa!");
         }
     } else {
         if (isset($_GET['delete_tarifa'])) {
             $tar0 = $this->tarifa->get($_GET['delete_tarifa']);
             if ($tar0) {
                 if ($tar0->delete()) {
                     $this->new_message("Tarifa borrada correctamente.");
                 } else {
                     $this->new_error_msg("¡Imposible borrar la tarifa!");
                 }
             } else {
                 $this->new_error_msg("¡La tarifa no existe!");
             }
         } else {
             if (isset($_POST['mod_iva'])) {
                 if ($_POST['codimpuesto'] == $_POST['codimpuesto2']) {
                     $this->new_error_msg("¡Has seleccionado el mismo IVA dos veces!");
                 } else {
                     if ($articulo->move_codimpuesto($_POST['codimpuesto'], $_POST['codimpuesto2'], isset($_POST['mantener']))) {
                         $this->new_message("Artículos modificados correctamente.");
                     } else {
                         $this->new_error_msg("¡Impodible modificar los artículos!");
                     }
                 }
             } else {
                 if (isset($_POST['referencia']) and isset($_POST['codfamilia']) and isset($_POST['codimpuesto'])) {
                     $this->save_codfamilia($_POST['codfamilia']);
                     $this->save_codimpuesto($_POST['codimpuesto']);
                     $art0 = $articulo->get($_POST['referencia']);
                     if ($art0) {
                         $this->new_error_msg('Ya existe el artículo <a href="' . $art0->url() . '">' . $art0->referencia . '</a>');
                     } else {
                         $articulo->referencia = $_POST['referencia'];
                         $articulo->descripcion = $_POST['referencia'];
                         $articulo->codfamilia = $_POST['codfamilia'];
                         $articulo->set_impuesto($_POST['codimpuesto']);
                         if ($articulo->save()) {
                             header('location: ' . $articulo->url());
                         } else {
                             $this->new_error_msg("¡Error al crear el articulo!");
                         }
                     }
                 } else {
                     if (isset($_GET['delete'])) {
                         $art = $articulo->get($_GET['delete']);
                         if ($art) {
                             if ($art->delete()) {
                                 $this->new_message("Articulo " . $art->referencia . " eliminado correctamente.");
                             } else {
                                 $this->new_error_msg("¡Error al eliminarl el articulo!");
                             }
                         }
                     }
                 }
             }
         }
     }
     $this->offset = 0;
     if (isset($_GET['offset'])) {
         $this->offset = intval($_GET['offset']);
     }
     if ($this->query != '') {
         $this->resultados = $articulo->search($this->query, $this->offset, $this->codfamilia, $this->con_stock);
     } else {
         if (isset($_GET['solo_stock'])) {
             $this->resultados = $articulo->search('', $this->offset, '', TRUE);
         } else {
             if (isset($_GET['public'])) {
                 $this->resultados = $articulo->all_publico($this->offset);
             } else {
                 $this->resultados = $articulo->all($this->offset);
             }
         }
     }
 }
コード例 #7
0
 private function csvline2articulo($tarifa)
 {
     $retorno = FALSE;
     if (count($tarifa) >= 4) {
         // sustituimos las comas por puntos en el pvp
         $tarifa[1] = floatval(str_replace(',', '.', $tarifa[1]));
         $articulo = $this->articulo->get($tarifa[0] . $this->family_data->sufijo);
         if ($articulo) {
             if (strlen($tarifa[2]) > 0) {
                 $articulo->descripcion = $tarifa[2];
             }
             if (strlen($tarifa[3]) > 0) {
                 $articulo->codbarras = $tarifa[3];
             }
             if ($this->family_data->pvp_max) {
                 if ($this->family_data->con_iva) {
                     $pvp = max(array($tarifa[1], $articulo->show_pvp_iva(FALSE)));
                 } else {
                     $pvp = max(array($tarifa[1], $articulo->pvp));
                 }
             } else {
                 $pvp = $tarifa[1];
             }
             if ($this->family_data->con_iva) {
                 $articulo->set_pvp_iva($pvp);
             } else {
                 $articulo->set_pvp($pvp);
             }
             if ($articulo->save()) {
                 if (count($tarifa) >= 5) {
                     /// ¿Actualizamos el stock?
                     if (strlen($tarifa[4]) > 0) {
                         $articulo->set_stock($this->empresa->codalmacen, floatval($tarifa[4]));
                     }
                 }
                 $retorno = TRUE;
                 $this->family_data->articulos_actualizados += 1;
                 $diff = $articulo->pvp - $articulo->pvp_ant;
                 if (abs($diff) > 0.01) {
                     if ($articulo->pvp > $articulo->pvp_ant) {
                         $this->family_data->pvp_suben += 1;
                     } else {
                         $this->family_data->pvp_bajan += 1;
                     }
                     if ($diff != 0 and $articulo->pvp != 0) {
                         $diff = $diff * 100 / $articulo->pvp;
                         $this->family_data->pvp_sum_diferencias += $diff;
                     }
                 } else {
                     $this->family_data->pvp_igual += 1;
                 }
             } else {
                 $this->new_error_msg('Hay un error en el artículo ' . $articulo->referencia);
             }
         } else {
             if ($this->family_data->no_nuevos) {
                 $retorno = TRUE;
             } else {
                 $articulo = new articulo();
                 $articulo->referencia = $tarifa[0] . $this->family_data->sufijo;
                 $articulo->descripcion = $tarifa[2];
                 $articulo->codbarras = $tarifa[3];
                 $articulo->codfamilia = $this->familia->codfamilia;
                 $articulo->set_impuesto($this->family_data->codimpuesto);
                 if ($this->family_data->con_iva) {
                     $articulo->set_pvp_iva($tarifa[1]);
                 } else {
                     $articulo->set_pvp($tarifa[1]);
                 }
                 if ($articulo->save()) {
                     if (count($tarifa) >= 5) {
                         /// ¿Actualizamos el stock?
                         if (strlen($tarifa[4]) > 0) {
                             $articulo->set_stock($this->empresa->codalmacen, floatval($tarifa[4]));
                         }
                     }
                     $retorno = TRUE;
                     $this->family_data->articulos_nuevos += 1;
                 } else {
                     $this->new_error_msg('Hay un error en el artículo ' . $articulo->referencia);
                 }
             }
         }
     } else {
         $retorno = TRUE;
     }
     return $retorno;
 }