Пример #1
0
 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();
 }
Пример #3
0
 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;
 }
Пример #4
0
 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!");
     }
 }
Пример #5
0
 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.');
     }
 }
 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;
     }
 }