mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
añadiendo lineas
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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){
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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,"
|
||||
)
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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,
|
||||
|
||||
@ -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"},
|
||||
|
||||
Reference in New Issue
Block a user