private function modificar() { if (isset($_POST['pvpiva'])) { $continuar = TRUE; $this->articulo->set_impuesto($_POST['codimpuesto']); $this->articulo->set_pvp_iva(floatval($_POST['pvpiva'])); if (isset($_POST['preciocoste'])) { $this->articulo->costemedio = $this->articulo->preciocoste = floatval($_POST['preciocoste']); } if ($this->articulo->save()) { $this->new_message("Precio modificado correctamente."); } else { $this->new_error_msg("Error al modificar el precio."); } } else { if (isset($_POST['almacen'])) { if ($_POST['cantidadini'] == $_POST['cantidad']) { /// sin cambios de stock, pero aún así guardamos la ubicación foreach ($this->articulo->get_stock() as $stock) { if ($stock->codalmacen == $_POST['almacen']) { /// forzamos que se asigne el nombre del almacén $stock->nombre(); $stock->ubicacion = $_POST['ubicacion']; if ($stock->save()) { $this->new_message('Cambios guardados correctamente.'); } } } } else { if ($this->articulo->set_stock($_POST['almacen'], $_POST['cantidad'])) { $this->new_message("Stock guardado correctamente."); /// añadimos la regularización foreach ($this->articulo->get_stock() as $stock) { if ($stock->codalmacen == $_POST['almacen']) { /// forzamos que se asigne el nombre del almacén $stock->nombre(); $stock->ubicacion = $_POST['ubicacion']; $stock->save(); $regularizacion = new regularizacion_stock(); $regularizacion->idstock = $stock->idstock; $regularizacion->cantidadini = floatval($_POST['cantidadini']); $regularizacion->cantidadfin = floatval($_POST['cantidad']); $regularizacion->codalmacendest = $_POST['almacen']; $regularizacion->motivo = $_POST['motivo']; $regularizacion->nick = $this->user->nick; if ($regularizacion->save()) { $this->new_message('Cambios guardados correctamente.'); } break; } } } else { $this->new_error_msg("Error al guardar el stock."); } } } else { if (isset($_GET['deletereg'])) { $reg = new regularizacion_stock(); $regularizacion = $reg->get($_GET['deletereg']); if ($regularizacion) { if ($regularizacion->delete()) { $this->new_message('Regularización eliminada correctamente.'); } else { $this->new_error_msg('Error al eliminar la regularización.'); } } else { $this->new_error_msg('Regularización no encontrada.'); } } else { if (isset($_POST['imagen'])) { if (is_uploaded_file($_FILES['fimagen']['tmp_name'])) { $png = substr(strtolower($_FILES['fimagen']['name']), -3) == 'png'; $this->articulo->set_imagen(file_get_contents($_FILES['fimagen']['tmp_name']), $png); if ($this->articulo->save()) { $this->new_message("Imagen del articulo modificada correctamente"); } else { $this->new_error_msg("¡Error al guardar la imagen del articulo!"); } } } else { if (isset($_GET['delete_img'])) { $this->articulo->set_imagen(NULL); if ($this->articulo->save()) { $this->new_message("Imagen del articulo eliminada correctamente"); } else { $this->new_error_msg("¡Error al eliminar la imagen del articulo!"); } } else { if (isset($_POST['referencia'])) { $this->articulo->descripcion = $_POST['descripcion']; $this->articulo->tipo = NULL; if ($_POST['tipo'] != '') { $this->articulo->tipo = $_POST['tipo']; } $this->articulo->codfamilia = NULL; if ($_POST['codfamilia'] != '') { $this->articulo->codfamilia = $_POST['codfamilia']; } $this->articulo->codfabricante = NULL; if ($_POST['codfabricante'] != '') { $this->articulo->codfabricante = $_POST['codfabricante']; } /// ¿Existe ya ese código de barras? if ($_POST['codbarras'] != '') { $arts = $this->articulo->search_by_codbar($_POST['codbarras']); if ($arts) { foreach ($arts as $art2) { if ($art2->referencia != $this->articulo->referencia) { $this->new_advice('Ya hay un artículo con este mismo código de barras. ' . 'En concreto, el artículo <a href="' . $art2->url() . '">' . $art2->referencia . '</a>.'); break; } } } } $this->articulo->codbarras = $_POST['codbarras']; $this->articulo->partnumber = $_POST['partnumber']; $this->articulo->equivalencia = $_POST['equivalencia']; $this->articulo->bloqueado = isset($_POST['bloqueado']); $this->articulo->controlstock = isset($_POST['controlstock']); $this->articulo->nostock = isset($_POST['nostock']); $this->articulo->secompra = isset($_POST['secompra']); $this->articulo->sevende = isset($_POST['sevende']); $this->articulo->publico = isset($_POST['publico']); $this->articulo->observaciones = $_POST['observaciones']; $this->articulo->stockmin = floatval($_POST['stockmin']); $this->articulo->stockmax = floatval($_POST['stockmax']); $this->articulo->trazabilidad = isset($_POST['trazabilidad']); if ($this->articulo->save()) { $this->new_message("Datos del articulo modificados correctamente"); $img = $this->articulo->imagen_url(); $this->articulo->set_referencia($_POST['nreferencia']); /// ¿Renombramos la imagen? if ($img) { @rename($img, $this->articulo->imagen_url()); } /** * Renombramos la referencia en el resto de tablas: lineasalbaranes, lineasfacturas... */ if ($this->db->table_exists('lineasalbaranescli')) { $this->db->exec("UPDATE lineasalbaranescli SET referencia = " . $this->empresa->var2str($_POST['nreferencia']) . " WHERE referencia = " . $this->empresa->var2str($_POST['referencia']) . ";"); } if ($this->db->table_exists('lineasalbaranesprov')) { $this->db->exec("UPDATE lineasalbaranesprov SET referencia = " . $this->empresa->var2str($_POST['nreferencia']) . " WHERE referencia = " . $this->empresa->var2str($_POST['referencia']) . ";"); } if ($this->db->table_exists('lineasfacturascli')) { $this->db->exec("UPDATE lineasfacturascli SET referencia = " . $this->empresa->var2str($_POST['nreferencia']) . " WHERE referencia = " . $this->empresa->var2str($_POST['referencia']) . ";"); } if ($this->db->table_exists('lineasfacturasprov')) { $this->db->exec("UPDATE lineasfacturasprov SET referencia = " . $this->empresa->var2str($_POST['nreferencia']) . " WHERE referencia = " . $this->empresa->var2str($_POST['referencia']) . ";"); } /// esto es una personalización del plugin producción, será eliminado este código en futuras versiones. if ($this->db->table_exists('lineasfabricados')) { $this->db->exec("UPDATE lineasfabricados SET referencia = " . $this->empresa->var2str($_POST['nreferencia']) . " WHERE referencia = " . $this->empresa->var2str($_POST['referencia']) . ";"); } } else { $this->new_error_msg("¡Error al guardar el articulo!"); } } else { if (isset($_GET['recalcular_stock'])) { $this->calcular_stock_real(); } else { if (isset($_POST['nueva_combi'])) { $comb1 = new articulo_combinacion(); $comb1->referencia = $this->articulo->referencia; $comb1->impactoprecio = floatval($_POST['impactoprecio']); $error = TRUE; $valor0 = new atributo_valor(); for ($i = 0; $i < 10; $i++) { if (isset($_POST['idvalor_' . $i])) { if ($i == 0) { $error = FALSE; } $valor = $valor0->get($_POST['idvalor_' . $i]); if ($valor) { $comb1->id = NULL; $comb1->idvalor = $valor->id; $comb1->nombreatributo = $valor->nombre(); $comb1->valor = $valor->valor; if (!$comb1->save()) { $error = TRUE; } } } else { break; } } if ($error) { $this->new_error_msg('Error al guardar la combinación.'); } else { $this->new_message('Combinación guardada correctamente.'); } } else { if (isset($_POST['editar_combi'])) { $comb1 = new articulo_combinacion(); foreach ($comb1->all_from_codigo($_POST['editar_combi']) as $com) { $com->impactoprecio = floatval($_POST['impactoprecio']); $com->save(); } $this->new_message('Combinación modificada.'); } else { if (isset($_GET['delete_combi'])) { $comb1 = new articulo_combinacion(); foreach ($comb1->all_from_codigo($_GET['delete_combi']) as $com) { $com->delete(); } $this->new_message('Combinación eliminada.'); } } } } } } } } } } }
protected function private_core() { $articulo = new articulo(); $this->almacen = new almacen(); $this->articulo = FALSE; $this->impuesto = new impuesto(); $this->fabricante = new fabricante(); $inventario = new inventario(); /// ¿El usuario tiene permiso para eliminar en esta página? $this->allow_delete = $this->user->allow_delete_on(__CLASS__); /** * Si hay alguna extensión de tipo config y texto no_tab_recios, * desactivamos la pestaña precios. */ $this->mostrar_tab_precios = TRUE; foreach ($this->extensions as $ext) { if ($ext->type == 'config' and $ext->text == 'no_tab_precios') { $this->mostrar_tab_precios = FALSE; break; } } /** * Si hay alguna extensión de tipo config y texto no_tab_stock, * desactivamos la pestaña stock. */ $this->mostrar_tab_stock = TRUE; foreach ($this->extensions as $ext) { if ($ext->type == 'config' and $ext->text == 'no_tab_stock') { $this->mostrar_tab_stock = FALSE; break; } } /** * Si hay alguna extensión de tipo config y texto no_button_publicar, * desactivamos el botón publicar. */ $this->mostrar_boton_publicar = TRUE; foreach ($this->extensions as $ext) { if ($ext->type == 'config' and $ext->text == 'no_button_publicar') { $this->mostrar_boton_publicar = FALSE; break; } } if (isset($_POST['pvpiva'])) { $this->articulo = $articulo->get($_POST['referencia']); if ($this->articulo) { $continuar = TRUE; $this->articulo->set_impuesto($_POST['codimpuesto']); $this->articulo->set_pvp_iva(floatval($_POST['pvpiva'])); if (isset($_POST['preciocoste'])) { $this->articulo->preciocoste = floatval($_POST['preciocoste']); } if ($this->articulo->save()) { if (!($this->inventario = $inventario->get_ref($_POST['referencia']))) { $inventario->referencia = $_POST['referencia']; $inventario->preciocoste = $this->articulo->preciocoste; $inventario->cantidad = 0; $inventario->save(); } else { $this->inventario->preciocoste = $this->articulo->preciocoste; $this->inventario->cantidad = 0; $this->inventario->inventario_agregar($this->inventario->codalmacen, $_POST['referencia'], $this->inventario->cantidad, $this->inventario->preciocoste); // $this->inventario->save(); } } else { $this->new_message("Precio modificado correctamente."); } } } else { if (isset($_POST['almacen'])) { $this->articulo = $articulo->get($_POST['referencia']); if ($this->articulo) { if ($_POST['cantidadini'] == $_POST['cantidad']) { $this->new_message('Sin cambios.'); } else { if ($this->articulo->set_stock($_POST['almacen'], $_POST['cantidad'])) { $this->new_message("Stock guardado correctamente."); /// añadimos la regularización foreach ($this->articulo->get_stock() as $stock) { if ($stock->codalmacen == $_POST['almacen']) { $regularizacion = new regularizacion_stock(); $regularizacion->idstock = $stock->idstock; $regularizacion->cantidadini = floatval($_POST['cantidadini']); $regularizacion->cantidadfin = floatval($_POST['cantidad']); $regularizacion->codalmacendest = $_POST['almacen']; $regularizacion->motivo = $_POST['motivo']; $regularizacion->nick = $this->user->nick; if ($regularizacion->save()) { $inventario->inventario_agregar($_POST['almacen'], $_POST['referencia'], floatval($_POST['cantidad']) - floatval($_POST['cantidadini']), $this->articulo->preciocoste); } break; } } } else { $this->new_error_msg("Error al guardar el stock."); } } } } else { if (isset($_POST['imagen'])) { $this->articulo = $articulo->get($_POST['referencia']); if (is_uploaded_file($_FILES['fimagen']['tmp_name']) and $_FILES['fimagen']['size'] <= 1024000) { $this->articulo->set_imagen(file_get_contents($_FILES['fimagen']['tmp_name'])); if ($this->articulo->save()) { $this->new_message("Imagen del articulo modificada correctamente"); } else { $this->new_error_msg("¡Error al guardar la imagen del articulo!"); } } } else { if (isset($_GET['delete_img'])) { $this->articulo = $articulo->get($_GET['ref']); $this->articulo->set_imagen(NULL); if ($this->articulo->save()) { $this->new_message("Imagen del articulo eliminada correctamente"); } else { $this->new_error_msg("¡Error al eliminar la imagen del articulo!"); } } else { if (isset($_POST['referencia'])) { $this->articulo = $articulo->get($_POST['referencia']); $this->articulo->descripcion = $_POST['descripcion']; $this->articulo->tipo = NULL; if ($_POST['tipo'] != '') { $this->articulo->tipo = $_POST['tipo']; } $this->articulo->codfamilia = NULL; if ($_POST['codfamilia'] != '') { $this->articulo->codfamilia = $_POST['codfamilia']; } $this->articulo->codfabricante = NULL; if ($_POST['codfabricante'] != '') { $this->articulo->codfabricante = $_POST['codfabricante']; } /// ¿Existe ya ese código de barras? if ($_POST['codbarras'] != '') { $arts = $this->articulo->search_by_codbar($_POST['codbarras']); if ($arts) { foreach ($arts as $art2) { if ($art2->referencia != $this->articulo->referencia) { $this->new_advice('Ya hay un artículo con este mismo código de barras. ' . 'En concreto, el artículo <a href="' . $art2->url() . '">' . $art2->referencia . '</a>.'); break; } } } } $this->articulo->codbarras = $_POST['codbarras']; $this->articulo->equivalencia = $_POST['equivalencia']; $this->articulo->bloqueado = isset($_POST['bloqueado']); $this->articulo->controlstock = isset($_POST['controlstock']); $this->articulo->nostock = isset($_POST['nostock']); $this->articulo->secompra = isset($_POST['secompra']); $this->articulo->sevende = isset($_POST['sevende']); $this->articulo->publico = isset($_POST['publico']); $this->articulo->observaciones = $_POST['observaciones']; $this->articulo->stockmin = floatval($_POST['stockmin']); $this->articulo->stockmax = floatval($_POST['stockmax']); if ($this->articulo->save()) { if ($this->inventario = $inventario->get_ref($this->articulo->referencia)) { $this->inventario->guardar_modif_refe($_POST['nreferencia']); } $this->new_message("Datos del articulo modificados correctamente"); $this->articulo->set_referencia($_POST['nreferencia']); } else { $this->new_error_msg("¡Error al guardar el articulo!"); } } else { if (isset($_GET['ref'])) { $this->articulo = $articulo->get($_GET['ref']); } } } } } } if ($this->articulo) { $this->page->title = $this->articulo->referencia; if ($this->articulo->bloqueado) { $this->new_advice("Este artículo está bloqueado / obsoleto."); } /** * Si está desactivado el control de stok en el artículo, no muestro la pestaña. */ if ($this->articulo->nostock) { $this->mostrar_tab_stock = FALSE; } $this->familia = $this->articulo->get_familia(); if (!$this->familia) { $this->familia = new familia(); } $this->fabricante = $this->articulo->get_fabricante(); if (!$this->fabricante) { $this->fabricante = new fabricante(); } $this->stocks = $this->articulo->get_stock(); /// metemos en un array los almacenes que no tengan stock de este producto $this->nuevos_almacenes = array(); foreach ($this->almacen->all() as $a) { $encontrado = FALSE; foreach ($this->stocks as $s) { if ($a->codalmacen == $s->codalmacen) { $encontrado = TRUE; } } if (!$encontrado) { $this->nuevos_almacenes[] = $a; } } $reg = new regularizacion_stock(); $this->regularizaciones = $reg->all_from_articulo($this->articulo->referencia); $this->equivalentes = $this->articulo->get_equivalentes(); } else { $this->new_error_msg("Artículo no encontrado."); } }