añadiendo lineas

This commit is contained in:
jaimejimenezortega
2024-07-09 20:25:32 +02:00
parent 2b7b12fde7
commit 078205b552
9 changed files with 76 additions and 15 deletions

View File

@ -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);
}
}
}

View File

@ -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('<pre>');
var_dump($data);
echo('</pre>');
}
private function clonar_tarifa_encuadernacion($teOrigen, $teDestino){

View File

@ -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',

View File

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

View File

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

View File

@ -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,"
)

View File

@ -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;
}
}

View File

@ -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,

View File

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