public function get_lineas() { $linea = new linea_albaran_cliente(); return $linea->all_from_albaran($this->idalbaran); }
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."); } }