private function generar_asiento($factura)
 {
     if ($this->empresa->contintegrada) {
         $asiento_factura = new asiento_factura();
         $asiento_factura->generar_asiento_venta($factura);
         foreach ($asiento_factura->errors as $err) {
             $this->new_error_msg($err);
         }
         foreach ($asiento_factura->messages as $msg) {
             $this->new_message($msg);
         }
     }
 }
 private function generar_asiento($factura)
 {
     if ($this->empresa->contintegrada) {
         $asiento_factura = new asiento_factura();
         if ($asiento_factura->generar_asiento_venta($factura)) {
             $this->new_message("<a href='" . $factura->url() . "'>Factura</a> generada correctamente.");
         }
         foreach ($asiento_factura->errors as $err) {
             $this->new_error_msg($err);
         }
         foreach ($asiento_factura->messages as $msg) {
             $this->new_message($msg);
         }
     } else {
         $this->new_message("<a href='" . $factura->url() . "'>Factura</a> generada correctamente.");
     }
     $this->new_change('Factura Cliente ' . $factura->codigo, $factura->url(), TRUE);
 }
 /**
  * Genera el asiento para la factura, si procede
  * @param factura_cliente $factura
  */
 private function generar_asiento(&$factura)
 {
     if ($this->empresa->contintegrada) {
         $asiento_factura = new asiento_factura();
         $asiento_factura->generar_asiento_venta($factura);
         foreach ($asiento_factura->errors as $err) {
             $this->new_error_msg($err);
         }
         foreach ($asiento_factura->messages as $msg) {
             $this->new_message($msg);
         }
     } else {
         /// de todas formas forzamos la generación de las líneas de iva
         $factura->get_lineas_iva();
     }
 }
Beispiel #4
0
 private function generar_asiento()
 {
     if ($this->factura->get_asiento()) {
         $this->new_error_msg('Ya hay un asiento asociado a esta factura.');
     } else {
         $asiento_factura = new asiento_factura();
         $asiento_factura->soloasiento = TRUE;
         if ($asiento_factura->generar_asiento_venta($this->factura)) {
             $this->new_message("<a href='" . $asiento_factura->asiento->url() . "'>Asiento</a> generado correctamente.");
             $this->new_change('Factura Cliente ' . $this->factura->codigo, $this->factura->url());
         }
         foreach ($asiento_factura->errors as $err) {
             $this->new_error_msg($err);
         }
         foreach ($asiento_factura->messages as $msg) {
             $this->new_message($msg);
         }
     }
 }
 private function generar_asiento(&$factura)
 {
     if ($factura->get_asiento()) {
         $this->new_error_msg('Ya hay un asiento asociado a esta factura.');
     } else {
         $asiento_factura = new asiento_factura();
         $asiento_factura->soloasiento = TRUE;
         if ($asiento_factura->generar_asiento_venta($factura)) {
             $this->new_message("<a href='" . $asiento_factura->asiento->url() . "'>Asiento</a> generado correctamente.");
             if (!$this->empresa->contintegrada) {
                 $this->new_message("¿Quieres que los asientos se generen automáticamente?" . " Activa la <a href='index.php?page=admin_empresa#facturacion'>Contabilidad integrada</a>.");
             }
         }
         foreach ($asiento_factura->errors as $err) {
             $this->new_error_msg($err);
         }
         foreach ($asiento_factura->messages as $msg) {
             $this->new_message($msg);
         }
     }
 }
 private function delete_factura()
 {
     $delete = \filter_input(INPUT_GET, 'delete');
     $fact = $this->factura->get($delete);
     $motivo = \filter_input(INPUT_POST, 'motivo');
     $fecha = \filter_input(INPUT_POST, 'fecha');
     $motivo_anulacion = $this->ncf_tipo_anulacion->get($motivo);
     if ($fact) {
         $albaranes = new albaran_cliente();
         /// ¿Sumamos stock?
         $art0 = new articulo();
         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);
                 }
             } else {
                 $idalbaran = $linea->idalbaran;
             }
         }
         if ($idalbaran) {
             $albaran0 = $albaranes->get($idalbaran);
             $new_albaran = clone $albaran0;
             $new_albaran->idalbaran = null;
             $new_albaran->idfactura = null;
             $new_albaran->observaciones = ucfirst(FS_ALBARAN) . " " . $albaran0->codigo . " anulado por eliminación de la factura asociada " . $fact->codigo;
             $new_albaran->fecha = $fecha;
             $new_albaran->neto = $new_albaran->neto * -1;
             $new_albaran->total = $new_albaran->total * -1;
             $new_albaran->totaliva = $new_albaran->totaliva * -1;
             $new_albaran->hora = \date('H:i:s');
             if ($new_albaran->save()) {
                 $linea0 = new linea_albaran_cliente();
                 $new_albaran_lineas = $linea0->all_from_albaran($idalbaran);
                 foreach ($new_albaran_lineas as $linea) {
                     $linea->idalbaran = $new_albaran->idalbaran;
                     $linea->idfactura = null;
                     $linea->idlinea = null;
                     $linea->cantidad = $linea->cantidad * -1;
                     $linea->pvptotal = $linea->pvptotal * -1;
                     $linea->pvpsindto = $linea->pvpsindto * -1;
                     $linea->save();
                 }
             }
         }
         $ncf0 = $this->ncf_ventas->get_ncf($this->empresa->id, $fact->idfactura, $fact->codcliente);
         $ncf0->motivo = $motivo_anulacion->codigo . " " . $motivo_anulacion->descripcion;
         $ncf0->estado = FALSE;
         $ncf0->usuario_modificacion = $this->user->nick;
         $ncf0->fecha_modificacion = Date('d-m-Y H:i:s');
         if ($ncf0->anular()) {
             $asiento_factura = new asiento_factura();
             $asiento_factura->soloasiento = TRUE;
             $fact_rectifica = $fact->idfacturarect;
             $factrectifica = !empty($fact->idfacturarect) ? $fact_rectifica : 'NULL';
             $fact->idfacturarect = $ncf0->tipo_comprobante == '04' ? null : $fact->idfactura;
             if ($asiento_factura->generar_asiento_venta($fact)) {
                 $this->db->exec("UPDATE facturascli set observaciones = '" . ucfirst(FS_FACTURA) . " eliminada por: " . $motivo_anulacion->descripcion . "', anulada = true, pagada = true, neto = 0, total = 0, totalirpf = 0, totaleuros = 0, totaliva = 0, idfacturarect = " . $factrectifica . " where idfactura = " . $fact->idfactura . ";");
                 $this->db->exec("DELETE FROM lineasivafactcli where idfactura = " . $fact->idfactura);
                 $fact_lineas = new linea_factura_cliente();
                 $lineas_fact = $fact_lineas->all_from_factura($fact->idfactura);
                 foreach ($lineas_fact as $linea) {
                     $linea->delete();
                 }
                 $fact->get_lineas_iva();
                 $this->new_message("<a href='" . $asiento_factura->asiento->url() . "'>Asiento</a> reversado correctamente.");
             }
             $this->new_message("<a href='" . $fact->url() . "'>Factura</a> cambiada a estado anulada por error correctamente.");
         } else {
             $this->new_error_msg("¡Imposible eliminar la factura!");
         }
     } else {
         $this->new_error_msg("Factura no encontrada.");
     }
 }