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"},