private function delete_factura() { $fact = $this->factura->get($_GET['delete']); if ($fact) { /// ¿Sumamos stock? $art0 = new articulo(); $inventario = new inventario(); foreach ($fact->get_lineas() as $linea) { if (is_null($linea->idalbaran)) { $articulo = $art0->get($linea->referencia); if ($articulo) { $articulo->sum_stock($fact->codalmacen, $linea->cantidad); $inventario->inventario_agregar($fact->codalmacen, $linea->referencia, $linea->cantidad, $linea->pvpunitario); } } } if ($fact->delete()) { $this->new_message("Factura eliminada correctamente."); } else { $this->new_error_msg("¡Imposible eliminar la factura!"); } } else { $this->new_error_msg("Factura no encontrada."); } }
private function delete_albaran() { $inventario = new inventario(); $alb = new albaran_cliente(); $alb1 = $alb->get($_POST['delete']); if ($alb1) { /// ¿Actualizamos el stock de los artículos? if (isset($_POST['stock'])) { $articulo = new articulo(); foreach ($alb1->get_lineas() as $linea) { $art0 = $articulo->get($linea->referencia); if ($art0) { $art0->sum_stock($alb1->codalmacen, $linea->cantidad); if ($art0->save()) { $inventario->inventario_agregar($alb1->codalmacen, $linea->referencia, $linea->cantidad, $linea->pvpunitario); } } } } if ($alb1->delete()) { $this->new_message(FS_ALBARAN . " " . $alb1->codigo . " borrado correctamente."); } else { $this->new_error_msg("¡Imposible borrar el " . FS_ALBARAN . "!"); } } else { $this->new_error_msg("¡" . FS_ALBARAN . " no encontrado!"); } }
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."); } }
private function modificar() { $inventario = new inventario(); $error = FALSE; $this->albaran->numproveedor = $_POST['numproveedor']; $this->albaran->observaciones = $_POST['observaciones']; $this->albaran->cai = $_POST['cai']; $this->albaran->caivence = $_POST['caivence']; if ($this->albaran->ptefactura) { $eje0 = $this->ejercicio->get_by_fecha($_POST['fecha']); if ($eje0) { if ($eje0->codejercicio == $this->albaran->codejercicio) { $continuar = TRUE; } else { $continuar = FALSE; } } else { $continuar = FALSE; } if ($continuar == TRUE) { $this->albaran->fecha = $_POST['fecha']; $this->albaran->hora = $_POST['hora']; } else { $error = TRUE; $this->new_error_msg('La fecha seleccionada está fuere del rando del ejercicio ' . $this->albaran->codejercicio . '. Si deseas asignar la fecha ' . $_POST['fecha'] . ' pulsa <a href="' . $this->url() . '&forze_fecha=' . $_POST['fecha'] . '">aquí</a>' . ' y se asignará un nuevo código y un nuevo número al ' . FS_ALBARAN . '.'); } /// ¿Cambiamos el proveedor? if ($_POST['proveedor'] != $this->albaran->codproveedor) { $proveedor = $this->proveedor->get($_POST['proveedor']); if ($proveedor) { $this->albaran->codproveedor = $proveedor->codproveedor; $this->albaran->nombre = $proveedor->razonsocial; $this->albaran->cifnif = $proveedor->cifnif; } else { die('No se ha encontrado el proveedor'); } } else { $proveedor = $this->proveedor->get($this->albaran->codproveedor); } $serie = $this->serie->get($this->albaran->codserie); /// ¿cambiamos la serie? if ($_POST['serie'] != $this->albaran->codserie) { $serie2 = $this->serie->get($_POST['serie']); if ($serie2) { $this->albaran->codserie = $serie2->codserie; $this->albaran->irpf = $serie2->irpf; $this->albaran->new_codigo(); $serie = $serie2; } } $this->albaran->codpago = $_POST['forma_pago']; /// ¿Cambiamos la divisa? if ($_POST['divisa'] != $this->albaran->coddivisa) { $divisa = $this->divisa->get($_POST['divisa']); if ($divisa) { $this->albaran->coddivisa = $divisa->coddivisa; $this->albaran->tasaconv = $divisa->tasaconv_compra; } } else { if ($_POST['tasaconv'] != '') { $this->albaran->tasaconv = floatval($_POST['tasaconv']); } } if (isset($_POST['numlineas'])) { $numlineas = intval($_POST['numlineas']); $this->albaran->neto = 0; $this->albaran->totaliva = 0; $this->albaran->totalirpf = 0; $this->albaran->totalrecargo = 0; $lineas = $this->albaran->get_lineas(); $articulo = new articulo(); /// eliminamos las líneas que no encontremos en el $_POST foreach ($lineas as $l) { $encontrada = FALSE; for ($num = 0; $num <= $numlineas; $num++) { if (isset($_POST['idlinea_' . $num])) { if ($l->idlinea == intval($_POST['idlinea_' . $num])) { $encontrada = TRUE; break; } } } if (!$encontrada) { if ($l->delete()) { /// actualizamos el stock $art0 = $articulo->get($l->referencia); if ($art0) { $art0->sum_stock($this->albaran->codalmacen, 0 - $l->cantidad); } if ($art0) { $inventario->inventario_agregar($this->albaran->codalmacen, $l->referencia, 0 - $l->cantidad, $l->pvpunitario); } } else { $this->new_error_msg("¡Imposible eliminar la línea del artículo " . $l->referencia . "!"); } } } /// modificamos y/o añadimos las demás líneas for ($num = 0; $num < $numlineas; $num++) { $encontrada = FALSE; if (isset($_POST['idlinea_' . $num])) { foreach ($lineas as $k => $value) { /// modificamos la línea if ($value->idlinea == intval($_POST['idlinea_' . $num])) { $encontrada = TRUE; $cantidad_old = $value->cantidad; $lineas[$k]->cantidad = floatval($_POST['cantidad_' . $num]); $lineas[$k]->pvpunitario = floatval($_POST['pvp_' . $num]); $lineas[$k]->dtopor = floatval($_POST['dto_' . $num]); $lineas[$k]->pvpsindto = $value->cantidad * $value->pvpunitario; $lineas[$k]->pvptotal = $value->cantidad * $value->pvpunitario * (100 - $value->dtopor) / 100; $lineas[$k]->descripcion = $_POST['desc_' . $num]; if (isset($_POST['subcuenta_' . $num])) { $postot = strlen($_POST['subcuenta_' . $num]); $poscad = strpos($_POST['subcuenta_' . $num], '/'); $posid = strpos($_POST['subcuenta_' . $num], '%'); $subcuencod = substr($_POST['subcuenta_' . $num], 0, $poscad); $subcuendes = substr($_POST['subcuenta_' . $num], $poscad + 1, $posid - $postot); $idsubcuen = substr($_POST['subcuenta_' . $num], $posid + 1); $lineas[$k]->codsubcuenta = $subcuencod; $lineas[$k]->idsubcuenta = $idsubcuen; $lineas[$k]->subcuentadesc = $subcuendes; } $lineas[$k]->codimpuesto = NULL; $lineas[$k]->iva = 0; $lineas[$k]->recargo = 0; $lineas[$k]->irpf = floatval($_POST['irpf_' . $num]); if (!$serie->siniva and $proveedor->regimeniva != 'Exento') { $imp0 = $this->impuesto->get_by_iva($_POST['iva_' . $num]); if ($imp0) { $lineas[$k]->codimpuesto = $imp0->codimpuesto; } $lineas[$k]->iva = floatval($_POST['iva_' . $num]); $lineas[$k]->recargo = floatval($_POST['recargo_' . $num]); } if ($lineas[$k]->save()) { $this->albaran->neto += $value->pvptotal; $this->albaran->totaliva += $value->pvptotal * $value->iva / 100; $this->albaran->totalirpf += $value->pvptotal * $value->irpf / 100; $this->albaran->totalrecargo += $value->pvptotal * $value->recargo / 100; if ($lineas[$k]->cantidad != $cantidad_old) { /// actualizamos el stock $art0 = $articulo->get($value->referencia); if ($art0) { $art0->sum_stock($this->albaran->codalmacen, $lineas[$k]->cantidad - $cantidad_old); } if ($art0) { $inventario->inventario_agregar($this->albaran->codalmacen, $lineas[$k]->referencia, $lineas[$k]->cantidad - $cantidad_old, $lineas[$k]->pvpunitario); } } } else { $this->new_error_msg("¡Imposible modificar la línea del artículo " . $value->referencia . "!"); } break; } } /// añadimos la línea if (!$encontrada and intval($_POST['idlinea_' . $num]) == -1 and isset($_POST['referencia_' . $num])) { $linea = new linea_albaran_proveedor(); $linea->idalbaran = $this->albaran->idalbaran; $linea->descripcion = $_POST['desc_' . $num]; /* if( !$serie->siniva AND $proveedor->regimeniva != 'Exento' ) { $imp0 = $this->impuesto->get_by_iva($_POST['iva_'.$num]); if($imp0) $linea->codimpuesto = $imp0->codimpuesto; $linea->iva = floatval($_POST['iva_'.$num]); $linea->recargo = floatval($_POST['recargo_'.$num]); } */ $linea->irpf = floatval($_POST['irpf_' . $num]); $linea->cantidad = floatval($_POST['cantidad_' . $num]); $linea->pvpunitario = floatval($_POST['pvp_' . $num]); $linea->dtopor = floatval($_POST['dto_' . $num]); $linea->pvpsindto = $linea->cantidad * $linea->pvpunitario; $linea->pvptotal = $linea->cantidad * $linea->pvpunitario * (100 - $linea->dtopor) / 100; if ($_POST['subcuenta_' . $num] == '/%') { $linea->codsubcuenta = NULL; $linea->idsubcuenta = NULL; $linea->subcuentadesc = NULL; } else { $postot = strlen($_POST['subcuenta_' . $num]); $poscad = strpos($_POST['subcuenta_' . $num], '/'); $posid = strpos($_POST['subcuenta_' . $num], '%'); $subcuencod = substr($_POST['subcuenta_' . $num], 0, $poscad); $subcuendes = substr($_POST['subcuenta_' . $num], $poscad + 1, $posid - $postot); $idsubcuen = substr($_POST['subcuenta_' . $num], $posid + 1); $linea->codsubcuenta = $subcuencod; $linea->idsubcuenta = $idsubcuen; $linea->subcuentadesc = $subcuendes; } $art0 = $articulo->get($_POST['referencia_' . $num]); if ($art0) { $linea->referencia = $art0->referencia; } if ($linea->save()) { if ($art0) { /// actualizamos el stock $art0->sum_stock($this->albaran->codalmacen, $linea->cantidad); if ($art0) { $inventario->inventario_agregar($this->albaran->codalmacen, $linea->referencia, $linea->cantidad, $linea->pvpunitario); } } $this->albaran->neto += $linea->pvptotal; $this->albaran->totaliva += $linea->pvptotal * $linea->iva / 100; $this->albaran->totalirpf += $linea->pvptotal * $linea->irpf / 100; $this->albaran->totalrecargo += $linea->pvptotal * $linea->recargo / 100; } else { $this->new_error_msg("¡Imposible guardar la línea del artículo " . $linea->referencia . "!"); } } } } /// redondeamos $this->albaran->neto = round($this->albaran->neto, FS_NF0); $this->albaran->totaliva = round($this->albaran->totaliva, FS_NF0); $this->albaran->totalirpf = round($this->albaran->totalirpf, FS_NF0); $this->albaran->totalrecargo = round($this->albaran->totalrecargo, FS_NF0); $this->albaran->total = $this->albaran->neto + $this->albaran->totaliva - $this->albaran->totalirpf + $this->albaran->totalrecargo; if (abs(floatval($_POST['atotal']) - $this->albaran->total) >= 0.02) { $this->new_error_msg("El total difiere entre el controlador y la vista (" . $this->albaran->total . " frente a " . $_POST['atotal'] . "). Debes informar del error."); } } } if ($this->albaran->save()) { if (!$error) { $this->new_message(ucfirst(FS_ALBARAN) . " modificado correctamente."); } $this->new_change(ucfirst(FS_ALBARAN) . ' Proveedor ' . $this->albaran->codigo, $this->albaran->url()); } else { $this->new_error_msg("¡Imposible modificar el " . FS_ALBARAN . "!"); } }
private function nueva_factura_proveedor() { $continuar = TRUE; $proveedor = $this->proveedor->get($_POST['proveedor']); if ($proveedor) { $this->save_codproveedor($proveedor->codproveedor); } else { $this->new_error_msg('Proveedor no encontrado.'); $continuar = FALSE; } if (isset($_POST['almacen'])) { $almacen = $this->almacen->get($_POST['almacen']); if ($almacen) { $this->save_codalmacen($almacen->codalmacen); } else { $this->new_error_msg('Almacén no encontrado.'); $continuar = FALSE; } } $factura = new factura_proveedor(); $eje0 = new ejercicio(); $ejercicio = $eje0->get_by_fecha($_POST['fecha']); if ($ejercicio) { $this->save_codejercicio($ejercicio->codejercicio); } else { $this->autorizar_factura = 1; // $this->new_error_msg('Ejercicio no encontrado.1'); header('Location: ' . $factura->url_list() . '&nueva=2'); $continuar = FALSE; } $serie = $this->serie->get($_POST['serie']); if (!$serie) { $this->new_error_msg('Serie no encontrada.'); $continuar = FALSE; } $forma_pago = $this->forma_pago->get($_POST['forma_pago']); if ($forma_pago) { $this->save_codpago($forma_pago->codpago); } else { $this->new_error_msg('Forma de pago no encontrada.'); $continuar = FALSE; } $divisa = $this->divisa->get($_POST['divisa']); if ($divisa) { $this->save_coddivisa($divisa->coddivisa); } else { $this->new_error_msg('Divisa no encontrada.'); $continuar = FALSE; } if ($this->duplicated_petition($_POST['petition_id'])) { $this->new_error_msg('Petición duplicada. Has hecho doble clic sobre el botón guardar y se han enviado dos peticiones. Mira en <a href="' . $factura->url() . '">Facturas</a> para ver si la factura se ha guardado correctamente.'); $continuar = FALSE; } $a = strlen(substr($_POST['fecha'], 6)); if ($a != 4) { $continuar = FALSE; } if ($continuar) { $factura->fecha = $_POST['fecha']; $fecha_factura = $_POST['fecha']; $factura->hora = $_POST['hora']; $factura->codproveedor = $proveedor->codproveedor; $factura->nombre = $proveedor->razonsocial; $factura->idpagodevol = 0; $factura->cifnif = $proveedor->cifnif; $factura->codalmacen = $almacen->codalmacen; $factura->codejercicio = $ejercicio->codejercicio; $factura->codserie = $serie->codserie; $factura->codpago = $forma_pago->codpago; $factura->coddivisa = $divisa->coddivisa; $factura->tasaconv = $divisa->tasaconv_compra; $factura->tipo = $_POST['tipo']; $factura->cai = $_POST['cai']; $factura->caivence = $_POST['caivence']; if ($_POST['tasaconv'] != '') { $factura->tasaconv = floatval($_POST['tasaconv']); } $factura->codagente = $this->agente->codagente; $factura->numproveedor = $_POST['tipo'] . '/' . $_POST['numproveedor']; $factura->observaciones = $_POST['observaciones']; $factura->irpf = $serie->irpf; if ($forma_pago->genrecibos == 'Pagados') { // $factura->pagada = TRUE; } if ($factura->save()) { $art0 = new articulo(); $inventario = new inventario(); $n = floatval($_POST['numlineas']); for ($i = 0; $i < $n; $i++) { if (isset($_POST['referencia_' . $i])) { $linea = new linea_factura_proveedor(); $linea->idfactura = $factura->idfactura; $this->id_factura = $factura->idfactura; $linea->descripcion = $_POST['desc_' . $i]; $linea->irpf = floatval($_POST['irpf_' . $i]); $linea->pvpunitario = floatval($_POST['pvp_' . $i]); $linea->cantidad = floatval($_POST['cantidad_' . $i]); $linea->dtopor = floatval($_POST['dto_' . $i]); $linea->pvpsindto = $linea->pvpunitario * $linea->cantidad; $linea->pvptotal = floatval($_POST['neto_' . $i]); $postot = strlen($_POST['subcuenta_' . $i]); $poscad = strpos($_POST['subcuenta_' . $i], '/'); $posid = strpos($_POST['subcuenta_' . $i], '%'); $subcuencod = substr($_POST['subcuenta_' . $i], 0, $poscad); $subcuendes = substr($_POST['subcuenta_' . $i], $poscad + 1, $posid - $postot); $idsubcuen = substr($_POST['subcuenta_' . $i], $posid + 1); $linea->codsubcuenta = $subcuencod; $linea->subcuentadesc = $subcuendes; $linea->idsubcuenta = $idsubcuen; $articulo = $art0->get($_POST['referencia_' . $i]); //////////////////////////////////////////////////////////////////////// //// GUARDA subcuenta en articulo cuando se carga la factura //////////////////////////////////////////////////// $artval = $this->artsubcuentas->get_ref($_POST['referencia_' . $i]); if ($artval != $subcuencod || $subcuencod == NULL) { if ($_POST['tipo'] == 'B' || $_POST['tipo'] == 'F' || $_POST['tipo'] == 'T' || $_POST['tipo'] == 'Q' || $_POST['tipo'] == 'C' || $_POST['tipo'] == 'D') { $this->artsubcuentas->guarda_subcuenta_comp($_POST['referencia_' . $i], $subcuencod, $subcuendes); } else { $this->artsubcuentas->guarda_subcuenta_dev($_POST['referencia_' . $i], $subcuencod, $subcuendes); } } ////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// if ($articulo) { $linea->referencia = $articulo->referencia; } if ($linea->save()) { if ($articulo) { if (isset($_POST['costemedio'])) { if ($articulo->costemedio == 0) { $articulo->costemedio = $linea->pvptotal / $linea->cantidad; } else { $articulo->costemedio = $articulo->get_costemedio(); if ($articulo->costemedio == 0) { $articulo->costemedio = $linea->pvptotal / $linea->cantidad; } } $this->actualizar_precio_proveedor($factura->codproveedor, $linea); } if (isset($_POST['stock'])) { $articulo->sum_stock($factura->codalmacen, $linea->cantidad); if ($articulo) { $inventario->inventario_agregar($factura->codalmacen, $linea->referencia, $linea->cantidad, $linea->pvpunitario); } } else { if (isset($_POST['costemedio'])) { $articulo->save(); } } } $factura->neto += $linea->pvptotal; $factura->totaliva += $linea->pvptotal * $linea->iva / 100; $factura->totalirpf += $linea->pvptotal * $linea->irpf / 100; $factura->totalrecargo += $linea->pvptotal * $linea->recargo / 100; } else { $this->new_error_msg("¡Imposible guardar la linea con referencia: " . $linea->referencia); $continuar = FALSE; } } } if ($continuar) { $factura->fecha = $fecha_factura; /// redondeamos $factura->neto = round($factura->neto, FS_NF0); $factura->totaliva = round($factura->totaliva, FS_NF0); $factura->totalirpf = round($factura->totalirpf, FS_NF0); $factura->totalrecargo = round($factura->totalrecargo, FS_NF0); $factura->total = $factura->neto + $factura->totaliva - $factura->totalirpf + $factura->totalrecargo; if (abs(floatval($_POST['atotal']) - $factura->total) >= 0.02) { $this->new_error_msg("El total difiere entre el controlador y la vista (" . $factura->total . " frente a " . $_POST['atotal'] . "). Debes informar del error."); $factura->delete(); } else { if ($factura->save()) { ///////// GENERA ASIENTO // $this->generar_asiento($factura); // $this->new_message("<a href='".$factura->url()."'>Factura</a> guardada correctamente."); // $this->new_change('Factura Proveedor '.$factura->codigo, $factura->url(), TRUE); $this->autorizar_factura = 1; $this->new_error_msg('Factura Guardada'); if ($_POST['redir'] == 'TRUE') { header('Location: ' . $factura->url_list() . '&nueva=1'); } } else { $this->new_error_msg("¡Imposible actualizar la <a href='" . $factura->url() . "'>factura</a>!"); } } } else { $this->new_message("Factura eliminada correctamente."); } } else { $this->new_error_msg("¡Imposible guardar la factura!"); } } }
public function boton_restab_anulada($idfactura) { $factura = new factura_proveedor(); $fact = $factura->get($idfactura); if ($fact) { /// ¿Descontamos stock? $art0 = new articulo(); $inventario = new inventario(); foreach ($fact->get_lineas() as $linea) { if (is_null($linea->idalbaran)) { $articulo = $art0->get($linea->referencia); if ($articulo) { $articulo->sum_stock($fact->codalmacen, $linea->cantidad, TRUE); $inventario->inventario_agregar($fact->codalmacen, $linea->referencia, $linea->cantidad, $linea->pvpunitario); } } } $sql = "UPDATE facturasprov SET idpagodevol = '0' WHERE idfactura = " . $_GET['id'] . ";"; if ($this->db->exec($sql)) { $this->idfactura = $this->db->lastval(); return TRUE; } else { return FALSE; } } else { $this->new_error_msg("Factura no encontrada."); } }
public function boton_anular($idfactura) { $factura = new factura_cliente(); $fact = $factura->get($idfactura); if ($fact) { /// ¿Sumamos stock? $art0 = new articulo(); $inventario = new inventario(); foreach ($fact->get_lineas() as $linea) { if (is_null($linea->idalbaran)) { $articulo = $art0->get($linea->referencia); if ($articulo) { $articulo->sum_stock($fact->codalmacen, $linea->cantidad); $inventario->inventario_agregar($fact->codalmacen, $linea->referencia, $linea->cantidad, $linea->pvpunitario); } } } $sql = "UPDATE " . $this->table_name . " SET idpagodevol = '1' WHERE idfactura = " . $this->var2str($idfactura) . ";"; if ($this->db->exec($sql)) { $this->idfactura = $this->db->lastval(); return TRUE; } else { return FALSE; } } else { $this->new_error_msg("Factura no encontrada."); } }
private function nueva_factura_cliente() { $continuar = TRUE; $cliente = $this->cliente->get($_POST['cliente']); if ($cliente) { $this->save_codcliente($cliente->codcliente); } else { $this->new_error_msg('Cliente no encontrado.'); $continuar = FALSE; } $almacen = $this->almacen->get($_POST['almacen']); if ($almacen) { $this->save_codalmacen($almacen->codalmacen); } else { $this->new_error_msg('Almacén no encontrado.'); $continuar = FALSE; } $eje0 = new ejercicio(); $ejercicio = $eje0->get_by_fecha($_POST['fecha']); if ($ejercicio) { $this->save_codejercicio($ejercicio->codejercicio); } else { $this->new_error_msg('Ejercicio no encontrado.'); $continuar = FALSE; } $serie = $this->serie->get($_POST['serie']); if (!$serie) { $this->new_error_msg('Serie no encontrada.'); $continuar = FALSE; } $forma_pago = $this->forma_pago->get($_POST['forma_pago']); if ($forma_pago) { $this->save_codpago($forma_pago->codpago); } else { $this->new_error_msg('Forma de pago no encontrada.'); $continuar = FALSE; } $divisa = $this->divisa->get($_POST['divisa']); if ($divisa) { $this->save_coddivisa($divisa->coddivisa); } else { $this->new_error_msg('Divisa no encontrada.'); $continuar = FALSE; } $factura = new factura_cliente(); if ($this->duplicated_petition($_POST['petition_id'])) { $this->new_error_msg('Petición duplicada. Has hecho doble clic sobre el botón guardar y se han enviado dos peticiones. Mira en <a href="' . $factura->url() . '">Facturas</a> para ver si la factura se ha guardado correctamente.'); $continuar = FALSE; } if ($continuar) { $factura->fecha = $_POST['fecha']; $factura->hora = $_POST['hora']; $factura->codalmacen = $almacen->codalmacen; $factura->codejercicio = $ejercicio->codejercicio; $factura->codserie = $serie->codserie; $factura->codpago = $forma_pago->codpago; $factura->coddivisa = $divisa->coddivisa; $factura->tasaconv = $divisa->tasaconv; if ($_POST['tasaconv'] != '') { $factura->tasaconv = floatval($_POST['tasaconv']); } $factura->codagente = $this->agente->codagente; $factura->observaciones = $_POST['observaciones']; $factura->numero2 = $_POST['numero2']; $factura->irpf = $serie->irpf; $factura->porcomision = $this->agente->porcomision; if ($forma_pago->genrecibos == 'Pagados') { $factura->pagada = TRUE; } $factura->vencimiento = Date('d-m-Y', strtotime($factura->fecha . ' ' . $forma_pago->vencimiento)); $factura->codcliente = $cliente->codcliente; $factura->cifnif = $cliente->cifnif; $factura->nombrecliente = $cliente->razonsocial; $factura->ciudad = $_POST['ciudad']; $factura->codpais = $_POST['codpais']; $factura->codpostal = $_POST['codpostal']; $factura->direccion = $_POST['direccion']; $factura->provincia = $_POST['provincia']; if ($factura->save()) { $inventario = new inventario(); $art0 = new articulo(); $n = floatval($_POST['numlineas']); for ($i = 0; $i <= $n; $i++) { if (isset($_POST['referencia_' . $i])) { $linea = new linea_factura_cliente(); $linea->idfactura = $factura->idfactura; $linea->descripcion = $_POST['desc_' . $i]; if (!$serie->siniva and $cliente->regimeniva != 'Exento') { $imp0 = $this->impuesto->get_by_iva($_POST['iva_' . $i]); if ($imp0) { $linea->codimpuesto = $imp0->codimpuesto; $linea->iva = floatval($_POST['iva_' . $i]); $linea->recargo = floatval($_POST['recargo_' . $i]); } else { $linea->iva = floatval($_POST['iva_' . $i]); $linea->recargo = floatval($_POST['recargo_' . $i]); } } $linea->irpf = floatval($_POST['irpf_' . $i]); $linea->pvpunitario = floatval($_POST['pvp_' . $i]); $linea->cantidad = floatval($_POST['cantidad_' . $i]); $linea->dtopor = floatval($_POST['dto_' . $i]); $linea->pvpsindto = $linea->pvpunitario * $linea->cantidad; $linea->pvptotal = floatval($_POST['neto_' . $i]); $articulo = $art0->get($_POST['referencia_' . $i]); if ($articulo) { $linea->referencia = $articulo->referencia; } if ($linea->save()) { if ($articulo and isset($_POST['stock'])) { /// descontamos del stock $articulo->sum_stock($factura->codalmacen, 0 - $linea->cantidad); $inventario->inventario_agregar($factura->codalmacen, $linea->referencia, 0 - $linea->cantidad, $linea->pvpunitario); } $factura->neto += $linea->pvptotal; $factura->totaliva += $linea->pvptotal * $linea->iva / 100; $factura->totalirpf += $linea->pvptotal * $linea->irpf / 100; $factura->totalrecargo += $linea->pvptotal * $linea->recargo / 100; } else { $this->new_error_msg("¡Imposible guardar la linea con referencia: " . $linea->referencia); $continuar = FALSE; } } } if ($continuar) { /// redondeamos $factura->neto = round($factura->neto, FS_NF0); $factura->totaliva = round($factura->totaliva, FS_NF0); $factura->totalirpf = round($factura->totalirpf, FS_NF0); $factura->totalrecargo = round($factura->totalrecargo, FS_NF0); $factura->total = $factura->neto + $factura->totaliva - $factura->totalirpf + $factura->totalrecargo; if (abs(floatval($_POST['atotal']) - $factura->total) >= 0.02) { $this->new_error_msg("El total difiere entre la vista y el controlador (" . $_POST['atotal'] . " frente a " . $factura->total . "). Debes informar del error."); $factura->delete(); } else { if ($factura->save()) { $this->generar_asiento($factura); $this->new_message("<a href='" . $factura->url() . "'>Factura</a> guardada correctamente."); $this->new_change('Factura Cliente ' . $factura->codigo, $factura->url(), TRUE); if ($_POST['redir'] == 'TRUE') { header('Location: ' . $factura->url()); } } else { $this->new_error_msg("¡Imposible actualizar la <a href='" . $factura->url() . "'>Factura</a>!"); } } } else { if ($factura->delete()) { $this->new_message("Factura eliminada correctamente."); } else { $this->new_error_msg("¡Imposible eliminar la <a href='" . $factura->url() . "'>Factura</a>!"); } } } else { $this->new_error_msg("¡Imposible guardar la Factura!"); } } }
private function nueva_factura_cliente() { $continuar = TRUE; $inventario = new inventario(); $ejercicio = $this->ejercicio->get_by_fecha($_POST['fecha']); if ($ejercicio) { $this->save_codejercicio($ejercicio->codejercicio); } else { $this->new_error_msg('Ejercicio no encontrado.'); $continuar = FALSE; } $serie = $this->serie->get($_POST['serie']); if ($serie) { $this->save_codserie($serie->codserie); } else { $this->new_error_msg('Serie no encontrada.'); $continuar = FALSE; } $forma_pago = $this->forma_pago->get($_POST['forma_pago']); if ($forma_pago) { $this->save_codpago($forma_pago->codpago); } else { $this->new_error_msg('Forma de pago no encontrada.'); $continuar = FALSE; } $divisa = $this->divisa->get($_POST['divisa']); if ($divisa) { $this->save_coddivisa($divisa->coddivisa); } else { $this->new_error_msg('Divisa no encontrada.'); $continuar = FALSE; } if (isset($_POST['imprimir_desc'])) { $this->imprimir_descripciones = TRUE; setcookie('imprimir_desc', TRUE, time() + FS_COOKIES_EXPIRE); } else { $this->imprimir_descripciones = FALSE; setcookie('imprimir_desc', FALSE, time() - FS_COOKIES_EXPIRE); } if (isset($_POST['imprimir_obs'])) { $this->imprimir_observaciones = TRUE; setcookie('imprimir_obs', TRUE, time() + FS_COOKIES_EXPIRE); } else { $this->imprimir_observaciones = FALSE; setcookie('imprimir_obs', FALSE, time() - FS_COOKIES_EXPIRE); } $factura = new factura_cliente(); if ($this->duplicated_petition($_POST['petition_id'])) { $this->new_error_msg('Petición duplicada. Has hecho doble clic sobre el botón Guardar y se han enviado dos peticiones. Mira en <a href="' . $factura->url() . '">Facturas</a> para ver si la factura se ha guardado correctamente.'); $continuar = FALSE; } if ($continuar) { $factura->fecha = $_POST['fecha']; $factura->codalmacen = $_POST['almacen']; $factura->codejercicio = $ejercicio->codejercicio; $factura->codserie = $serie->codserie; $factura->codpago = $forma_pago->codpago; $factura->coddivisa = $divisa->coddivisa; $factura->tasaconv = $divisa->tasaconv; if ($_POST['tasaconv'] != '') { $factura->tasaconv = floatval($_POST['tasaconv']); } $factura->codagente = $this->agente->codagente; $factura->observaciones = $_POST['observaciones']; $factura->numero2 = $_POST['numero2']; $factura->irpf = $serie->irpf; $factura->porcomision = $this->agente->porcomision; if ($forma_pago->genrecibos == 'Pagados') { $factura->pagada = TRUE; } $factura->vencimiento = Date('d-m-Y', strtotime($factura->fecha . ' ' . $forma_pago->vencimiento)); foreach ($this->cliente_s->get_direcciones() as $d) { if ($d->domfacturacion) { $factura->codcliente = $this->cliente_s->codcliente; $factura->cifnif = $this->cliente_s->cifnif; $factura->nombrecliente = $this->cliente_s->razonsocial; $factura->apartado = $d->apartado; $factura->ciudad = $d->ciudad; $factura->coddir = $d->id; $factura->codpais = $d->codpais; $factura->codpostal = $d->codpostal; $factura->direccion = $d->direccion; $factura->provincia = $d->provincia; break; } } if (is_null($factura->codcliente)) { $this->new_error_msg("No hay ninguna dirección asociada al cliente."); } else { if ($factura->save()) { $n = floatval($_POST['numlineas']); for ($i = 1; $i <= $n; $i++) { if (isset($_POST['referencia_' . $i])) { $articulo = $this->articulo->get($_POST['referencia_' . $i]); if ($articulo) { $linea = new linea_factura_cliente(); $linea->idfactura = $factura->idfactura; $linea->referencia = $articulo->referencia; $linea->descripcion = $_POST['desc_' . $i]; if (!$serie->siniva or $this->cliente_s->regimeniva != 'Exento') { $linea->codimpuesto = $articulo->codimpuesto; $linea->iva = floatval($_POST['iva_' . $i]); $linea->recargo = floatval($_POST['recargo_' . $i]); } $linea->irpf = floatval($_POST['irpf_' . $i]); $linea->pvpunitario = floatval($_POST['pvp_' . $i]); $linea->cantidad = floatval($_POST['cantidad_' . $i]); $linea->dtopor = floatval($_POST['dto_' . $i]); $linea->pvpsindto = $linea->pvpunitario * $linea->cantidad; $linea->pvptotal = floatval($_POST['neto_' . $i]); if ($linea->save()) { /// descontamos del stock $articulo->sum_stock($factura->codalmacen, 0 - $linea->cantidad); $inventario->inventario_agregar($factura->codalmacen, $linea->referencia, 0 - $linea->cantidad, $linea->pvpunitario); $factura->neto += $linea->pvptotal; $factura->totaliva += $linea->pvptotal * $linea->iva / 100; $factura->totalirpf += $linea->pvptotal * $linea->irpf / 100; $factura->totalrecargo += $linea->pvptotal * $linea->recargo / 100; } else { $this->new_error_msg("¡Imposible guardar la linea con referencia: " . $linea->referencia); $continuar = FALSE; } } else { $this->new_error_msg("Artículo no encontrado: " . $_POST['referencia_' . $i]); $continuar = FALSE; } } } if ($continuar) { /// redondeamos $factura->neto = round($factura->neto, FS_NF0); $factura->totaliva = round($factura->totaliva, FS_NF0); $factura->totalirpf = round($factura->totalirpf, FS_NF0); $factura->totalrecargo = round($factura->totalrecargo, FS_NF0); $factura->total = $factura->neto + $factura->totaliva - $factura->totalirpf + $factura->totalrecargo; if (abs(floatval($_POST['tpv_total2']) - $factura->total) >= 0.02) { $this->new_error_msg("El total difiere entre la vista y el controlador (" . $_POST['tpv_total2'] . " frente a " . $factura->total . "). Debes informar del error."); $factura->delete(); } else { if ($factura->save()) { $this->new_message("<a href='" . $factura->url() . "'>Factura</a> guardada correctamente."); $this->generar_asiento($factura); if ($_POST['regalo'] == 'TRUE') { $this->imprimir_ticket_regalo($factura); } else { $this->imprimir_ticket($factura, floatval($_POST['num_tickets'])); } $this->caja->sumar_importe($factura->total); } else { $this->new_error_msg("¡Imposible actualizar la <a href='" . $factura->url() . "'>factura</a>!"); } } } else { if ($factura->delete()) { $this->new_message("Factura eliminada correctamente."); } else { $this->new_error_msg("¡Imposible eliminar la <a href='" . $factura->url() . "'>factura</a>!"); } } } else { $this->new_error_msg("¡Imposible guardar la factura!"); } } } }