diff --git a/ci4/app/Controllers/Facturacion/Facturas.php b/ci4/app/Controllers/Facturacion/Facturas.php index cf244dac..7cad1cac 100755 --- a/ci4/app/Controllers/Facturacion/Facturas.php +++ b/ci4/app/Controllers/Facturacion/Facturas.php @@ -322,12 +322,49 @@ class Facturas extends \App\Controllers\BaseResourceController $model_factura_linea = model('\App\Models\Facturas\FacturaLineaModel'); $pedido_linea_id = $this->request->getPost('lineaPedido') ?? 0; - $linea = $model_pedido_linea->find($pedido_linea_id); + if($linea){ $presupuesto = $model_presupuesto->find($linea->presupuesto_id); if($presupuesto){ - + // Se añade la linea de factura + $descripcion = $model_presupuesto->generarLineaPedido($presupuesto->id, true, $linea->pedido_id); + $cantidad = intval($presupuesto->tirada) - intval($this->model->getCantidadLineaPedidoFacturada($linea->id)); + $base = $cantidad * floatval($presupuesto->total_precio_unidad); + $total_iva = $base * ($presupuesto->iva_reducido==1 ? 0.04 : 0.21); + // se redondea a dos decimales + $total_iva = round($total_iva, 2); + $total = $base + $total_iva; + + $data = (object)[ + 'factura_id'=>$factura_id, + 'pedido_linea_impresion_id'=>$linea->pedido_linea_impresion_id, + 'descripcion'=>$descripcion, + 'cantidad'=>$cantidad, + 'precio_unidad'=>$presupuesto->total_precio_unidad, + 'iva' => $presupuesto->iva_reducido==1 ? 4 : 21, + 'base' => $base, + 'total_iva' => $total_iva, + 'total' => $total, + 'user_updated_id' => auth()->user()->id, + ]; + + $model_factura_linea->insert($data); + + $id = $model_factura_linea->getInsertID(); + + if($id){ + + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + $data = [ + 'error' => 0, + 'id' => $id, + $csrfTokenName => $newTokenHash + ]; + return $this->respond($data); + } } } diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index e102bb18..68276391 100755 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -20,15 +20,20 @@ class Test extends BaseController public function index() { - + /* $model = model("\App\Models\Pedidos\PedidoLineaModel"); $data = $model->obtenerLineasPedidoSinFacturar(999); + */ + + $model = model("\App\Models\Facturas\FacturaModel"); + $data = $model->getCantidadLineaPedidoFacturada(5); echo('
');
         var_dump($data);
         echo('
'); + } private function clonar_tarifa_encuadernacion($teOrigen, $teDestino){ diff --git a/ci4/app/Entities/Facturas/FacturaLineaEntity.php b/ci4/app/Entities/Facturas/FacturaLineaEntity.php index f9df393a..4cef1cd7 100644 --- a/ci4/app/Entities/Facturas/FacturaLineaEntity.php +++ b/ci4/app/Entities/Facturas/FacturaLineaEntity.php @@ -8,7 +8,7 @@ class FacturaLineaEntity extends \CodeIgniter\Entity\Entity protected $attributes = [ 'id' => null, 'factura_id' => null, - 'pedido_impresion_id' => null, + 'pedido_linea_impresion_id' => null, 'pedido_maquetacion_id' => null, 'descripcion' => null, 'cantidad' => null, @@ -26,7 +26,7 @@ class FacturaLineaEntity extends \CodeIgniter\Entity\Entity protected $casts = [ 'id' => 'int', 'factura_id' => 'int', - 'pedido_impresion_id' => 'int', + 'pedido_linea_impresion_id' => 'int', 'pedido_maquetacion_id' => 'int', 'cantidad' => 'float', 'precio_unidad' => 'float', diff --git a/ci4/app/Language/en/Pedidos.php b/ci4/app/Language/en/Pedidos.php index 0e58640a..69a30669 100644 --- a/ci4/app/Language/en/Pedidos.php +++ b/ci4/app/Language/en/Pedidos.php @@ -52,7 +52,9 @@ return [ 'dosCaras' => '2 sides', 'lineasTemplates' =>[ - 'libro' => "[BUDGET %s] Printing of %s copies of %s pages.\nTitle: %s. Author: %s. ISBN: %s.Size: %smm.\n", + 'presupuesto' => '[BUDGET %s] ', + 'pedido' => '[ORDER %s] ', + 'libro' => "Printing of %s copies of %s pages.\nTitle: %s. Author: %s. ISBN: %s.Size: %smm.\n", 'libro_linea_interior' => "%s black pages on %s paper of %s grams", 'libro_linea_cubierta' => "\nCover printed on %s on %s paper of %s grams", 'libro_linea_sobrecubierta' => "\nDust jacket on %s paper of %s grams", diff --git a/ci4/app/Language/es/Pedidos.php b/ci4/app/Language/es/Pedidos.php index 5e790760..f8556058 100644 --- a/ci4/app/Language/es/Pedidos.php +++ b/ci4/app/Language/es/Pedidos.php @@ -51,7 +51,9 @@ return [ 'dosCaras' => '2 caras', 'lineasTemplates' =>[ - 'libro' => "[PRESUPUESTO %s] Impresión de %s ejemplares de %s páginas.\nTítulo: %s. Autor: %s. ISBN: %s.Tamaño: %smm.\n", + 'presupuesto' => '[PRESUPUESTO %s] ', + 'pedido' => '[PEDIDO %s] ', + 'libro' => "Impresión de %s ejemplares de %s páginas.\nTítulo: %s. Autor: %s. ISBN: %s.Tamaño: %smm.\n", 'libro_linea_interior' => "%s páginas en negro sobre papel %s de %s gramos", 'libro_linea_cubierta' => "\nCubierta impresa a %s sobre papel %s de %s gramos", 'libro_linea_sobrecubierta' => "\nSobrecubierta sobre papel %s de %s gramos", diff --git a/ci4/app/Models/Facturas/FacturaLineaModel.php b/ci4/app/Models/Facturas/FacturaLineaModel.php index f9fea0ab..f27fe5c9 100644 --- a/ci4/app/Models/Facturas/FacturaLineaModel.php +++ b/ci4/app/Models/Facturas/FacturaLineaModel.php @@ -10,7 +10,7 @@ class FacturaLineaModel extends \App\Models\BaseModel { // Lista de columnas basada en los campos de la tabla, para asignación masiva protected $allowedFields = [ 'factura_id', - 'pedido_impresion_id', + 'pedido_linea_impresion_id', 'pedido_maquetacion_id', 'descripcion', 'cantidad', @@ -37,7 +37,7 @@ class FacturaLineaModel extends \App\Models\BaseModel { ->table($this->table . " t1") ->select( "t1.id AS id, t1.factura_id AS factura_id, - t1.pedido_impresion_id AS pedido_impresion_id, t1.pedido_maquetacion_id AS pedido_maquetacion_id, + t1.pedido_linea_impresion_id AS pedido_linea_impresion_id, t1.pedido_maquetacion_id AS pedido_maquetacion_id, t1.descripcion AS concepto, t1.cantidad as cantidad, t1.precio_unidad AS precio_unidad, t1.iva AS iva, t1.base AS base, t1.total_iva AS total_iva, t1.total AS total, t1.data AS data," ) diff --git a/ci4/app/Models/Facturas/FacturaModel.php b/ci4/app/Models/Facturas/FacturaModel.php index f859fed9..69eaf487 100644 --- a/ci4/app/Models/Facturas/FacturaModel.php +++ b/ci4/app/Models/Facturas/FacturaModel.php @@ -88,4 +88,14 @@ class FacturaModel extends \App\Models\BaseModel { ->orLike("t1.id", $search) ->groupEnd(); } + + public function getCantidadLineaPedidoFacturada($linea_pedido_id) + { + $builder = $this->db + ->table("facturas_pedidos_lineas t1") + ->select("SUM(t1.cantidad) AS cantidad") + ->where("t1.pedido_linea_id", $linea_pedido_id); + + return $builder->get()->getRow()->cantidad; + } } \ No newline at end of file diff --git a/ci4/app/Models/Presupuestos/PresupuestoModel.php b/ci4/app/Models/Presupuestos/PresupuestoModel.php index b9e48761..0ec21617 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoModel.php @@ -538,7 +538,7 @@ class PresupuestoModel extends \App\Models\BaseModel return $json; } - public function generarLineaPedido($presupuesto_id) + public function generarLineaPedido($presupuesto_id, $forFactura = false, $pedido_id = 0) { $builder = $this->db ->table($this->table . " t1") @@ -565,13 +565,18 @@ class PresupuestoModel extends \App\Models\BaseModel $presupuesto = $presupuesto[0]; // Libro - if($presupuesto->tipo < 10){ + if($presupuesto->tipo < 10 || $presupuesto->tipo==20 || $presupuesto->tipo==21){ if($presupuesto->papel_formato_personalizado == 1){ $presupuesto->tamanio= $presupuesto->papel_formato_ancho . "x" . $presupuesto->papel_formato_alto; } - $presupuesto->concepto = sprintf(lang('Pedidos.lineasTemplates.libro'), - $presupuesto->numero, + if($forFactura){ + $presupuesto->concepto = sprintf(lang('Pedidos.lineasTemplates.pedido'), $pedido_id); + } + else{ + $presupuesto->concepto = sprintf(lang('Pedidos.lineasTemplates.presupuesto'), $presupuesto->numero); + } + $presupuesto->concepto .= sprintf(lang('Pedidos.lineasTemplates.libro'), $presupuesto->unidades, $presupuesto->paginas, $presupuesto->titulo, diff --git a/ci4/app/Views/themes/vuexy/form/facturas/_facturaLineasItems.php b/ci4/app/Views/themes/vuexy/form/facturas/_facturaLineasItems.php index 3f7d2057..e1a65e87 100644 --- a/ci4/app/Views/themes/vuexy/form/facturas/_facturaLineasItems.php +++ b/ci4/app/Views/themes/vuexy/form/facturas/_facturaLineasItems.php @@ -85,7 +85,7 @@ var editor = new $.fn.dataTable.Editor( { "name": "factura_id", "type": "hidden" }, { - "name": "pedido_impresion_id", + "name": "pedido_linea_impresion_id", "type": "hidden" },{ "name": "pedido_maquetacion_id", @@ -126,7 +126,7 @@ var tableLineas = $('#tableOfLineasFactura').DataTable({ scrollX: true, columns: [ {data: null, render: actionBtns}, - {data: "pedido_impresion_id"}, + {data: "pedido_linea_impresion_id"}, {data: "pedido_maquetacion_id"}, {data: "unidades"}, {data: "concepto"},