protected function private_core() { /// ¿El usuario tiene permiso para eliminar en esta página? $this->allow_delete = $this->user->allow_delete_on(__CLASS__); $almacen = new almacen(); $this->almacenes = $almacen->all(); $articulo = new articulo(); $this->familia = new familia(); $this->fabricante = new fabricante(); $this->impuesto = new impuesto(); $this->tarifa = new tarifa(); $this->transferencia_stock = new transferencia_stock(); /** * 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 " . $tar0->codtarifa . " eliminada correctamente.", TRUE); } else { $this->new_error_msg("¡Imposible eliminar 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_impuesto($_POST['codimpuesto']); if (isset($_POST['coniva'])) { $articulo->set_pvp_iva(floatval($_POST['pvp'])); } else { $articulo->set_pvp(floatval($_POST['pvp'])); } 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.", TRUE); } else { $this->new_error_msg("¡Error al eliminarl el articulo!"); } } } else { if (isset($_POST['origen'])) { /// nueva transferencia de stock $this->transferencia_stock->usuario = $this->user->nick; $this->transferencia_stock->codalmaorigen = $_POST['origen']; $this->transferencia_stock->codalmadestino = $_POST['destino']; if ($this->transferencia_stock->save()) { $this->new_message('Datos guardados correctamente.'); header('Location: ' . $this->transferencia_stock->url()); } else { $this->new_error_msg('Error al guardar los datos.'); } } else { if (isset($_GET['delete_transf'])) { $transf = $this->transferencia_stock->get($_GET['delete_transf']); if ($transf) { $ok = TRUE; /// eliminamos las líneas $ltf = new linea_transferencia_stock(); foreach ($ltf->all_from_transferencia($transf->idtrans) as $lin) { if ($lin->delete()) { /// movemos el stock $art = $articulo->get($lin->referencia); if ($art) { $art->sum_stock($transf->codalmadestino, 0 - $lin->cantidad); $art->sum_stock($transf->codalmaorigen, $lin->cantidad); } } else { $this->new_error_msg('Error al eliminar la línea con referencia ' . $lin->referencia); $ok = FALSE; } } if ($ok) { if ($transf->delete()) { $this->new_message('Transferencia eliminada correctamente.'); } else { $this->new_error_msg('Error al eliminar la transferencia.'); } } } else { $this->new_error_msg('Transferencia no encontrada.'); } } } } } } } /// obtenemos los datos para la búsqueda $this->offset = 0; if (isset($_REQUEST['offset'])) { $this->offset = intval($_REQUEST['offset']); } $this->b_codalmacen = ''; if (isset($_REQUEST['b_codalmacen'])) { $this->b_codalmacen = $_REQUEST['b_codalmacen']; } $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_codalmacen=" . $this->b_codalmacen . "&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(); }
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; }