protected function private_core() { /// declaramos los objetos sólo para asegurarnos de que existen las tablas $pedido_cli = new pedido_cliente(); $pedido_pro = new pedido_proveedor(); $this->prestashop = $this->db->table_exists('ps_orders'); $this->mostrar = 'stats'; if (isset($_REQUEST['mostrar'])) { $this->mostrar = $_REQUEST['mostrar']; } $this->tipo = 'ventas'; if (isset($_REQUEST['tipo'])) { $this->tipo = $_REQUEST['tipo']; } if ($this->mostrar == 'listado') { $this->desde = Date('1-m-Y'); $this->hasta = Date('d-m-Y', mktime(0, 0, 0, date("m") + 1, date("1") - 1, date("Y"))); if (isset($_POST['desde'])) { $this->desde = $_POST['desde']; $this->hasta = $_POST['hasta']; } if ($this->tipo == 'ventas') { $this->resultados = $pedido_cli->all_desde($this->desde, $this->hasta); } else { $this->resultados = $pedido_pro->all_desde($this->desde, $this->hasta); } } }
public function __construct(&$db) { $pre = new presupuesto_cliente(); $pre->cron_job(); $ped = new pedido_cliente(); $ped->cron_job(); $pedp = new pedido_proveedor(); $pedp->cron_job(); }
protected function process() { $this->ppage = $this->page->get('compras_pedidos'); $this->agente = FALSE; $this->divisa = new divisa(); $this->ejercicio = new ejercicio(); $this->familia = new familia(); $this->forma_pago = new forma_pago(); $this->impuesto = new impuesto(); $this->nuevo_pedido_url = FALSE; $pedido = new pedido_proveedor(); $this->pedido = FALSE; $this->proveedor = new proveedor(); $this->proveedor_s = FALSE; $this->serie = new serie(); /// ¿El usuario tiene permiso para eliminar en esta página? $this->allow_delete = $this->user->allow_delete_on(__CLASS__); /** * 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)) { $nuevopedp = $this->page->get('nueva_compra'); if ($nuevopedp) { $this->nuevo_pedido_url = $nuevopedp->url(); } } if (isset($_POST['idpedido'])) { $this->pedido = $pedido->get($_POST['idpedido']); $this->modificar(); } else { if (isset($_GET['id'])) { $this->pedido = $pedido->get($_GET['id']); } } if ($this->pedido) { $this->page->title = $this->pedido->codigo; /// cargamos el agente if (!is_null($this->pedido->codagente)) { $agente = new agente(); $this->agente = $agente->get($this->pedido->codagente); } /// cargamos el proveedor $this->proveedor_s = $this->proveedor->get($this->pedido->codproveedor); /// comprobamos el pedido $this->pedido->full_test(); if (isset($_GET['aprobar']) and isset($_GET['petid']) and is_null($this->pedido->idalbaran)) { if ($this->duplicated_petition($_GET['petid'])) { $this->new_error_msg('Petición duplicada. Evita hacer doble clic sobre los botones.'); } else { $this->generar_albaran(); } } } else { $this->new_error_msg("¡" . ucfirst(FS_PEDIDO) . " de proveedor no encontrado!"); } }
protected function private_core() { $this->articulo_proveedor = new articulo_proveedor(); $this->cliente = FALSE; $this->impuesto = new impuesto(); $this->pedido = FALSE; $this->presupuesto = FALSE; $this->proveedor = FALSE; /// obtenemos los datos de configuración de impresión $this->impresion = array('print_ref' => '1', 'print_dto' => '1', 'print_alb' => '0'); $fsvar = new fs_var(); $this->impresion = $fsvar->array_get($this->impresion, FALSE); if (isset($_REQUEST['pedido_p']) and isset($_REQUEST['id'])) { $ped = new pedido_proveedor(); $this->pedido = $ped->get($_REQUEST['id']); if ($this->pedido) { $proveedor = new proveedor(); $this->proveedor = $proveedor->get($this->pedido->codproveedor); } if (isset($_POST['email'])) { $this->enviar_email_proveedor('pedio'); } else { $this->generar_pdf_pedido_proveedor(); } } else { if (isset($_REQUEST['pedido']) and isset($_REQUEST['id'])) { $ped = new pedido_cliente(); $this->pedido = $ped->get($_REQUEST['id']); if ($this->pedido) { $cliente = new cliente(); $this->cliente = $cliente->get($this->pedido->codcliente); } if (isset($_POST['email'])) { $this->enviar_email('pedio'); } else { $this->generar_pdf_pedido(); } } else { if (isset($_REQUEST['presupuesto']) and isset($_REQUEST['id'])) { $pres = new presupuesto_cliente(); $this->presupuesto = $pres->get($_REQUEST['id']); if ($this->presupuesto) { $cliente = new cliente(); $this->cliente = $cliente->get($this->presupuesto->codcliente); } if (isset($_POST['email'])) { $this->enviar_email('presupuesto'); } else { $this->generar_pdf_presupuesto(); } } } } $this->share_extensions(); }
public function show_nombre() { $nombre = 'desconocido'; $encontrado = FALSE; foreach (self::$pedidos as $p) { if ($p->idpedido == $this->idpedido) { $nombre = $p->nombre; $encontrado = TRUE; break; } } if (!$encontrado) { $pre = new pedido_proveedor(); self::$pedidos[] = $pre->get($this->idpedido); $nombre = self::$pedidos[count(self::$pedidos) - 1]->nombre; } return $nombre; }
private function delete_pedido() { $ped = new pedido_proveedor(); $ped1 = $ped->get($_POST['delete']); if ($ped1) { if ($ped1->delete()) { $this->new_message(ucfirst(FS_PEDIDO) . ' ' . $ped1->codigo . " borrado correctamente."); } else { $this->new_error_msg("¡Imposible borrar el " . FS_PEDIDO . "!"); } } else { $this->new_error_msg("¡" . ucfirst(FS_PEDIDO) . " no encontrado!"); } }
private function nuevo_pedido_proveedor() { $continuar = TRUE; $proveedor = $this->proveedor->get($_POST['proveedor']); if (!$proveedor) { $this->new_error_msg('Proveedor no encontrado.'); $continuar = FALSE; } $almacen = $this->almacen->get($_POST['almacen']); if ($almacen) { $this->save_codalmacen($_POST['almacen']); } else { $this->new_error_msg('Almacén no encontrado.'); $continuar = FALSE; } $eje0 = new ejercicio(); $ejercicio = $eje0->get_by_fecha($_POST['fecha'], FALSE); if (!$ejercicio) { $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($_POST['forma_pago']); } else { $this->new_error_msg('Forma de pago no encontrada.'); $continuar = FALSE; } $divisa = $this->divisa->get($_POST['divisa']); if (!$divisa) { $this->new_error_msg('Divisa no encontrada.'); $continuar = FALSE; } $pedido = new pedido_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="' . $pedido->url() . '">' . FS_PEDIDOS . '</a> para ver si el ' . FS_PEDIDO . ' se ha guardado correctamente.'); $continuar = FALSE; } if ($continuar) { $pedido->fecha = $_POST['fecha']; $pedido->hora = $_POST['hora']; $pedido->codproveedor = $proveedor->codproveedor; $pedido->nombre = $_POST['nombre']; $pedido->cifnif = $_POST['cifnif']; $pedido->codalmacen = $almacen->codalmacen; $pedido->codejercicio = $ejercicio->codejercicio; $pedido->codserie = $serie->codserie; $pedido->codpago = $forma_pago->codpago; $pedido->coddivisa = $divisa->coddivisa; $pedido->tasaconv = $divisa->tasaconv_compra; if ($_POST['tasaconv'] != '') { $pedido->tasaconv = floatval($_POST['tasaconv']); } $pedido->codagente = $this->agente->codagente; $pedido->numproveedor = $_POST['numproveedor']; $pedido->observaciones = $_POST['observaciones']; if ($pedido->save()) { $art0 = new articulo(); $n = floatval($_POST['numlineas']); for ($i = 0; $i < $n; $i++) { if (isset($_POST['referencia_' . $i])) { $linea = new linea_pedido_proveedor(); $linea->idpedido = $pedido->idpedido; $linea->descripcion = $_POST['desc_' . $i]; 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->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) { 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; } } $articulo->save(); $this->actualizar_precio_proveedor($pedido->codproveedor, $linea); } } $pedido->neto += $linea->pvptotal; $pedido->totaliva += $linea->pvptotal * $linea->iva / 100; $pedido->totalirpf += $linea->pvptotal * $linea->irpf / 100; $pedido->totalrecargo += $linea->pvptotal * $linea->recargo / 100; if ($linea->irpf > $pedido->irpf) { $pedido->irpf = $linea->irpf; } } else { $this->new_error_msg("¡Imposible guardar la linea con referencia: " . $linea->referencia); $continuar = FALSE; } } } if ($continuar) { /// redondeamos $pedido->neto = round($pedido->neto, FS_NF0); $pedido->totaliva = round($pedido->totaliva, FS_NF0); $pedido->totalirpf = round($pedido->totalirpf, FS_NF0); $pedido->totalrecargo = round($pedido->totalrecargo, FS_NF0); $pedido->total = $pedido->neto + $pedido->totaliva - $pedido->totalirpf + $pedido->totalrecargo; if (abs(floatval($_POST['atotal']) - $pedido->total) >= 0.02) { $this->new_error_msg("El total difiere entre la vista y el controlador (" . $_POST['atotal'] . " frente a " . $pedido->total . "). Debes informar del error."); $pedido->delete(); } else { if ($pedido->save()) { $this->new_message("<a href='" . $pedido->url() . "'>" . ucfirst(FS_PEDIDO) . "</a> guardado correctamente."); $this->new_change(ucfirst(FS_PEDIDO) . ' Proveedor ' . $pedido->codigo, $pedido->url(), TRUE); if ($_POST['redir'] == 'TRUE') { header('Location: ' . $pedido->url()); } } else { $this->new_error_msg("¡Imposible actualizar el <a href='" . $pedido->url() . "'>" . FS_PEDIDO . "</a>!"); } } } else { if ($pedido->delete()) { $this->new_message(ucfirst(FS_PEDIDO) . " eliminado correctamente."); } else { $this->new_error_msg("¡Imposible eliminar el <a href='" . $pedido->url() . "'>" . FS_PEDIDO . "</a>!"); } } } else { $this->new_error_msg("¡Imposible guardar el " . FS_PEDIDO . "!"); } } }
private function generar_pedido() { $pedido = new pedido_proveedor(); $pedido->apartado = $this->presupuesto->apartado; $pedido->automatica = TRUE; $pedido->cifnif = $this->presupuesto->cifnif; $pedido->ciudad = $this->presupuesto->ciudad; $pedido->codagente = $this->presupuesto->codagente; $pedido->codalmacen = $this->presupuesto->codalmacen; $pedido->codproveedor = $this->presupuesto->codproveedor; $pedido->coddir = $this->presupuesto->coddir; $pedido->coddivisa = $this->presupuesto->coddivisa; $pedido->tasaconv = $this->presupuesto->tasaconv; $pedido->codpago = $this->presupuesto->codpago; $pedido->codpais = $this->presupuesto->codpais; $pedido->codpostal = $this->presupuesto->codpostal; $pedido->codserie = $this->presupuesto->codserie; $pedido->direccion = $this->presupuesto->direccion; $pedido->editable = TRUE; $pedido->neto = $this->presupuesto->neto; $pedido->proveedor = $this->presupuesto->proveedor; $pedido->observaciones = $this->presupuesto->observaciones; $pedido->provincia = $this->presupuesto->provincia; $pedido->total = $this->presupuesto->total; $pedido->totaliva = $this->presupuesto->totaliva; $pedido->numero2 = $this->presupuesto->numero2; $pedido->irpf = $this->presupuesto->irpf; $pedido->porcomision = $this->presupuesto->porcomision; $pedido->recfinanciero = $this->presupuesto->recfinanciero; $pedido->totalirpf = $this->presupuesto->totalirpf; $pedido->totalrecargo = $this->presupuesto->totalrecargo; /** * Obtenemos el ejercicio para la fecha de hoy (puede que no sea * el mismo ejercicio que el del presupuesto, por ejemplo si hemos cambiado de año). */ $eje0 = $this->ejercicio->get_by_fecha($pedido->fecha); $pedido->codejercicio = $eje0->codejercicio; $regularizacion = new regularizacion_iva(); if (!$eje0->abierto()) { $this->new_error_msg("El ejercicio está cerrado."); } else { if ($regularizacion->get_fecha_inside($pedido->fecha)) { $this->new_error_msg("El IVA de ese periodo ya ha sido regularizado. No se pueden añadir más " . FS_PEDIDOS . " en esa fecha."); } else { if ($pedido->save()) { $continuar = TRUE; foreach ($this->presupuesto->get_lineas() as $l) { $n = new linea_pedido_proveedor(); $n->idpresupuesto = $l->idpresupuesto; $n->idpedido = $pedido->idpedido; $n->cantidad = $l->cantidad; $n->codimpuesto = $l->codimpuesto; $n->descripcion = $l->descripcion; $n->dtolineal = $l->dtolineal; $n->dtopor = $l->dtopor; $n->irpf = $l->irpf; $n->iva = $l->iva; $n->pvpsindto = $l->pvpsindto; $n->pvptotal = $l->pvptotal; $n->pvpunitario = $l->pvpunitario; $n->recargo = $l->recargo; $n->referencia = $l->referencia; if (!$n->save()) { $continuar = FALSE; $this->new_error_msg("¡Imposible guardar la línea el artículo " . $n->referencia . "! "); break; } } if ($continuar) { $this->presupuesto->idpedido = $pedido->idpedido; $this->presupuesto->editable = FALSE; if ($this->presupuesto->save()) { $this->new_message("<a href='" . $pedido->url() . "'>" . ucfirst(FS_PEDIDO) . '</a> generado correctamente.'); } else { $this->new_error_msg("¡Imposible vincular el " . FS_PRESUPUESTO . " con el nuevo " . FS_PEDIDO . "!"); if ($pedido->delete()) { $this->new_error_msg("El " . FS_PEDIDO . " se ha borrado."); } else { $this->new_error_msg("¡Imposible borrar el " . FS_PEDIDO . "!"); } } } else { if ($pedido->delete()) { $this->new_error_msg("El " . FS_PEDIDO . " se ha borrado."); } else { $this->new_error_msg("¡Imposible borrar el " . FS_PEDIDO . "!"); } } } else { $this->new_error_msg("¡Imposible guardar el " . FS_PEDIDO . "!"); } } } }
private function nuevo_pedido_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; } $pedido = new pedido_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="' . $pedido->url() . '">Pedidos</a> para ver si el pedido se ha guardado correctamente.'); $continuar = FALSE; } if ($continuar) { $pedido->fecha = $_POST['fecha']; $pedido->codalmacen = $almacen->codalmacen; $pedido->codejercicio = $ejercicio->codejercicio; $pedido->codserie = $serie->codserie; $pedido->codpago = $forma_pago->codpago; $pedido->coddivisa = $divisa->coddivisa; $pedido->tasaconv = $divisa->tasaconv; $pedido->codagente = $this->agente->codagente; $pedido->observaciones = $_POST['observaciones']; $pedido->numero2 = $_POST['numero2']; $pedido->irpf = $serie->irpf; $pedido->porcomision = $this->agente->porcomision; foreach ($proveedor->get_direcciones() as $d) { if ($d->domfacturacion) { $pedido->codproveedor = $proveedor->codproveedor; $pedido->cifnif = $proveedor->cifnif; $pedido->nombre = $proveedor->nombrecomercial; $pedido->apartado = $d->apartado; $pedido->ciudad = $d->ciudad; $pedido->coddir = $d->id; $pedido->codpais = $d->codpais; $pedido->codpostal = $d->codpostal; $pedido->direccion = $d->direccion; $pedido->provincia = $d->provincia; break; } } if (is_null($pedido->codproveedor)) { $this->new_error_msg("No hay ninguna dirección asociada al proveedor."); } else { if ($pedido->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_pedido_proveedor(); $linea->idpedido = $pedido->idpedido; $linea->referencia = $articulo->referencia; $linea->descripcion = $_POST['desc_' . $i]; $linea->irpf = $pedido->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()) { $pedido->neto += $linea->pvptotal; $pedido->totaliva += $linea->pvptotal * $linea->iva / 100; $pedido->totalirpf += $linea->pvptotal * $linea->irpf / 100; $pedido->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 $pedido->neto = round($pedido->neto, FS_NF0); $pedido->totaliva = round($pedido->totaliva, FS_NF0); $pedido->totalirpf = round($pedido->totalirpf, FS_NF0); $pedido->totalrecargo = round($pedido->totalrecargo, FS_NF0); $pedido->total = $pedido->neto + $pedido->totaliva - $pedido->totalirpf + $pedido->totalrecargo; if (abs(floatval($_POST['atotal']) - $pedido->total) > 0.01) { $this->new_error_msg("El total difiere entre el controlador y la vista (" . $pedido->total . " frente a " . $_POST['atotal'] . "). Debes informar del error."); $pedido->delete(); } else { if ($pedido->save()) { $this->new_message("<a href='" . $pedido->url() . "'>" . ucfirst(FS_PEDIDO) . "</a> guardado correctamente."); $this->new_change(ucfirst(FS_PEDIDO) . " a Proveedor " . $pedido->codigo, $pedido->url(), TRUE); } else { $this->new_error_msg("¡Imposible actualizar el <a href='" . $pedido->url() . "'>" . FS_PEDIDO . "</a>!"); } } } else { if ($pedido->delete()) { $this->new_message(ucfirst(FS_PEDIDO) . " eliminado correctamente."); } else { $this->new_error_msg("¡Imposible eliminar el <a href='" . $pedido->url() . "'>" . FS_PEDIDO . "</a>!"); } } } else { $this->new_error_msg("¡Imposible guardar el " . FS_PEDIDO . "!"); } } } }
protected function private_core() { $this->pagado = FALSE; $this->pago = new pago(); $this->pagos = array(); $this->pendiente = 0; if (isset($_GET['delete'])) { $pago = $this->pago->get($_GET['delete']); if ($pago) { if ($pago->delete()) { $this->new_message('Pago eliminado correctamente.'); if (!is_null($pago->idfactura)) { $fact0 = new factura_proveedor(); $factura = $fact0->get($pago->idfactura); if ($factura) { if ($factura->pagada) { $factura->pagada = FALSE; $factura->save(); } } } } else { $this->new_error_msg('Error al eliminar el pago.'); } } else { $this->new_error_msg('Pago no encontrado.'); } } else { if (isset($_POST['idpago'])) { $pago = $this->pago->get($_POST['idpago']); if ($pago) { $pago->fecha = $_POST['fecha']; $pago->importe = floatval($_POST['importe']); $pago->nota = $_POST['nota']; if ($pago->save()) { $this->new_message('Pago modificado correctamente.'); } else { $this->new_error_msg('Error al modificar el pago.'); } } else { $this->new_error_msg('Pago no encontrado.'); } } else { if (isset($_POST['importe'])) { if (isset($_REQUEST['factura'])) { $this->pago->fase = 'Factura'; $this->pago->idfactura = $_REQUEST['id']; } else { if (isset($_REQUEST['albaran'])) { $this->pago->fase = ucfirst(FS_ALBARAN); $this->pago->idalbaran = $_REQUEST['id']; } else { if (isset($_REQUEST['pedido'])) { $this->pago->fase = ucfirst(FS_PEDIDO); $this->pago->idpedido = $_REQUEST['id']; } } } $this->pago->fecha = $_POST['fecha']; $this->pago->importe = floatval($_POST['importe']); $this->pago->nota = $_POST['nota']; if ($this->pago->save()) { $this->new_message('Pago guardado correctamente.'); } else { $this->new_error_msg('Error al guardar el pago.'); } } } } if (isset($_REQUEST['factura'])) { /// esto es la fase de factura $fact0 = new factura_proveedor(); $factura = $fact0->get($_REQUEST['id']); if ($factura) { /// buscamos pagos de la fase albarán /// una factura puede ser una agrupación de muchos albaranes $idalbaran = NULL; foreach ($factura->get_lineas() as $linea) { /// el idalbaran lo tienes en las lineas de la factura if ($linea->idalbaran != $idalbaran) { $idalbaran = $linea->idalbaran; $this->db->exec("UPDATE pagos SET idfactura = " . $fact0->var2str($_REQUEST['id']) . " WHERE idalbaran = " . $fact0->var2str($idalbaran) . ";"); } } $this->pagos = $this->pago->all_from_factura($_REQUEST['id']); $this->pendiente = $factura->total; foreach ($this->pagos as $i => $value) { $this->pendiente -= $value->importe; $this->pagos[$i]->pendiente = $this->pendiente; } /// si nos han pagado el total, marcamos la factura como pagada if (!$factura->pagada and abs($this->pendiente) < 0.1) { $factura->pagada = TRUE; $factura->save(); } $this->pagado = $factura->pagada; } } else { if (isset($_REQUEST['albaran'])) { /// fase de albarán $this->pagos = $this->pago->all_from_albaran($_REQUEST['id']); /** * Falta poner el idalbaran a los pagos de los pedidos que forman este * albarán. Si es que hay. * Copia esto de la fase de factura. */ $alb0 = new albaran_proveedor(); $albaran = $alb0->get($_REQUEST['id']); if ($albaran) { $this->pendiente = $albaran->total; foreach ($this->pagos as $i => $value) { $this->pendiente -= $value->importe; $this->pagos[$i]->pendiente = $this->pendiente; } if (abs($this->pendiente) < 0.1) { $this->pagado = TRUE; } } } else { if (isset($_REQUEST['pedido'])) { /// fose de pedido $this->pagos = $this->pago->all_from_pedido($_REQUEST['id']); $ped0 = new pedido_proveedor(); $pedido = $ped0->get($_REQUEST['id']); if ($pedido) { $this->pendiente = $pedido->total; foreach ($this->pagos as $i => $value) { $this->pendiente -= $value->importe; $this->pagos[$i]->pendiente = $this->pendiente; } if (abs($this->pendiente) < 0.1) { $this->pagado = TRUE; } } } } } $this->share_extensions(); }
protected function private_core() { $this->share_extensions(); $this->documento = FALSE; $this->lineas = array(); $this->tipodoc = 'Documento'; if (isset($_REQUEST['doc']) and isset($_REQUEST['id'])) { if ($_REQUEST['doc'] == 'pedido') { $pedido0 = new pedido_proveedor(); $this->documento = $pedido0->get($_REQUEST['id']); $this->tipodoc = FS_PEDIDO; } else { $albaran0 = new albaran_proveedor(); $this->documento = $albaran0->get($_REQUEST['id']); $this->tipodoc = FS_ALBARAN; } if ($this->documento) { $this->lineas = $this->documento->get_lineas(); $art0 = new articulo(); $ap0 = new articulo_proveedor(); $cambios = 0; foreach ($this->lineas as $i => $value) { $this->lineas[$i]->refproveedor = $value->referencia; $this->lineas[$i]->codbarras = ''; $this->lineas[$i]->precio_compra = 0; $this->lineas[$i]->dto_compra = 0; $this->lineas[$i]->precio_venta = 0; $ap = $ap0->get_by($value->referencia, $this->documento->codproveedor); if ($ap) { $this->lineas[$i]->refproveedor = $ap->refproveedor; $this->lineas[$i]->precio_compra = $ap->precio; $this->lineas[$i]->dto_compra = $ap->dto; } $articulo = $art0->get($value->referencia); if ($articulo) { $this->lineas[$i]->codbarras = $articulo->codbarras; $this->lineas[$i]->precio_venta = $articulo->pvp; } /// ¿Tenemos los datos del form? if (isset($_POST['update_' . $value->idlinea])) { /** * Volvemos a buscar el artículos del proveedor, pero esta vez * buscamos también con la referencia del proveedor. */ $ap = $ap0->get_by($value->referencia, $this->documento->codproveedor, $_POST['refproveedor_' . $value->idlinea]); if (!$ap) { $ap = new articulo_proveedor(); $ap->codproveedor = $this->documento->codproveedor; } $ap->referencia = $value->referencia; $ap->refproveedor = $_POST['refproveedor_' . $value->idlinea]; $this->lineas[$i]->refproveedor = $ap->refproveedor; $ap->precio = floatval($_POST['coste_' . $value->idlinea]); $ap->dto = floatval($_POST['dto_' . $value->idlinea]); $ap->save(); if ($articulo) { if (isset($_POST['descripciones'])) { $articulo->descripcion = $_POST['descripcion_' . $value->idlinea]; } if (isset($_POST['codbarras'])) { $articulo->codbarras = $_POST['codbarras_' . $value->idlinea]; $this->lineas[$i]->codbarras = $articulo->codbarras; } if (isset($_POST['pvps'])) { $articulo->set_pvp(floatval($_POST['pvp_' . $value->idlinea])); } /// ¿usamos la referencia de proveedor como equivalencia? if ($_POST['refproveedor_' . $value->idlinea] != '' and $_POST['refproveedor_' . $value->idlinea] != $articulo->referencia) { if (is_null($articulo->equivalencia)) { $articulo->equivalencia = $_POST['refproveedor_' . $value->idlinea]; } } $articulo->save(); } $cambios++; } } if ($cambios > 0) { $this->new_message($cambios . ' cambios realizados.'); } } else { $this->new_error_msg('Documento no encontrado.'); } } else { $this->new_error_msg('Faltan datos.'); } }
public function pendientes() { $pendientes = array(); $pedido = new pedido_proveedor(); foreach ($pedido->all_ptealbaran() as $ped) { $encontrado = FALSE; foreach ($pendientes as $i => $pe) { if ($ped->codproveedor == $pe['codproveedor']) { $encontrado = TRUE; $pendientes[$i]['num']++; break; } } if (!$encontrado) { $pendientes[] = array('codproveedor' => $ped->codproveedor, 'nombre' => $ped->nombre, 'codserie' => $ped->codserie, 'num' => 1); } } return $pendientes; }
private function delete_pedido() { $ped0 = new pedido_proveedor(); $pedido = $ped0->get($_POST['delete']); if ($pedido) { if ($pedido->delete()) { $this->new_message(ucfirst(FS_PEDIDO) . ' de venta ' . $pedido->codigo . " eliminado correctamente.", TRUE); $this->clean_last_changes(); } else { $this->new_error_msg("¡Imposible eliminar el " . FS_PEDIDO . "!"); } } else { $this->new_error_msg("¡" . ucfirst(FS_PEDIDO) . " no encontrado!"); } }
public function delete() { if ($this->db->exec("DELETE FROM " . $this->table_name . " WHERE idpresupuesto = " . $this->var2str($this->idpresupuesto) . ";")) { if ($this->idpedido) { /** * Delegamos la eliminación en la clase correspondiente, * que tendrá que hacer más cosas. */ $pedido = new pedido_proveedor(); $ped0 = $pedido->get($this->idpedido); if ($ped0) { $ped0->delete(); } } return TRUE; } else { return FALSE; } }