protected function process() { $presupuesto = new presupuesto_proveedor(); /// desactivamos la barra de botones $this->show_fs_toolbar = FALSE; $this->offset = 0; if (isset($_GET['offset'])) { $this->offset = intval($_GET['offset']); } if (isset($_POST['buscar_lineas'])) { $this->buscar_lineas(); } else { if (isset($_GET['codagente'])) { $this->template = 'extension/compras_presupuestos_agente'; $agente = new agente(); $this->agente = $agente->get($_GET['codagente']); $this->resultados = $presupuesto->all_from_agente($_GET['codagente'], $this->offset); } else { if (isset($_GET['codproveedor'])) { $this->template = 'extension/compras_presupuestos_proveedor'; $proveedor = new proveedor(); $this->proveedor = $proveedor->get($_GET['codproveedor']); $this->resultados = $presupuesto->all_from_proveedor($_GET['codproveedor'], $this->offset); } else { if (isset($_GET['ref'])) { $this->template = 'extension/compras_presupuestos_articulo'; $articulo = new articulo(); $this->articulo = $articulo->get($_GET['ref']); $linea = new linea_presupuesto_proveedor(); $this->resultados = $linea->all_from_articulo($_GET['ref'], $this->offset); } else { $this->share_extension(); if (isset($_POST['delete'])) { $this->delete_presupuesto(); } if ($this->query) { $this->resultados = $presupuesto->search($this->query, $this->offset); } else { if (isset($_GET['pendientes'])) { $this->resultados = $presupuesto->all_ptepedir($this->offset); } else { $this->resultados = $presupuesto->all($this->offset); } } } } } } }
public function show_nombre() { $nombre = 'desconocido'; $encontrado = FALSE; foreach (self::$presupuestos as $p) { if ($p->idpresupuesto == $this->idpresupuesto) { $nombre = $p->nombre; $encontrado = TRUE; break; } } if (!$encontrado) { $pre = new presupuesto_proveedor(); self::$presupuestos[] = $pre->get($this->idpresupuesto); $nombre = self::$presupuestos[count(self::$presupuestos) - 1]->nombre; } return $nombre; }
protected function process() { $this->ppage = $this->page->get('compras_presupuestos'); $this->agente = FALSE; /// desactivamos la barra de botones $this->show_fs_toolbar = FALSE; $presupuesto = new presupuesto_proveedor(); $this->presupuesto = FALSE; $this->proveedor = new proveedor(); $this->proveedor_s = FALSE; $this->ejercicio = new ejercicio(); $this->familia = new familia(); $this->impuesto = new impuesto(); $this->nuevo_presupuesto_url = FALSE; $this->serie = new serie(); /** * Comprobamos si el usuario tiene acceso a nueva_compra, * necesario para poder añadir líneas. */ if ($this->user->have_access_to('nueva_compra', FALSE)) { $nuevoprep = $this->page->get('nueva_compra'); if ($nuevoprep) { $this->nuevo_presupuesto_url = $nuevoprep->url(); } } if (isset($_POST['idpresupuesto'])) { $this->presupuesto = $presupuesto->get($_POST['idpresupuesto']); $this->modificar(); } else { if (isset($_GET['id'])) { $this->presupuesto = $presupuesto->get($_GET['id']); } } if ($this->presupuesto) { $this->page->title = $this->presupuesto->codigo; /// cargamos el agente if (!is_null($this->presupuesto->codagente)) { $agente = new agente(); $this->agente = $agente->get($this->presupuesto->codagente); } /// cargamos el proveedor $this->proveedor_s = $this->proveedor->get($this->presupuesto->codproveedor); /// comprobamos el presupuesto if ($this->presupuesto->full_test()) { if (isset($_GET['pedir']) and isset($_GET['petid']) and is_null($this->presupuesto->idpedido)) { if ($this->duplicated_petition($_GET['petid'])) { $this->new_error_msg('Petición duplicada. Evita hacer doble clic sobre los botones.'); } else { $this->generar_pedido(); } } if (strtotime($this->presupuesto->finoferta) < strtotime(Date('d-m-Y'))) { $this->new_advice("Fecha validez del " . FS_PRESUPUESTO . " vencida."); } /// Comprobamos las líneas $this->check_lineas(); } } else { $this->new_error_msg("¡" . ucfirst(FS_PRESUPUESTO) . " de proveedor no encontrado!"); } }
private function nuevo_presupuesto_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; } $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; } $presupuesto = new presupuesto_proveedor(); 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="' . $presupuesto->url() . '">Presupuestos</a> para ver si el presupuesto se ha guardado correctamente.'); $continuar = FALSE; } if ($continuar) { $presupuesto->fecha = $_POST['fecha']; $presupuesto->finoferta = date("Y-m-d", strtotime($_POST['fecha'] . " +30 days")); $presupuesto->codalmacen = $almacen->codalmacen; $presupuesto->codejercicio = $ejercicio->codejercicio; $presupuesto->codserie = $serie->codserie; $presupuesto->codpago = $forma_pago->codpago; $presupuesto->coddivisa = $divisa->coddivisa; $presupuesto->tasaconv = $divisa->tasaconv; $presupuesto->codagente = $this->agente->codagente; $presupuesto->observaciones = $_POST['observaciones']; $presupuesto->numero2 = $_POST['numero2']; $presupuesto->irpf = $serie->irpf; $presupuesto->porcomision = $this->agente->porcomision; foreach ($proveedor->get_direcciones() as $d) { if ($d->domfacturacion) { $presupuesto->codproveedor = $proveedor->codproveedor; $presupuesto->cifnif = $proveedor->cifnif; $presupuesto->nombre = $proveedor->nombrecomercial; $presupuesto->apartado = $d->apartado; $presupuesto->ciudad = $d->ciudad; $presupuesto->coddir = $d->id; $presupuesto->codpais = $d->codpais; $presupuesto->codpostal = $d->codpostal; $presupuesto->direccion = $d->direccion; $presupuesto->provincia = $d->provincia; break; } } if (is_null($presupuesto->codproveedor)) { $this->new_error_msg("No hay ninguna dirección asociada al proveedor."); } else { if ($presupuesto->save()) { $art0 = new articulo(); $n = floatval($_POST['numlineas']); for ($i = 0; $i <= $n; $i++) { if (isset($_POST['referencia_' . $i])) { $articulo = $art0->get($_POST['referencia_' . $i]); if ($articulo) { $linea = new linea_presupuesto_proveedor(); $linea->idpresupuesto = $presupuesto->idpresupuesto; $linea->referencia = $articulo->referencia; $linea->descripcion = $_POST['desc_' . $i]; $linea->irpf = $presupuesto->irpf; if (!$serie->siniva and $proveedor->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->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()) { $presupuesto->neto += $linea->pvptotal; $presupuesto->totaliva += $linea->pvptotal * $linea->iva / 100; $presupuesto->totalirpf += $linea->pvptotal * $linea->irpf / 100; $presupuesto->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 $presupuesto->neto = round($presupuesto->neto, FS_NF0); $presupuesto->totaliva = round($presupuesto->totaliva, FS_NF0); $presupuesto->totalirpf = round($presupuesto->totalirpf, FS_NF0); $presupuesto->totalrecargo = round($presupuesto->totalrecargo, FS_NF0); $presupuesto->total = $presupuesto->neto + $presupuesto->totaliva - $presupuesto->totalirpf + $presupuesto->totalrecargo; if (abs(floatval($_POST['atotal']) - $presupuesto->total) > 0.01) { $this->new_error_msg("El total difiere entre el controlador y la vista (" . $presupuesto->total . " frente a " . $_POST['atotal'] . "). Debes informar del error."); $presupuesto->delete(); } else { if ($presupuesto->save()) { $this->new_message("<a href='" . $presupuesto->url() . "'>" . ucfirst(FS_PRESUPUESTO) . "</a> guardado correctamente."); $this->new_change(ucfirst(FS_PRESUPUESTO) . ' a Proveedor ' . $presupuesto->codigo, $presupuesto->url(), TRUE); } else { $this->new_error_msg("¡Imposible actualizar el <a href='" . $presupuesto->url() . "'>" . FS_PRESUPUESTO . "</a>!"); } } } else { if ($presupuesto->delete()) { $this->new_message(ucfirst(FS_PRESUPUESTO) . " eliminado correctamente."); } else { $this->new_error_msg("¡Imposible eliminar el <a href='" . $presupuesto->url() . "'>" . FS_PRESUPUESTO . "</a>!"); } } } else { $this->new_error_msg("¡Imposible guardar el " . FS_PRESUPUESTO . "!"); } } } }