mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Merge branch 'main' into 'feat/listados_cliente_form'
Main See merge request jjimenez/safekat!629
This commit is contained in:
@ -330,7 +330,7 @@ $routes->group('maquinas', ['namespace' => 'App\Controllers\Configuracion'], fun
|
||||
$routes->post('allmenuitems', 'Maquinas::allItemsSelect', ['as' => 'select2ItemsOfMaquinas']);
|
||||
$routes->post('menuitems', 'Maquinas::menuItems', ['as' => 'menuItemsOfMaquinas']);
|
||||
$routes->post('duplicate/(:num)', 'Maquinas::duplicate/$1', ['as' => 'duplicateMaquina']);
|
||||
|
||||
$routes->get('(:num)','Maquinas::find_maquina/$1',['as' => 'findMaquina']);
|
||||
$routes->get('select', 'Maquinas::select', ['as' => 'selectMaquinas']);
|
||||
});
|
||||
$routes->resource('maquinas', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Maquinas', 'except' => 'show,new,create,update']);
|
||||
@ -994,6 +994,7 @@ $routes->group('produccion', ['namespace' => 'App\Controllers\Produccion'], func
|
||||
$routes->post("update/user", 'Ordentrabajo::update_orden_trabajo_user');
|
||||
$routes->post("update", 'Ordentrabajo::update_orden_trabajo');
|
||||
$routes->post("upload/portada", 'Ordentrabajo::upload_orden_trabajo_portada');
|
||||
$routes->delete("portada/(:num)", 'Ordentrabajo::delete_orden_trabajo_portada/$1');
|
||||
|
||||
/**======================
|
||||
* PDF
|
||||
@ -1001,11 +1002,17 @@ $routes->group('produccion', ['namespace' => 'App\Controllers\Produccion'], func
|
||||
$routes->get('pdf/(:num)', 'Ordentrabajo::get_pdf/$1');
|
||||
$routes->get('portada/(:num)', 'Ordentrabajo::get_portada_img/$1');
|
||||
$routes->group('planning', ['namespace' => 'App\Controllers\Produccion'], function ($routes) {
|
||||
$routes->get('select/maquina/rotativa','Ordentrabajo::select_maquina_planning_rot');
|
||||
$routes->get('select/papel/rotativa','Ordentrabajo::select_papel_planning_rot');
|
||||
$routes->get('select/maquina/plana','Ordentrabajo::select_maquina_planning_plana');
|
||||
$routes->get('select/papel/plana','Ordentrabajo::select_papel_planning_plana');
|
||||
$routes->get('rotativa', 'Ordentrabajo::index_planning_rotativa');
|
||||
$routes->get('papel/datatable', 'Ordentrabajo::papel_gramaje_datatable');
|
||||
$routes->get('papel/plana/datatable', 'Ordentrabajo::papel_pliego_datatable');
|
||||
$routes->get('rotativa/datatable', 'Ordentrabajo::planning_rotativa_datatable');
|
||||
$routes->get('plana/datatable', 'Ordentrabajo::planning_plana_datatable');
|
||||
$routes->post('tarea/toggle/corte/(:num)', 'Ordentrabajo::tarea_toggle_corte/$1');
|
||||
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
@ -363,6 +363,7 @@ class Maquinas extends \App\Controllers\BaseResourceController
|
||||
$r = $this->model->getSelectQuery($this->request->getGet("q"));
|
||||
return $this->response->setJSON($r);
|
||||
}
|
||||
|
||||
protected function getMaquinaListItems($selId = null)
|
||||
{
|
||||
$data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Maquinas.maquina'))])];
|
||||
@ -402,5 +403,9 @@ class Maquinas extends \App\Controllers\BaseResourceController
|
||||
}
|
||||
|
||||
}
|
||||
public function find_maquina(int $maquina_id){
|
||||
$maquinaEntity = $this->model->find($maquina_id);
|
||||
return $this->response->setJSON($maquinaEntity);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -138,7 +138,7 @@ class Ordentrabajo extends BaseController
|
||||
->add("logo", fn($q) => site_url($logo->get_logo_path($q->presupuesto_linea_tipo)))
|
||||
->edit(
|
||||
"fecha_encuadernado_at",
|
||||
fn($q) => Time::createFromFormat("Y-m-d", $q->fecha_encuadernado_at)->format("d/m/Y")
|
||||
fn($q) => $q->fecha_encuadernado_at ? Time::createFromFormat("Y-m-d", $q->fecha_encuadernado_at)->format("d/m/Y") : ""
|
||||
)
|
||||
->add("action", fn($q) => $q->id)
|
||||
->toJson(true);
|
||||
@ -153,7 +153,7 @@ class Ordentrabajo extends BaseController
|
||||
->add("logo", fn($q) => site_url($logo->get_logo_path($q->presupuesto_linea_tipo)))
|
||||
->edit(
|
||||
"fecha_encuadernado_at",
|
||||
fn($q) => $q->fecha_encuadernado_at? Time::createFromFormat("Y-m-d", $q->fecha_encuadernado_at)->format("d/m/Y"):""
|
||||
fn($q) => $q->fecha_encuadernado_at ? Time::createFromFormat("Y-m-d", $q->fecha_encuadernado_at)->format("d/m/Y") : ""
|
||||
)
|
||||
->add("action", fn($q) => $q->id)
|
||||
->toJson(true);
|
||||
@ -168,7 +168,7 @@ class Ordentrabajo extends BaseController
|
||||
->add("logo", fn($q) => site_url($logo->get_logo_path($q->presupuesto_linea_tipo)))
|
||||
->edit(
|
||||
"fecha_encuadernado_at",
|
||||
fn($q) => $q->fecha_encuadernado_at?Time::createFromFormat("Y-m-d", $q->fecha_encuadernado_at)->format("d/m/Y"):""
|
||||
fn($q) =>$q->fecha_encuadernado_at ? Time::createFromFormat("Y-m-d", $q->fecha_encuadernado_at)->format("d/m/Y") : ""
|
||||
)
|
||||
->add("action", fn($q) => $q->id)
|
||||
->toJson(true);
|
||||
@ -183,7 +183,7 @@ class Ordentrabajo extends BaseController
|
||||
->add("logo", fn($q) => site_url($logo->get_logo_path($q->presupuesto_linea_tipo)))
|
||||
->edit(
|
||||
"fecha_encuadernado_at",
|
||||
fn($q) => Time::createFromFormat("Y-m-d", $q->fecha_encuadernado_at)->format("d/m/Y")
|
||||
fn($q) => $q->fecha_encuadernado_at ? Time::createFromFormat("Y-m-d", $q->fecha_encuadernado_at)->format("d/m/Y") : ""
|
||||
)
|
||||
->add("action", fn($q) => $q->id)
|
||||
->toJson(true);
|
||||
@ -253,6 +253,22 @@ class Ordentrabajo extends BaseController
|
||||
return $this->response->setJSON(["message" => "Portada error", "error" => $th->getMessage()])->setStatusCode($th->getCode());
|
||||
}
|
||||
}
|
||||
public function delete_orden_trabajo_portada($orden_trabajo_id)
|
||||
{
|
||||
try {
|
||||
helper('filesystem');
|
||||
$otEntity = $this->otModel->find($orden_trabajo_id);
|
||||
$pathActualFile = $otEntity->portada_path;
|
||||
$fullPath = WRITEPATH . 'uploads/' . $pathActualFile;
|
||||
if(file_exists($fullPath)){
|
||||
delete_files($fullPath);
|
||||
}
|
||||
$r = $this->otModel->update($otEntity->id, ["portada_path" => null]);
|
||||
return $this->response->setJSON(["message" => "Portada eliminada", "data" => $r]);
|
||||
} catch (\Throwable $th) {
|
||||
return $this->response->setStatusCode(500)->setJSON(["message" => "Portada error", "error" => $th->getMessage()]);
|
||||
}
|
||||
}
|
||||
public function get_portada_img($orden_trabajo_id)
|
||||
{
|
||||
$ot = $this->otModel->find($orden_trabajo_id);
|
||||
@ -273,8 +289,7 @@ class Ordentrabajo extends BaseController
|
||||
return DataTable::of($q)
|
||||
->edit("fecha_entrega_real_at", fn($q) => $q->fecha_entrega_real_at ? Time::createFromFormat("Y-m-d", $q->fecha_entrega_real_at)->format("d/m/Y") : "")
|
||||
->add("metros_check", fn($q) => $q->otId)
|
||||
->add("corte", fn($q) => $q->otId)
|
||||
|
||||
->add("corte", fn($q) => ["otId" => $q->otId,"tipo_corte" => $this->produccionService->ordenTrabajoTareaCorte($q->otId)])
|
||||
->add("action", fn($q) => $q)
|
||||
->toJson(true);
|
||||
}
|
||||
@ -287,4 +302,30 @@ class Ordentrabajo extends BaseController
|
||||
->add("action", fn($q) => $q)
|
||||
->toJson(true);
|
||||
}
|
||||
public function select_maquina_planning_rot(){
|
||||
$q = $this->request->getGet('q');
|
||||
$result = $this->produccionService->querySelectMaquinaPlanningRotativa($q);
|
||||
return $this->response->setJSON($result);
|
||||
}
|
||||
public function select_papel_planning_rot(){
|
||||
$q = $this->request->getGet('q');
|
||||
$result = $this->produccionService->querySelectPapelPlanningRot($q);
|
||||
return $this->response->setJSON($result);
|
||||
}
|
||||
public function select_maquina_planning_plana(){
|
||||
$q = $this->request->getGet('q');
|
||||
$result = $this->produccionService->querySelectMaquinaPlanningPlana($q);
|
||||
return $this->response->setJSON($result);
|
||||
}
|
||||
public function select_papel_planning_plana(){
|
||||
$q = $this->request->getGet('q');
|
||||
$result = $this->produccionService->querySelectPapelPlanningPlana($q);
|
||||
return $this->response->setJSON($result);
|
||||
}
|
||||
public function tarea_toggle_corte($orden_trabajo_id)
|
||||
{
|
||||
$status = $this->produccionService->tareaUpdateMaquinaCorte($orden_trabajo_id);
|
||||
return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "status" => $status ]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace App\Database\Migrations;
|
||||
|
||||
use App\Models\Configuracion\ConfigVariableModel;
|
||||
use App\Models\OrdenTrabajo\OrdenTrabajoTarea;
|
||||
use CodeIgniter\Database\Migration;
|
||||
|
||||
class AddColumnIsCorteOrdenTrabajoTarea extends Migration
|
||||
{
|
||||
public function up()
|
||||
{
|
||||
$fields = [
|
||||
'is_corte' => [
|
||||
'type' => 'TINYINT',
|
||||
'constraint' => 1,
|
||||
'null' => false,
|
||||
'default' => 0,
|
||||
],
|
||||
'tipo_corte' => [
|
||||
'type' => 'ENUM',
|
||||
'constraint' => ['bobina','guillotina'],
|
||||
'default' => 'bobina',
|
||||
],
|
||||
];
|
||||
$this->forge->addColumn('orden_trabajo_tareas', $fields);
|
||||
$m = model(OrdenTrabajoTarea::class);
|
||||
$m->where('nombre','Corte')->set(['is_corte' => true,'tipo_corte' => 'bobina'])->update();
|
||||
$cvm = model(ConfigVariableModel::class);
|
||||
$cvm->insert([
|
||||
"name" => "id_maquina_bobina_corte_ot_tarea",
|
||||
"value" => 61,
|
||||
"description" => "Id de máquina por defecto para corte en bobina rotativa. (Asignación máquina orden trabajo tarea)"
|
||||
]);
|
||||
$cvm->insert([
|
||||
"name" => "id_maquina_guillotina_corte_ot_tarea",
|
||||
"value" => 31,
|
||||
"description" => "Id de máquina por defecto para corte guillotina rotativa. (Asignación máquina orden trabajo tarea)"
|
||||
]);
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
$this->forge->dropColumn('orden_trabajo_tareas', 'is_corte');
|
||||
$this->forge->dropColumn('orden_trabajo_tareas', 'tipo_corte');
|
||||
$cvm = model(ConfigVariableModel::class);
|
||||
$cvm->whereIn('name',["id_maquina_bobina_corte_ot_tarea","id_maquina_guillotina_corte_ot_tarea"])->delete(purge:true);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@ -2,6 +2,7 @@
|
||||
namespace App\Entities\Presupuestos;
|
||||
|
||||
use App\Entities\Tarifas\TarifaEncuadernacionEntity;
|
||||
use App\Models\Configuracion\MaquinaModel;
|
||||
use App\Models\Tarifas\Maquinas\TarifaEncuadernacionMaquinaModel;
|
||||
use App\Models\Tarifas\TarifaEncuadernacionModel;
|
||||
use CodeIgniter\Entity;
|
||||
@ -34,7 +35,13 @@ class PresupuestoEncuadernacionesEntity extends \CodeIgniter\Entity\Entity
|
||||
public function maquinas() : array
|
||||
{
|
||||
$m = model(TarifaEncuadernacionMaquinaModel::class);
|
||||
return $m->where("tarifa_encuadernacion_id",$this->attributes["tarifa_encuadernado_id"])->findAll();
|
||||
$tarifa_maquinas = $m->where("tarifa_encuadernacion_id",$this->attributes["tarifa_encuadernado_id"])->findAll();
|
||||
$maquinaModel = model(MaquinaModel::class);
|
||||
$maquinas = [];
|
||||
foreach ($tarifa_maquinas as $key => $tarifa_maquina) {
|
||||
$maquinas[] = $maquinaModel->find($tarifa_maquina->maquina_id);
|
||||
}
|
||||
return $maquinas;
|
||||
}
|
||||
public function tarifa() : TarifaEncuadernacionEntity
|
||||
{
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
namespace App\Entities\Presupuestos;
|
||||
|
||||
use App\Entities\Tarifas\TarifaManipuladoEntity;
|
||||
use App\Models\Configuracion\MaquinaModel;
|
||||
use App\Models\Tarifas\Maquinas\TarifaManipuladoMaquinaModel;
|
||||
use App\Models\Tarifas\TarifaManipuladoModel;
|
||||
use CodeIgniter\Entity;
|
||||
@ -28,7 +29,13 @@ class PresupuestoManipuladosEntity extends \CodeIgniter\Entity\Entity
|
||||
public function maquinas() : array
|
||||
{
|
||||
$m = model(TarifaManipuladoMaquinaModel::class);
|
||||
return $m->where("tarifa_manipulado_id",$this->attributes["tarifa_manipulado_id"])->findAll();
|
||||
$tarifa_maquinas = $m->where("tarifa_manipulado_id",$this->attributes["tarifa_manipulado_id"])->findAll();
|
||||
$maquinaModel = model(MaquinaModel::class);
|
||||
$maquinas = [];
|
||||
foreach ($tarifa_maquinas as $key => $tarifa_maquina) {
|
||||
$maquinas[] = $maquinaModel->find($tarifa_maquina->maquina_id);
|
||||
}
|
||||
return $maquinas;
|
||||
}
|
||||
public function tarifa() : TarifaManipuladoEntity
|
||||
{
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
namespace App\Entities\Presupuestos;
|
||||
|
||||
use App\Entities\Tarifas\TarifapreimpresionEntity;
|
||||
use App\Models\Configuracion\MaquinaModel;
|
||||
use App\Models\Tarifas\Maquinas\TarifaPreimpresionMaquinaModel;
|
||||
use App\Models\Tarifas\TarifapreimpresionModel;
|
||||
use CodeIgniter\Entity;
|
||||
@ -26,7 +27,13 @@ class PresupuestoPreimpresionesEntity extends \CodeIgniter\Entity\Entity
|
||||
public function maquinas() : array
|
||||
{
|
||||
$m = model(TarifaPreimpresionMaquinaModel::class);
|
||||
return $m->where("tarifa_preimpresion_id",$this->attributes["tarifa_preimpresion_id"])->findAll();
|
||||
$tarifa_maquinas = $m->where("tarifa_preimpresion_id",$this->attributes["tarifa_preimpresion_id"])->findAll();
|
||||
$maquinaModel = model(MaquinaModel::class);
|
||||
$maquinas = [];
|
||||
foreach ($tarifa_maquinas as $key => $tarifa_maquina) {
|
||||
$maquinas[] = $maquinaModel->find($tarifa_maquina->maquina_id);
|
||||
}
|
||||
return $maquinas;
|
||||
}
|
||||
public function tarifa() : TarifapreimpresionEntity
|
||||
{
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
namespace App\Entities\Presupuestos;
|
||||
|
||||
use App\Entities\Tarifas\TarifaextraEntity;
|
||||
use App\Models\Configuracion\MaquinaModel;
|
||||
use App\Models\Tarifas\Maquinas\TarifaExtraMaquinaModel;
|
||||
use App\Models\Tarifas\TarifaextraModel;
|
||||
use CodeIgniter\Entity;
|
||||
@ -27,7 +28,13 @@ class PresupuestoServiciosExtraEntity extends \CodeIgniter\Entity\Entity
|
||||
public function maquinas() : array
|
||||
{
|
||||
$m = model(TarifaExtraMaquinaModel::class);
|
||||
return $m->where("tarifa_extra_id",$this->attributes["tarifa_extra_id"])->findAll();
|
||||
$tarifa_maquinas = $m->where("tarifa_extra_id",$this->attributes["tarifa_extra_id"])->findAll();
|
||||
$maquinaModel = model(MaquinaModel::class);
|
||||
$maquinas = [];
|
||||
foreach ($tarifa_maquinas as $key => $tarifa_maquina) {
|
||||
$maquinas[] = $maquinaModel->find($tarifa_maquina->maquina_id);
|
||||
}
|
||||
return $maquinas;
|
||||
}
|
||||
public function tarifa() : TarifaextraEntity
|
||||
{
|
||||
|
||||
@ -10,7 +10,8 @@ use App\Models\OrdenTrabajo\OrdenTrabajoTarea;
|
||||
use App\Models\OrdenTrabajo\OrdenTrabajoUser;
|
||||
use App\Models\Pedidos\PedidoModel;
|
||||
use CodeIgniter\Entity\Entity;
|
||||
|
||||
use Picqer\Barcode\Renderers\PngRenderer;
|
||||
use Picqer\Barcode\Types\TypeCode128;
|
||||
|
||||
class OrdenTrabajoEntity extends Entity
|
||||
{
|
||||
@ -101,4 +102,11 @@ class OrdenTrabajoEntity extends Entity
|
||||
$this->attributes["dates"] = $ot_dates->fill($data);
|
||||
return $this;
|
||||
}
|
||||
public function getBarCode() : string
|
||||
{
|
||||
$barcode = new TypeCode128();
|
||||
$renderer = new PngRenderer();
|
||||
$barcodeData = $barcode->getBarcode($this->pedido()->presupuesto()->id);
|
||||
return base64_encode($renderer->render($barcodeData,200, 50));
|
||||
}
|
||||
}
|
||||
|
||||
@ -25,6 +25,8 @@ class OrdenTrabajoTareaEntity extends Entity
|
||||
"imposicion_id" => null,
|
||||
"tiempo_estimado" => null,
|
||||
"tiempo_real" => null,
|
||||
"is_corte" => null,
|
||||
"tipo_corte" => null,
|
||||
"comment" => null,
|
||||
];
|
||||
protected $datamap = [];
|
||||
@ -39,6 +41,8 @@ class OrdenTrabajoTareaEntity extends Entity
|
||||
"imposicion_id" => "?integer",
|
||||
"tiempo_estimado" => "?float",
|
||||
"tiempo_real" => "?float",
|
||||
"is_corte" => "boolean",
|
||||
"tipo_corte" => "string",
|
||||
"comment" => "?string"
|
||||
];
|
||||
|
||||
|
||||
@ -2,6 +2,8 @@
|
||||
|
||||
namespace App\Entities\Produccion;
|
||||
|
||||
use App\Entities\Usuarios\UserEntity;
|
||||
use App\Models\Usuarios\UserModel;
|
||||
use CodeIgniter\Entity\Entity;
|
||||
|
||||
class OrdenTrabajoUserEntity extends Entity
|
||||
@ -10,30 +12,30 @@ class OrdenTrabajoUserEntity extends Entity
|
||||
protected $dates = ['created_at', 'updated_at', 'deleted_at'];
|
||||
|
||||
protected $attributes = [
|
||||
"orden_trabajo_id"=> null,
|
||||
"user_created_id"=> null,
|
||||
"user_update_id"=> null,
|
||||
"inaplazable_revised_change_user_id"=> null,
|
||||
"ferro_disponible_hecho_user_id"=> null,
|
||||
"ferro_disponible_ok_user_id"=> null,
|
||||
"ferro_entregado_user_id"=> null,
|
||||
"pendiente_ferro_user_id"=> null,
|
||||
"ferro_en_cliente_user_id"=> null,
|
||||
"ferro_ok_user_id"=> null,
|
||||
"interior_bn_user_id"=> null,
|
||||
"interior_color_user_id"=> null,
|
||||
"preparacion_interior_user_id"=> null,
|
||||
"cubierta_user_id"=> null,
|
||||
"plastificado_user_id"=> null,
|
||||
"encuadernacion_user_id"=> null,
|
||||
"corte_user_id"=> null,
|
||||
"embalaje_user_id"=> null,
|
||||
"entrada_manipulado_user_id"=> null,
|
||||
"pre_formato_user_id"=> null,
|
||||
"pre_lomo_user_id"=> null,
|
||||
"pre_solapa_user_id"=> null,
|
||||
"pre_codbarras_user_id"=> null,
|
||||
"pre_imposicion_user_id"=> null,
|
||||
"orden_trabajo_id" => null,
|
||||
"user_created_id" => null,
|
||||
"user_update_id" => null,
|
||||
"inaplazable_revised_change_user_id" => null,
|
||||
"ferro_disponible_hecho_user_id" => null,
|
||||
"ferro_disponible_ok_user_id" => null,
|
||||
"ferro_entregado_user_id" => null,
|
||||
"pendiente_ferro_user_id" => null,
|
||||
"ferro_en_cliente_user_id" => null,
|
||||
"ferro_ok_user_id" => null,
|
||||
"interior_bn_user_id" => null,
|
||||
"interior_color_user_id" => null,
|
||||
"preparacion_interior_user_id" => null,
|
||||
"cubierta_user_id" => null,
|
||||
"plastificado_user_id" => null,
|
||||
"encuadernacion_user_id" => null,
|
||||
"corte_user_id" => null,
|
||||
"embalaje_user_id" => null,
|
||||
"entrada_manipulado_user_id" => null,
|
||||
"pre_formato_user_id" => null,
|
||||
"pre_lomo_user_id" => null,
|
||||
"pre_solapa_user_id" => null,
|
||||
"pre_codbarras_user_id" => null,
|
||||
"pre_imposicion_user_id" => null,
|
||||
"pre_imprimir_user_id" => null
|
||||
];
|
||||
// protected array $casts = [
|
||||
@ -63,4 +65,21 @@ class OrdenTrabajoUserEntity extends Entity
|
||||
// "pre_imposicion_user_id" => "?integer",
|
||||
// "pre_imprimir_user_id" => "?integer"
|
||||
// ];
|
||||
|
||||
protected function userBy(string $key): ?UserEntity
|
||||
{
|
||||
$user = null;
|
||||
if (isset($this->attributes[$key])) {
|
||||
|
||||
if ($this->attributes[$key]) {
|
||||
$m = model(UserModel::class);
|
||||
$user = $m->find($this->attributes[$key]);
|
||||
}
|
||||
}
|
||||
return $user;
|
||||
}
|
||||
public function getPlastificadoBy() : ?UserEntity
|
||||
{
|
||||
return $this->userBy('plastificado_user_id');
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
<?php
|
||||
namespace App\Entities\Tarifas\Acabados;
|
||||
|
||||
use App\Entities\Tarifas\Maquinas\TarifaAcabadoMaquinaEntity;
|
||||
use App\Models\Tarifas\Maquinas\TarifaAcabadoMaquinaModel;
|
||||
use CodeIgniter\Entity;
|
||||
|
||||
class TarifaAcabadoEntity extends \CodeIgniter\Entity\Entity
|
||||
@ -32,4 +34,15 @@ class TarifaAcabadoEntity extends \CodeIgniter\Entity\Entity
|
||||
"user_updated_id" => "int",
|
||||
"is_deleted" => "int",
|
||||
];
|
||||
/**
|
||||
* Devuelve las maquinas asociadas a esta tarifa de acabado
|
||||
*
|
||||
* @return array<MaquinaEntity>
|
||||
*/
|
||||
public function maquinas() : array
|
||||
{
|
||||
$m = model(TarifaAcabadoMaquinaModel::class);
|
||||
$ta_maquinas = $m->where('tarifa_acabado_id',$this->attributes['id'])->findAll();
|
||||
return array_map(fn(TarifaAcabadoMaquinaEntity $ta_maquina) => $ta_maquina->maquina(),$ta_maquinas);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,6 +2,8 @@
|
||||
namespace App\Entities\Tarifas\Maquinas;
|
||||
|
||||
use App\Entities\Tarifas\Acabados\TarifaAcabadoEntity;
|
||||
use App\Entities\Configuracion\Maquina;
|
||||
use App\Models\Configuracion\MaquinaModel;
|
||||
use App\Models\Tarifas\Acabados\TarifaAcabadoModel;
|
||||
use CodeIgniter\Entity\Entity;
|
||||
|
||||
@ -27,4 +29,10 @@ class TarifaAcabadoMaquinaEntity extends Entity
|
||||
$m = model(TarifaAcabadoModel::class);
|
||||
return $m->find($this->attributes["tarifa_acabado_id"]);
|
||||
}
|
||||
public function maquina() : Maquina
|
||||
{
|
||||
$m = model(MaquinaModel::class);
|
||||
return $m->find($this->attributes["maquina_id"]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,9 @@
|
||||
|
||||
namespace App\Entities\Tarifas\Maquinas;
|
||||
|
||||
use App\Entities\Configuracion\Maquina;
|
||||
use App\Entities\Tarifas\TarifaEncuadernacionEntity;
|
||||
use App\Models\Configuracion\MaquinaModel;
|
||||
use App\Models\Tarifas\TarifaEncuadernacionModel;
|
||||
use CodeIgniter\Entity\Entity;
|
||||
|
||||
@ -31,4 +33,9 @@ class TarifaEncuadernacionMaquinaEntity extends Entity
|
||||
$m = model(TarifaEncuadernacionModel::class);
|
||||
return $m->find($this->attributes["tarifa_encuadernacion_id"]);
|
||||
}
|
||||
public function maquina(): ?Maquina
|
||||
{
|
||||
$m = model(MaquinaModel::class);
|
||||
return $m->find($this->attributes['maquina_id']);
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,7 +6,8 @@ use App\Entities\Tarifas\TarifaextraEntity;
|
||||
use App\Models\Tarifas\Acabados\TarifaAcabadoModel;
|
||||
use App\Models\Tarifas\TarifaextraModel;
|
||||
use CodeIgniter\Entity\Entity;
|
||||
|
||||
use App\Entities\Configuracion\Maquina;
|
||||
use App\Models\Configuracion\MaquinaModel;
|
||||
|
||||
class TarifaExtraMaquinaEntity extends Entity
|
||||
{
|
||||
@ -29,4 +30,9 @@ class TarifaExtraMaquinaEntity extends Entity
|
||||
$m = model(TarifaextraModel::class);
|
||||
return $m->find($this->attributes["tarifa_extra_id"]);
|
||||
}
|
||||
public function maquina(): ?Maquina
|
||||
{
|
||||
$m = model(MaquinaModel::class);
|
||||
return $m->find($this->attributes['maquina_id']);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,7 +4,8 @@ namespace App\Entities\Tarifas\Maquinas;
|
||||
use App\Entities\Tarifas\TarifaManipuladoEntity;
|
||||
use App\Models\Tarifas\TarifaManipuladoModel;
|
||||
use CodeIgniter\Entity\Entity;
|
||||
|
||||
use App\Entities\Configuracion\Maquina;
|
||||
use App\Models\Configuracion\MaquinaModel;
|
||||
|
||||
class TarifaManipuladoMaquinaEntity extends Entity
|
||||
{
|
||||
@ -28,4 +29,9 @@ class TarifaManipuladoMaquinaEntity extends Entity
|
||||
$m = model(TarifaManipuladoModel::class);
|
||||
return $m->find($this->attributes["tarifa_manipulado_id"]);
|
||||
}
|
||||
public function maquina(): ?Maquina
|
||||
{
|
||||
$m = model(MaquinaModel::class);
|
||||
return $m->find($this->attributes['maquina_id']);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,7 +4,8 @@ namespace App\Entities\Tarifas\Maquinas;
|
||||
use App\Entities\Tarifas\TarifapreimpresionEntity;
|
||||
use App\Models\Tarifas\TarifapreimpresionModel;
|
||||
use CodeIgniter\Entity\Entity;
|
||||
|
||||
use App\Entities\Configuracion\Maquina;
|
||||
use App\Models\Configuracion\MaquinaModel;
|
||||
|
||||
class TarifaPreimpresionMaquinaEntity extends Entity
|
||||
{
|
||||
@ -28,4 +29,9 @@ class TarifaPreimpresionMaquinaEntity extends Entity
|
||||
$m = model(TarifapreimpresionModel::class);
|
||||
return $m->find($this->attributes["tarifa_preimpresion_id"]);
|
||||
}
|
||||
public function maquina(): ?Maquina
|
||||
{
|
||||
$m = model(MaquinaModel::class);
|
||||
return $m->find($this->attributes['maquina_id']);
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,6 +28,8 @@ class OrdenTrabajoTarea extends Model
|
||||
"imposicion_id",
|
||||
"tiempo_estimado",
|
||||
"tiempo_real",
|
||||
"is_corte",
|
||||
"tipo_corte",
|
||||
"comment"
|
||||
];
|
||||
|
||||
|
||||
@ -2,8 +2,9 @@
|
||||
|
||||
namespace App\Models\Tarifas\Maquinas;
|
||||
|
||||
|
||||
use App\Entities\Configuracion\Maquina;
|
||||
use App\Entities\Tarifas\Maquinas\TarifaEncuadernacionMaquinaEntity;
|
||||
use App\Models\Configuracion\MaquinaModel;
|
||||
use CodeIgniter\Database\BaseBuilder;
|
||||
use CodeIgniter\Model;
|
||||
|
||||
@ -71,4 +72,5 @@ class TarifaEncuadernacionMaquinaModel extends Model
|
||||
$query->where("tarifa_encuadernacion_maquinas.tarifa_encuadernacion_id", $tarifa_encuadernacion_id);
|
||||
return $query;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Database\Migrations\ConfigVariablesApp;
|
||||
use App\Entities\Clientes\ClienteEntity;
|
||||
use App\Entities\Pedidos\PedidoEntity;
|
||||
use App\Entities\Presupuestos\PresupuestoEntity;
|
||||
@ -15,6 +16,7 @@ use App\Models\Usuarios\UserModel;
|
||||
use CodeIgniter\Config\BaseService;
|
||||
use App\Entities\Configuracion\Maquina as MaquinaEntity;
|
||||
use App\Entities\Produccion\OrdenTrabajoTareaEntity;
|
||||
use App\Models\Configuracion\ConfigVariableModel;
|
||||
use App\Models\Configuracion\MaquinaModel;
|
||||
use CodeIgniter\Database\BaseBuilder;
|
||||
use CodeIgniter\Database\BaseResult;
|
||||
@ -28,8 +30,8 @@ use Dompdf\Dompdf;
|
||||
*/
|
||||
class ProductionService extends BaseService
|
||||
{
|
||||
public array $TIPOS_PLANA = ['lp_bn','lp_color','lp_colorhq'];
|
||||
public array $TIPOS_ROTATIVA = ['lp_rot_bn','lp_rot_color'];
|
||||
public array $TIPOS_PLANA = ['lp_bn', 'lp_color', 'lp_colorhq'];
|
||||
public array $TIPOS_ROTATIVA = ['lp_rot_bn', 'lp_rot_color'];
|
||||
|
||||
protected OrdenTrabajoModel $otModel;
|
||||
|
||||
@ -86,7 +88,7 @@ class ProductionService extends BaseService
|
||||
$this->ot = $this->otModel->find($orden_trabajo_id);
|
||||
$pedido = $this->ot->pedido();
|
||||
$this->setPedido($pedido);
|
||||
$this->defaultMaquinaCorte = $this->maquinaModel->where('nombre',$this->defaultMaquinaCorteName)->first();
|
||||
$this->defaultMaquinaCorte = $this->maquinaModel->where('nombre', $this->defaultMaquinaCorteName)->first();
|
||||
return $this;
|
||||
}
|
||||
/**
|
||||
@ -162,7 +164,7 @@ class ProductionService extends BaseService
|
||||
"fecha_entrega_externo" => $this->pedido->fecha_entrega_externo,
|
||||
];
|
||||
$otDateId = $this->otDate->insert($data);
|
||||
$this->otDate->updateUserDateMap($this->ot->id,$data);
|
||||
$this->otDate->updateUserDateMap($this->ot->id, $data);
|
||||
return $otDateId;
|
||||
}
|
||||
protected function storeOrdenTrabajoUsers(): int|bool|string
|
||||
@ -176,9 +178,9 @@ class ProductionService extends BaseService
|
||||
$this->storeOrdenTrabajoTareas();
|
||||
$this->storeOrdenTrabajoAcabadoTareas();
|
||||
$this->storeOrdenTrabajoManipuladoTareas();
|
||||
$this->storeOrdenTrabajoPreimpresionTareas();
|
||||
// $this->storeOrdenTrabajoPreimpresionTareas();
|
||||
$this->storeOrdenTrabajoEncuadernacionTareas();
|
||||
$this->storeOrdenTrabajoExtraTareas();
|
||||
// $this->storeOrdenTrabajoExtraTareas();
|
||||
}
|
||||
public function resetAllTareas(): BaseResult|bool
|
||||
{
|
||||
@ -208,8 +210,8 @@ class ProductionService extends BaseService
|
||||
$ot_tareas["orden"] = $p_linea_maquina->orden_planning ?? 0;
|
||||
$ot_tareas["maquina_id"] = $p_linea_maquina->id;
|
||||
$ot_tareas["imposicion_id"] = null;
|
||||
$ot_tareas["tiempo_estimado"] = $p_linea->horas_maquina;
|
||||
$ot_tareas["tiempo_real"] = $p_linea->horas_maquina; //? Tiempo real se inserta manual?
|
||||
$ot_tareas["tiempo_estimado"] = $p_linea->horas_maquina * 3600;
|
||||
$ot_tareas["tiempo_real"] = $p_linea->horas_maquina * 3600; //? Tiempo real se inserta manual?
|
||||
$insert_query_result = $this->otTarea->insert($ot_tareas);
|
||||
$ot_tareas = [];
|
||||
$this->storeTareaCorte($p_linea);
|
||||
@ -219,15 +221,17 @@ class ProductionService extends BaseService
|
||||
protected function storeTareaCorte(PresupuestoLineaEntity $pLinea): ?OrdenTrabajoTareaEntity
|
||||
{
|
||||
$otCorte = null;
|
||||
if($pLinea->isRotativa()){
|
||||
if ($pLinea->isRotativa()) {
|
||||
$tareaId = $this->otTarea->insert([
|
||||
'orden_trabajo_id' => $this->ot->id,
|
||||
'presupuesto_linea_id' => $pLinea->id,
|
||||
'nombre' => 'Corte',
|
||||
'maquina_id' => $this->defaultMaquinaCorte->id,
|
||||
'orden' => $this->defaultMaquinaCorte->orden_planning,
|
||||
'tiempo_estimado' => $pLinea->rotativa_tiempo_corte,
|
||||
'tiempo_real' => $pLinea->rotativa_tiempo_corte
|
||||
'tiempo_estimado' => $pLinea->rotativa_tiempo_corte * 60,
|
||||
'tiempo_real' => $pLinea->rotativa_tiempo_corte * 60,
|
||||
'is_corte' => true,
|
||||
'tipo_corte' => "bobina",
|
||||
]);
|
||||
$otCorte = $this->otTarea->find($tareaId);
|
||||
}
|
||||
@ -241,20 +245,20 @@ class ProductionService extends BaseService
|
||||
$p_linea_maquinas = $p_linea->maquinas();
|
||||
$ot_tareas = [];
|
||||
if (count($p_linea_maquinas) > 0) {
|
||||
foreach ($p_linea_maquinas as $key => $linea) {
|
||||
$ot_tareas["orden_trabajo_id"] = $this->ot->id;
|
||||
$ot_tareas["presupuesto_acabado_id"] = $p_linea->id;
|
||||
$ot_tareas["nombre"] = $p_linea->tarifa()->nombre;
|
||||
$ot_tareas["orden"] = $linea->orden_planning ?? 0;
|
||||
$ot_tareas["maquina_id"] = $linea->id;
|
||||
$ot_tareas["imposicion_id"] = null;
|
||||
$this->otTarea->insert($ot_tareas);
|
||||
$ot_tareas = [];
|
||||
}
|
||||
$linea_maquina = $p_linea_maquinas[0]; //Se obtiene la primera máquina aunque tenga varias
|
||||
$ot_tareas["orden_trabajo_id"] = $this->ot->id;
|
||||
$ot_tareas["presupuesto_acabado_id"] = $p_linea->id;
|
||||
$ot_tareas["nombre"] = $p_linea->tarifa()->nombre;
|
||||
$ot_tareas["orden"] = $linea_maquina->orden_planning ?? 100;
|
||||
$ot_tareas["maquina_id"] = $linea_maquina->id;
|
||||
$ot_tareas["imposicion_id"] = null;
|
||||
$this->otTarea->insert($ot_tareas);
|
||||
$ot_tareas = [];
|
||||
} else {
|
||||
$ot_tareas["orden_trabajo_id"] = $this->ot->id;
|
||||
$ot_tareas["presupuesto_acabado_id"] = $p_linea->id;
|
||||
$ot_tareas["nombre"] = $p_linea->tarifa()->nombre ?? "";
|
||||
$ot_tareas["orden"] = 100;
|
||||
$this->otTarea->insert($ot_tareas);
|
||||
}
|
||||
}
|
||||
@ -267,20 +271,20 @@ class ProductionService extends BaseService
|
||||
$p_linea_maquinas = $p_linea->maquinas();
|
||||
$ot_tareas = [];
|
||||
if (count($p_linea_maquinas) > 0) {
|
||||
foreach ($p_linea_maquinas as $key => $linea) {
|
||||
$ot_tareas["orden_trabajo_id"] = $this->ot->id;
|
||||
$ot_tareas["presupuesto_manipulado_id"] = $p_linea->id;
|
||||
$ot_tareas["nombre"] = $p_linea->tarifa()->nombre;
|
||||
$ot_tareas["orden"] = $linea->orden_planning ?? 0;
|
||||
$ot_tareas["maquina_id"] = $linea->id;
|
||||
$ot_tareas["imposicion_id"] = null;
|
||||
$this->otTarea->insert($ot_tareas);
|
||||
$ot_tareas = [];
|
||||
}
|
||||
$linea_maquina = $p_linea_maquinas[0]; //Se obtiene la primera máquina aunque tenga varias
|
||||
$ot_tareas["orden_trabajo_id"] = $this->ot->id;
|
||||
$ot_tareas["presupuesto_manipulado_id"] = $p_linea->id;
|
||||
$ot_tareas["nombre"] = $p_linea->tarifa()->nombre;
|
||||
$ot_tareas["orden"] = $linea_maquina->orden_planning ?? 100;
|
||||
$ot_tareas["maquina_id"] = $linea_maquina->id;
|
||||
$ot_tareas["imposicion_id"] = null;
|
||||
$this->otTarea->insert($ot_tareas);
|
||||
$ot_tareas = [];
|
||||
} else {
|
||||
$ot_tareas["orden_trabajo_id"] = $this->ot->id;
|
||||
$ot_tareas["presupuesto_manipulado_id"] = $p_linea->id;
|
||||
$ot_tareas["nombre"] = $p_linea->tarifa()->nombre ?? "";
|
||||
$ot_tareas["orden"] = 100;
|
||||
$this->otTarea->insert($ot_tareas);
|
||||
}
|
||||
}
|
||||
@ -293,20 +297,20 @@ class ProductionService extends BaseService
|
||||
$p_linea_maquinas = $p_linea->maquinas();
|
||||
$ot_tareas = [];
|
||||
if (count($p_linea_maquinas) > 0) {
|
||||
foreach ($p_linea_maquinas as $key => $linea) {
|
||||
$ot_tareas["orden_trabajo_id"] = $this->ot->id;
|
||||
$ot_tareas["presupuesto_preimpresion_id"] = $p_linea->id;
|
||||
$ot_tareas["nombre"] = $p_linea->tarifa()->nombre;
|
||||
$ot_tareas["orden"] = $linea->orden_planning ?? 0;
|
||||
$ot_tareas["maquina_id"] = $linea->id;
|
||||
$ot_tareas["imposicion_id"] = null;
|
||||
$this->otTarea->insert($ot_tareas);
|
||||
$ot_tareas = [];
|
||||
}
|
||||
$linea_maquina = $p_linea_maquinas[0]; //Se obtiene la primera máquina aunque tenga varias
|
||||
$ot_tareas["orden_trabajo_id"] = $this->ot->id;
|
||||
$ot_tareas["presupuesto_preimpresion_id"] = $p_linea->id;
|
||||
$ot_tareas["nombre"] = $p_linea->tarifa()->nombre;
|
||||
$ot_tareas["orden"] = $linea_maquina->orden_planning ?? 100;
|
||||
$ot_tareas["maquina_id"] = $linea_maquina->id;
|
||||
$ot_tareas["imposicion_id"] = null;
|
||||
$this->otTarea->insert($ot_tareas);
|
||||
$ot_tareas = [];
|
||||
} else {
|
||||
$ot_tareas["orden_trabajo_id"] = $this->ot->id;
|
||||
$ot_tareas["presupuesto_preimpresion_id"] = $p_linea->id;
|
||||
$ot_tareas["nombre"] = $p_linea->tarifa()->nombre ?? "";
|
||||
$ot_tareas["orden"] = 100;
|
||||
$this->otTarea->insert($ot_tareas);
|
||||
}
|
||||
}
|
||||
@ -319,20 +323,20 @@ class ProductionService extends BaseService
|
||||
$p_linea_maquinas = $p_linea->maquinas();
|
||||
$ot_tareas = [];
|
||||
if (count($p_linea_maquinas) > 0) {
|
||||
foreach ($p_linea_maquinas as $key => $linea) {
|
||||
$ot_tareas["orden_trabajo_id"] = $this->ot->id;
|
||||
$ot_tareas["presupuesto_encuadernado_id"] = $p_linea->id;
|
||||
$ot_tareas["nombre"] = $p_linea->tarifa()->nombre;
|
||||
$ot_tareas["orden"] = $linea->orden_planning ?? 0;
|
||||
$ot_tareas["maquina_id"] = $linea->id;
|
||||
$ot_tareas["imposicion_id"] = null;
|
||||
$this->otTarea->insert($ot_tareas);
|
||||
$ot_tareas = [];
|
||||
}
|
||||
$linea_maquina = $p_linea_maquinas[0]; //Se obtiene la primera máquina aunque tenga varias
|
||||
$ot_tareas["orden_trabajo_id"] = $this->ot->id;
|
||||
$ot_tareas["presupuesto_encuadernado_id"] = $p_linea->id;
|
||||
$ot_tareas["nombre"] = $p_linea->tarifa()->nombre;
|
||||
$ot_tareas["orden"] = $linea_maquina->orden_planning ?? 110;
|
||||
$ot_tareas["maquina_id"] = $linea_maquina->id;
|
||||
$ot_tareas["imposicion_id"] = null;
|
||||
$this->otTarea->insert($ot_tareas);
|
||||
$ot_tareas = [];
|
||||
} else {
|
||||
$ot_tareas["orden_trabajo_id"] = $this->ot->id;
|
||||
$ot_tareas["presupuesto_encuadernado_id"] = $p_linea->id;
|
||||
$ot_tareas["nombre"] = $p_linea->tarifa()->nombre ?? "";
|
||||
$ot_tareas["orden"] = 110;
|
||||
$this->otTarea->insert($ot_tareas);
|
||||
}
|
||||
}
|
||||
@ -345,16 +349,15 @@ class ProductionService extends BaseService
|
||||
$p_linea_maquinas = $p_linea->maquinas();
|
||||
$ot_tareas = [];
|
||||
if (count($p_linea_maquinas) > 0) {
|
||||
foreach ($p_linea_maquinas as $key => $linea) {
|
||||
$ot_tareas["orden_trabajo_id"] = $this->ot->id;
|
||||
$ot_tareas["presupuesto_extra_id"] = $p_linea->id;
|
||||
$ot_tareas["nombre"] = $p_linea->tarifa()->nombre;
|
||||
$ot_tareas["orden"] = $linea->orden_planning;
|
||||
$ot_tareas["maquina_id"] = $linea->id;
|
||||
$ot_tareas["imposicion_id"] = null;
|
||||
$this->otTarea->insert($ot_tareas);
|
||||
$ot_tareas = [];
|
||||
}
|
||||
$linea_maquina = $p_linea_maquinas[0]; //Se obtiene la primera máquina aunque tenga varias
|
||||
$ot_tareas["orden_trabajo_id"] = $this->ot->id;
|
||||
$ot_tareas["presupuesto_extra_id"] = $p_linea->id;
|
||||
$ot_tareas["nombre"] = $p_linea->tarifa()->nombre;
|
||||
$ot_tareas["orden"] = $linea_maquina->orden_planning ?? 0;
|
||||
$ot_tareas["maquina_id"] = $linea_maquina->id;
|
||||
$ot_tareas["imposicion_id"] = null;
|
||||
$this->otTarea->insert($ot_tareas);
|
||||
$ot_tareas = [];
|
||||
} else {
|
||||
$ot_tareas["orden_trabajo_id"] = $this->ot->id;
|
||||
$ot_tareas["presupuesto_extra_id"] = $p_linea->id;
|
||||
@ -459,12 +462,12 @@ class ProductionService extends BaseService
|
||||
->join("lg_imposiciones", "lg_imposiciones.id = orden_trabajo_tareas.imposicion_id", "left")
|
||||
// ->where("orden_trabajo_tareas.orden_trabajo_id", $this->ot->id)
|
||||
->whereIn("presupuesto_linea.tipo", $this->TIPOS_ROTATIVA)
|
||||
->where('lg_maquinas.is_rotativa',true)
|
||||
->where('lg_maquinas.is_rotativa', true)
|
||||
->where("orden_trabajo_tareas.deleted_at", null)
|
||||
->orderBy("orden_trabajo_tareas.orden", "ASC");
|
||||
return $q;
|
||||
}
|
||||
/**
|
||||
/**
|
||||
* Query para mostrar en datatable
|
||||
*
|
||||
* @return BaseBuilder
|
||||
@ -500,7 +503,7 @@ class ProductionService extends BaseService
|
||||
->join("lg_imposiciones", "lg_imposiciones.id = orden_trabajo_tareas.imposicion_id", "left")
|
||||
// ->where("orden_trabajo_tareas.orden_trabajo_id", $this->ot->id)
|
||||
->whereIn("presupuesto_linea.tipo", $this->TIPOS_PLANA)
|
||||
->where('lg_maquinas.is_rotativa',false)
|
||||
->where('lg_maquinas.is_rotativa', false)
|
||||
->where("orden_trabajo_tareas.deleted_at", null)
|
||||
->orderBy("orden_trabajo_tareas.orden", "ASC");
|
||||
return $q;
|
||||
@ -716,6 +719,10 @@ class ProductionService extends BaseService
|
||||
|
||||
public function updateOrdenTrabajoTarea($tarea_id, $data): bool
|
||||
{
|
||||
if (isset($data['maquina_id'])) {
|
||||
$maquina = model(MaquinaModel::class)->find($data['maquina_id']);
|
||||
$data['orden'] = $maquina->orden_planning;
|
||||
}
|
||||
return $this->otTarea->update($tarea_id, $data);
|
||||
}
|
||||
|
||||
@ -725,16 +732,16 @@ class ProductionService extends BaseService
|
||||
$otDate = $this->otDate->where('orden_trabajo_id', $this->ot->id)
|
||||
->set([$data['name'] => $data[$data['name']]])
|
||||
->update($data);
|
||||
$this->otDate->updateUserDateMap($this->ot->id,$data);
|
||||
$this->otDate->updateUserDateMap($this->ot->id, $data);
|
||||
$ot_users = $this->ot->users();
|
||||
if(isset($this->MAPPING_DATE_USER[$data["name"]])){
|
||||
if (isset($this->MAPPING_DATE_USER[$data["name"]])) {
|
||||
$user_id = $ot_users->{$this->MAPPING_DATE_USER[$data["name"]]};
|
||||
$user = $this->userModel->find($user_id);
|
||||
if($user_id){
|
||||
if ($user_id) {
|
||||
$result = ["user" => null, "status" => false];
|
||||
}
|
||||
$result = ["user" => $user, "status" => $otDate];
|
||||
}else{
|
||||
} else {
|
||||
$result = ["user" => null, "status" => false];
|
||||
}
|
||||
return $result;
|
||||
@ -817,4 +824,106 @@ class ProductionService extends BaseService
|
||||
{
|
||||
return ["title" => lang('ot.filter_by_task'), 'id' => $id];
|
||||
}
|
||||
|
||||
public function querySelectMaquinaPlanningRotativa($q)
|
||||
{
|
||||
$query = $this->otModel->builder()->select([
|
||||
"orden_trabajo_tareas.maquina_id as id",
|
||||
"lg_maquinas.nombre as name",
|
||||
])
|
||||
->join("orden_trabajo_tareas", "orden_trabajo_tareas.orden_trabajo_id = ordenes_trabajo.id", "left")
|
||||
->join("presupuesto_linea", "presupuesto_linea.id = orden_trabajo_tareas.presupuesto_linea_id", "left")
|
||||
->join("lg_maquinas", "lg_maquinas.id = orden_trabajo_tareas.maquina_id", "left")
|
||||
->whereIn("presupuesto_linea.tipo", $this->TIPOS_ROTATIVA)
|
||||
->where('lg_maquinas.is_rotativa', true)
|
||||
->where("orden_trabajo_tareas.deleted_at", null)
|
||||
->orderBy("orden_trabajo_tareas.orden", "ASC");
|
||||
if ($q) {
|
||||
$query->like('lg_maquinas.nombre', $q);
|
||||
}
|
||||
return $query->get()->getResultArray();
|
||||
}
|
||||
public function querySelectMaquinaPlanningPlana($q)
|
||||
{
|
||||
$query = $this->otModel->builder()->select([
|
||||
"orden_trabajo_tareas.maquina_id as id",
|
||||
"lg_maquinas.nombre as name",
|
||||
])
|
||||
->join("orden_trabajo_tareas", "orden_trabajo_tareas.orden_trabajo_id = ordenes_trabajo.id", "left")
|
||||
->join("orden_trabajo_dates", "orden_trabajo_dates.orden_trabajo_id = ordenes_trabajo.id", "left")
|
||||
->join("presupuesto_linea", "presupuesto_linea.id = orden_trabajo_tareas.presupuesto_linea_id", "left")
|
||||
->join("lg_maquinas", "lg_maquinas.id = orden_trabajo_tareas.maquina_id", "left")
|
||||
->whereIn("presupuesto_linea.tipo", $this->TIPOS_PLANA)
|
||||
->where('lg_maquinas.is_rotativa', false)
|
||||
->where("orden_trabajo_tareas.deleted_at", null)
|
||||
->orderBy("orden_trabajo_tareas.orden", "ASC");
|
||||
if ($q) {
|
||||
$query->like('lg_maquinas.nombre', $q);
|
||||
}
|
||||
return $query->get()->getResultArray();
|
||||
}
|
||||
public function querySelectPapelPlanningRot(string $q)
|
||||
{
|
||||
$query = $this->otModel->builder()->select([
|
||||
"lg_papel_impresion.id",
|
||||
"lg_papel_impresion.nombre as name",
|
||||
])
|
||||
->join("orden_trabajo_tareas", "orden_trabajo_tareas.orden_trabajo_id = ordenes_trabajo.id", "left")
|
||||
->join("presupuesto_linea", "presupuesto_linea.id = orden_trabajo_tareas.presupuesto_linea_id", "left")
|
||||
->join("presupuestos", "presupuestos.id = presupuesto_linea.presupuesto_id", "right")
|
||||
->join("lg_papel_impresion", "presupuesto_linea.papel_impresion_id = lg_papel_impresion.id", "left")
|
||||
->join("lg_papel_formato", "lg_papel_formato.id = presupuestos.papel_formato_id", "left")
|
||||
->where("orden_trabajo_tareas.deleted_at", null)
|
||||
->where("orden_trabajo_tareas.presupuesto_linea_id IS NOT NULL", NULL, FALSE)
|
||||
->whereIn("presupuesto_linea.tipo", $this->TIPOS_ROTATIVA)
|
||||
->groupBy('lg_papel_impresion.id');
|
||||
if ($q) {
|
||||
$query->like('lg_papel_impresion.nombre', $q);
|
||||
}
|
||||
return $query->get()->getResultArray();
|
||||
}
|
||||
public function querySelectPapelPlanningPlana($q)
|
||||
{
|
||||
$query = $this->otModel->builder()->select([
|
||||
"lg_papel_impresion.id",
|
||||
"lg_papel_impresion.nombre as name",
|
||||
])
|
||||
->join("orden_trabajo_tareas", "orden_trabajo_tareas.orden_trabajo_id = ordenes_trabajo.id", "left")
|
||||
->join("presupuesto_linea", "presupuesto_linea.id = orden_trabajo_tareas.presupuesto_linea_id", "left")
|
||||
->join("presupuestos", "presupuestos.id = presupuesto_linea.presupuesto_id", "right")
|
||||
->join("lg_papel_impresion", "presupuesto_linea.papel_impresion_id = lg_papel_impresion.id", "left")
|
||||
->join("lg_papel_formato", "lg_papel_formato.id = presupuestos.papel_formato_id", "left")
|
||||
->where("orden_trabajo_tareas.deleted_at", null)
|
||||
->where("orden_trabajo_tareas.presupuesto_linea_id IS NOT NULL", NULL, FALSE)
|
||||
->whereIn("presupuesto_linea.tipo", $this->TIPOS_PLANA)
|
||||
->groupBy('lg_papel_impresion.id');
|
||||
if ($q) {
|
||||
$query->like('lg_papel_impresion.nombre', $q);
|
||||
}
|
||||
return $query->get()->getResultArray();
|
||||
}
|
||||
public function tareaUpdateMaquinaCorte($orden_trabajo_id): bool
|
||||
{
|
||||
$cvm = model(ConfigVariableModel::class);
|
||||
$otTarea = $this->otTarea->where('orden_trabajo_id', $orden_trabajo_id)->where('is_corte', true)->first();
|
||||
$toggleCorte = "bobina";
|
||||
if ($otTarea->tipo_corte == "bobina") {
|
||||
$maquina_id = $cvm->where('name', "id_maquina_guillotina_corte_ot_tarea")->first()["value"];
|
||||
$toggleCorte = "guillotina";
|
||||
} elseif ($otTarea->tipo_corte == "guillotina") {
|
||||
$maquina_id = $cvm->where('name', "id_maquina_bobina_corte_ot_tarea")->first()["value"];
|
||||
$toggleCorte = "bobina";
|
||||
} else {
|
||||
$maquina_id = null;
|
||||
}
|
||||
return $this->otTarea
|
||||
->where('orden_trabajo_id', $orden_trabajo_id)
|
||||
->where('is_corte', true)
|
||||
->set(["maquina_id" => $maquina_id, "tipo_corte" => $toggleCorte])
|
||||
->update();
|
||||
}
|
||||
public function ordenTrabajoTareaCorte(int $ot_id): ?string
|
||||
{
|
||||
return $this->otTarea->where('orden_trabajo_id', $ot_id)->where('is_corte', true)?->first()->tipo_corte ?? null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
<i class="ti ti-box-multiple ti-lg"></i>
|
||||
</div>
|
||||
<div class="card-info">
|
||||
<h5 class="mb-0" id="ot-paginas"><?=$presupuesto->merma?></h5>
|
||||
<h5 class="mb-0" id="ot-paginas"><?=$presupuesto->paginas?></h5>
|
||||
<span class="fx-large"><?= @lang("Produccion.paginas") ?></span>
|
||||
</div>
|
||||
</div>
|
||||
@ -44,7 +44,7 @@
|
||||
<i class="ti ti-bookmark ti-lg"></i>
|
||||
</div>
|
||||
<div class="card-info">
|
||||
<h5 class="mb-0" id="ot-solapa"><?=$presupuesto->solapas?></h5>
|
||||
<h5 class="mb-0" id="ot-solapa"><?=$presupuesto->solapas > 0 ? $presupuesto->solapas : 0?></h5>
|
||||
|
||||
<span class="fx-large"><?= @lang("Produccion.solapa") ?></span>
|
||||
</div>
|
||||
@ -56,7 +56,7 @@
|
||||
<i class="ti ti-books ti-lg"></i>
|
||||
</div>
|
||||
<div class="card-info">
|
||||
<h5 class="mb-0" id="ot-tirada"></h5>
|
||||
<h5 class="mb-0" id="ot-tirada"><?=$presupuesto->tirada?></h5>
|
||||
|
||||
<span class="fx-large"><?= @lang("Produccion.tirada") ?></span>
|
||||
</div>
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
<div class="sk-wave-rect"></div>
|
||||
<div class="sk-wave-rect"></div>
|
||||
</div>
|
||||
<img class="card-img card-img-left img-thumbnail" id="portada-orden-trabajo" src="" hidden>
|
||||
<img class="card-img card-img-left img-thumbnail" id="portada-orden-trabajo" src="<?=site_url('assets/img/portada_not_found.png')?>" hidden>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="card-body">
|
||||
|
||||
@ -16,7 +16,11 @@
|
||||
<input class="form-control" type="file" id="portada-file-input">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<button type="button" class="btn btn-primary w-100" id="btn-upload-portada"><i class="ti ti-md ti-upload"></i>Subir portada </button>
|
||||
<div class="d-flex flex-row align-items-center justify-content-start gap-2">
|
||||
<button type="button" class="btn btn-primary" id="btn-upload-portada"><i class="ti ti-md ti-upload"></i>Subir portada </button>
|
||||
<button type="button" class="btn btn-danger" id="btn-delete-portada"><i class="ti ti-md ti-trash"></i>Eliminar </button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -119,11 +119,13 @@
|
||||
|
||||
<?= $this->section('css') ?>
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/formvalidation/dist/css/formValidation.min.css') ?>" />
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.css') ?>" />
|
||||
<?= $this->endSection() ?>
|
||||
|
||||
<?= $this->section("additionalExternalJs") ?>
|
||||
<script type="module" src="<?= site_url("assets/js/safekat/pages/produccion/planning_rotativa/index.js") ?>"></script>
|
||||
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/FormValidation.js") ?>"></script>
|
||||
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js") ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
|
||||
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js") ?>"></script>
|
||||
<?= $this->endSection() ?>
|
||||
@ -5,6 +5,7 @@
|
||||
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
|
||||
<?= $this->section('content'); ?>
|
||||
<div id="ot-edit" data-id="<?= $modelId ?>">
|
||||
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
|
||||
<?= view("themes/vuexy/form/produccion/ot/otHeader") ?>
|
||||
|
||||
<div class="row">
|
||||
@ -33,9 +34,11 @@
|
||||
</form>
|
||||
<div class="col-md-12 mt-3">
|
||||
<div class="d-grip gap-2">
|
||||
<a type="button" class="btn btn-primary btn-block w-100 mb-1" target="__blank" href="<?= "/produccion/ordentrabajo/pdf/" . $modelId ?>"><?= @lang("Produccion.preview_pdf") ?></a>
|
||||
<button type="button" class="btn btn-primary btn-block w-100 mb-1"><?= @lang("Produccion.imprimir_ferro") ?></button>
|
||||
<button type="button" class="btn btn-secondary btn-block w-100 mb-1"><?= @lang("Produccion.imprimir_codigo_safekat") ?></button>
|
||||
<a type="button" class="btn btn-outline-danger btn-block mb-1" target="__blank" href="<?= "/produccion/ordentrabajo/pdf/" . $modelId ?>">
|
||||
<span class="ti-sm ti ti-eye me-1"></span>
|
||||
<?= @lang("Produccion.preview_pdf") ?></a>
|
||||
<button type="button" class="btn btn-primary btn-block mb-1"><?= @lang("Produccion.imprimir_ferro") ?></button>
|
||||
<button type="button" class="btn btn-secondary btn-block mb-1"><?= @lang("Produccion.imprimir_codigo_safekat") ?></button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
356
ci4/app/Views/themes/vuexy/pdfs/orden_trabajo copy.php
Normal file
356
ci4/app/Views/themes/vuexy/pdfs/orden_trabajo copy.php
Normal file
@ -0,0 +1,356 @@
|
||||
<?php
|
||||
|
||||
use CodeIgniter\I18n\Time;
|
||||
|
||||
$session = session();
|
||||
$settings = $session->get('settings');
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html
|
||||
lang="<?= $session->get('lang') ?>"
|
||||
data-assets-path="<?= site_url('themes/vuexy/') ?>"
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<!-- Icons -->
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/fonts/fontawesome.css') ?>" />
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/fonts/tabler-icons.css') ?>" />
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/fonts/flag-icons.css') ?>" />
|
||||
|
||||
<!-- Core CSS -->
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/css/rtl/core.css') ?>" />
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/css/rtl/theme-semi-dark.css') ?>" />
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/safekat.css') ?>" />
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/css/pages/app-chat.css') ?>">
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/flatpickr/flatpickr.css') ?>" />
|
||||
<link rel="icon" type="image/x-icon" href="<?= site_url('themes/vuexy/img/favicon/favicon.ico') ?>" />
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/pdf.ot.css') ?>">
|
||||
|
||||
<title><?= $presupuesto->titulo ?>[OT:<?= $ot->id ?>]</title>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="col-md-12" data-id=<?= $ot->id ?>>
|
||||
<div class="header">
|
||||
<div class="title"><?= $presupuesto->titulo ?></div>
|
||||
<div style="font-size: medium;"> <strong><?= Time::now()->format("d/m/Y H:i:s") ?></strong></div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="cover">
|
||||
<div class="portada">
|
||||
<img class="portada-img" src="<?= "data:image/png;base64," . base64_encode(file_get_contents(WRITEPATH . "uploads/" . $ot->portada_path)) ?>">
|
||||
</div>
|
||||
<div class="portada-info">
|
||||
<div class="d-flex flex-row justify-content-end">
|
||||
<h1 class="text-success"><?= $presupuesto->presupuestoLineaImpresion()->isRotativa() ? "Rotativa" : "Plana" ?></h1>
|
||||
</div>
|
||||
<div class="portada-row">
|
||||
<span class="portada-text pl-2"><strong><?= $dates->fecha_encuadernado_at ? week_day_humanize(Time::createFromFormat("Y-m-d", $dates->fecha_encuadernado_at)->getDayOfWeek(), true) : "" ?></strong></span>
|
||||
<div class="portada-text pr-2"><strong>Comercial:</strong> <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </div>
|
||||
</div>
|
||||
<div class="portada-row-2 <?= $ot->fecha_entrega_warning ? "bg-red" : "bg-white" ?>">
|
||||
<div style="display: flex;flex-direction:column;height:100%;width:25%">
|
||||
<span class="portada-text date <?= $ot->fecha_entrega_warning ? "bg-red" : "bg-white" ?> " id="fecha_encuadernado_at"><?= $dates->fecha_encuadernado_at ? Time::createFromFormat("Y-m-d", $dates->fecha_encuadernado_at)?->format("d/m/Y") : "" ?></span>
|
||||
<!-- <div style="width: 100%;height: 100%;background-color:white;margin-left:0.5rem;margin-bottom:0.5rem">
|
||||
|
||||
</div> -->
|
||||
<div class="pl-2">
|
||||
<table id="table-portada-ubicacion">
|
||||
<tr class="t-row">
|
||||
<th class="t-header">IN</th>
|
||||
<td class="t-cell"><?= $ubicacion ?></td>
|
||||
</tr>
|
||||
<tr class="t-row">
|
||||
<th class="t-header">PO</th>
|
||||
<td class="t-cell"><?= $ubicacion ?></td>
|
||||
</tr>
|
||||
<tr class="t-row">
|
||||
<th class="t-header">PL</th>
|
||||
<td class="t-cell"><?= $ubicacion ?></td>
|
||||
</tr>
|
||||
<tr class="t-row">
|
||||
<th class="t-header">EN</th>
|
||||
<td class="t-cell"><?= $ubicacion ?></td>
|
||||
</tr>
|
||||
<tr class="t-row">
|
||||
<th class="t-header">MA</th>
|
||||
<td class="t-cell"><?= $ubicacion ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex;flex-direction:column;height:100%;width:10%" class="pt-2">
|
||||
<div class="pl-2 pt-2">
|
||||
<table id="table-portada-ubicacion">
|
||||
<tr class="t-row">
|
||||
<th class="t-header" style="font-size: large;">RF</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="square-wrapper">
|
||||
<div class="square bg-white">
|
||||
BCLF 100
|
||||
</div>
|
||||
<div class="square bg-white">
|
||||
0:3
|
||||
</div>
|
||||
<div class="square bg-gray">
|
||||
EM 300
|
||||
</div>
|
||||
<div class="square bg-blue">
|
||||
BRILLO
|
||||
</div>
|
||||
</div>
|
||||
<div class="cod">
|
||||
<div class="code-code">
|
||||
<p style="line-height: 0px;font-size:20px"><?= $ot->id ?></p>
|
||||
</div>
|
||||
<div class="cod-barras">
|
||||
<img src="data:image/png;base64,<?= $ot->bar_code ?>" alt="barcode" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="flex-row">
|
||||
<div class="flex-col" id="presupuesto-section">
|
||||
<table>
|
||||
<tr>
|
||||
<th>Cliente</th>
|
||||
<td class="t-cell ">
|
||||
<p class="cliente-title"><?= $cliente->nombre ?></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Titulo</th>
|
||||
<td class="t-cell ">
|
||||
<p class="presupuesto-title"><?= $presupuesto->titulo ?></p>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<th>ISBN</th>
|
||||
<td class="t-cell"><?= $presupuesto->isbn ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>CIF</th>
|
||||
<td class="t-cell"><?= $cliente->cif ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="esquema-imposicion-wrapper">
|
||||
<div class="esquema">
|
||||
<div class="pagina-imposicion-outer-start">
|
||||
<div class="pagina-imposicion-inner">
|
||||
A
|
||||
</div>
|
||||
</div>
|
||||
<div class="pagina-imposicion-outer">
|
||||
<div class="pagina-imposicion-inner">
|
||||
A
|
||||
</div>
|
||||
</div>
|
||||
<div class="pagina-imposicion-outer">
|
||||
<div class="pagina-imposicion-inner">
|
||||
A
|
||||
</div>
|
||||
</div>
|
||||
<div class="pagina-imposicion-outer-end">
|
||||
<div class="pagina-imposicion-inner">
|
||||
A
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="imposicion">
|
||||
<table style="width: 400%;">
|
||||
<tr>
|
||||
<th>Imposicion</th>
|
||||
<td>400x400</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title impresion">IMP. INTERIOR</div>
|
||||
<table>
|
||||
<tr>
|
||||
<td rowspan="3" class="row-logo-impresion"><img src="<?= site_url($linea_impresion->get_impresion_logo()) ?>" width="35px" height="35px"></td>
|
||||
<th>Páginas</th>
|
||||
<th>Ejemplares</th>
|
||||
<th>Tintas</th>
|
||||
<th>Formas</th>
|
||||
<th>Máquina</th>
|
||||
<th>Clics</th>
|
||||
<th>Tiempo</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?= $presupuesto->paginas ?></td>
|
||||
<td><?= $presupuesto->tirada ?></td>
|
||||
<td>??</td>
|
||||
<td><?= json_decode($linea_impresion->formas)->formas ?></td>
|
||||
<td><strong><?= $linea_impresion->maquina()->nombre ?></strong></td>
|
||||
<td><?= $linea_impresion->rotativa_clicks_total ?></td>
|
||||
<td><?= float_seconds_to_hhmm_string($linea_impresion->horas_maquina * 3600) ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><?= $linea_impresion->papel_impresion ?></td>
|
||||
<td><?= $linea_impresion->papel_impresion()->gramaje . " " . "gr" ?></td>
|
||||
<td colspan="2"><?= number_format($linea_impresion->rotativa_metros_total, 2, ',', '.') ?> metros</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<div class="comments">
|
||||
<div class="flex-row impresion">Comentarios impresión interior</div>
|
||||
<div class="comment-content">
|
||||
<p>
|
||||
</p>
|
||||
<br />
|
||||
<p>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title cubierta">IMP. CUBIERTA</div>
|
||||
<table>
|
||||
<tr>
|
||||
<td rowspan="3" class="row-logo-impresion"><img src="<?= site_url($linea_cubierta->get_impresion_logo()) ?>" width="35px" height="35px"></td>
|
||||
<th>Tintas</th>
|
||||
<th>Ejemplares</th>
|
||||
<th>Maquina</th>
|
||||
<th>Marcapaginas</th>
|
||||
<th>Tiempo</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>??</td>
|
||||
<td><?= $presupuesto->tirada ?></td>
|
||||
<td><strong><?= $linea_cubierta->maquina()->nombre ?></strong></td>
|
||||
<td><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td>
|
||||
<td><?= float_seconds_to_hhmm_string($linea_cubierta->horas_maquina * 3600) ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="1"><?= json_decode($linea_cubierta->formas)->maquina_ancho ?>x<?= json_decode($linea_cubierta->formas)->maquina_alto ?></td>
|
||||
<td colspan="1"><?= $papel_formato->ancho ?>x<?= $papel_formato->alto ?></td>
|
||||
<td colspan="2"><?= $linea_cubierta->papel_impresion ?></td>
|
||||
<td colspan="2"><?= $linea_cubierta->papel_impresion()->gramaje . " " . "gr" ?></td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<div class="comments">
|
||||
<div class="flex-row cubierta">Comentarios cubierta</div>
|
||||
<div class="comment-content">
|
||||
<p>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="section-title encuadernacion">ENCUADERNACIÓN</div>
|
||||
<table>
|
||||
<tr>
|
||||
<th class="t-header">Plastificado</th>
|
||||
<td class="t-cell"><?= $acabados[0]->tarifa()->nombre ?></td>
|
||||
<th class="t-header" style="width: 10%;">UVI</th>
|
||||
<td class="t-cell"> ?? </td>
|
||||
</tr>
|
||||
</table>
|
||||
<table>
|
||||
<tr>
|
||||
<th class="t-header">MAQUINA</th>
|
||||
<td class="t-cell"><?= implode("/", array_map(fn($q) => $q->nombre, $acabados[0]->maquinas())) ?> </td>
|
||||
</tr>
|
||||
</table>
|
||||
<table>
|
||||
<tr>
|
||||
<th class="t-header">OPERARIO</th>
|
||||
<td class="t-cell"><?= $ot->users()->plastificado_by->getFullName() ?> </td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php if (count($encuadernaciones) > 0): ?>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Encuadernacion</th>
|
||||
<th>Solapas</th>
|
||||
<th>Sobrecubierta</th>
|
||||
<th>Plegado</th>
|
||||
<th>Guardas</th>
|
||||
<th>Retractilado</th>
|
||||
<th>Marcapáginas</th>
|
||||
</tr>
|
||||
<?php foreach ($encuadernaciones as $key => $value): ?>
|
||||
<tr>
|
||||
<td><?= $value->tarifa()->nombre ?></td>
|
||||
<td><?= $presupuesto->solapas ? "SI" : "NO" ?></td>
|
||||
<td><?= $presupuesto->hasSobrecubierta() ? "SI" : "NO" ?></td>
|
||||
<td> ______ pliegos de ______ </td>
|
||||
<td><?= $presupuesto->guardas ? "SI" : "NO" ?></td>
|
||||
<td><?= $presupuesto->retractilado ? "SI" : "NO" ?></td>
|
||||
<td><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
<div class="comments">
|
||||
<div class="flex-row encuadernacion">Comentarios encuadernacion:</div>
|
||||
<div class="comment-content">
|
||||
<p>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title">LOGISTICA</div>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Peso Unidad</th>
|
||||
<th>Peso Pedido</th>
|
||||
<th>Cajas</th>
|
||||
<th>Corte Pie</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?= number_format($peso_unidad, 2, ',', '.') ?> gr</td>
|
||||
<td><?= $peso_pedido > 1000 ? number_format($peso_pedido / 1000, 2, ',', '.') . " kg" : number_format($peso_pedido, 2, ',', '.') . " gr" ?> </td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="comments">
|
||||
<div class="flex-row">Comentarios logistica:</div>
|
||||
<div class="comment-content">
|
||||
<p>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
© 2024 SAFEKAT. Todos los derechos reservados.
|
||||
</div>
|
||||
<script src=<?= site_url("themes/vuexy/vendor/libs/html2pdf/html2pdf.bundle.min.js") ?>></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/jquery/jquery.js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/popper/popper.js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/js/bootstrap.js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/flatpickr/flatpickr.js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/hammer/hammer.js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/js/menu.js') ?>"></script>
|
||||
<script src="<?= site_url('assets/js/safekat/pages/pdf/otDownload.js') ?>"></script>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@ -1,126 +1,161 @@
|
||||
<?php
|
||||
|
||||
use CodeIgniter\I18n\Time;
|
||||
|
||||
$session = session();
|
||||
$settings = $session->get('settings');
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
<html
|
||||
lang="<?= $session->get('lang') ?>"
|
||||
data-assets-path="<?= site_url('themes/vuexy/') ?>"
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<!-- Icons -->
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/fonts/fontawesome.css') ?>" />
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/fonts/tabler-icons.css') ?>" />
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/fonts/flag-icons.css') ?>" />
|
||||
|
||||
<!-- Core CSS -->
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/css/rtl/core.css') ?>" />
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/css/rtl/theme-semi-dark.css') ?>" />
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/safekat.css') ?>" />
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/css/pages/app-chat.css') ?>">
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/flatpickr/flatpickr.css') ?>" />
|
||||
<link rel="icon" type="image/x-icon" href="<?= site_url('themes/vuexy/img/favicon/favicon.ico') ?>" />
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/pdf.ot.css') ?>">
|
||||
|
||||
<title><?= $presupuesto->titulo ?>[OT:<?= $ot->id ?>]</title>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/pdf.ot.css') ?>">
|
||||
<title>Rotativa</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div>
|
||||
<div class="header">
|
||||
<div class="title"><?= $presupuesto->titulo ?></div>
|
||||
<div><?= Time::now()->format("d/m/Y H:i:s") ?></div>
|
||||
|
||||
<div class="col-md-12" data-id=<?= $ot->id ?>>
|
||||
<div class="row">
|
||||
<div class="col-12 d-flex justify-content-between align-items-center">
|
||||
<h4><?= $presupuesto->titulo ?></h4>
|
||||
<span class="fs-medium"><strong><?= Time::now()->format("d/m/Y H:i:s") ?></strong></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="cover">
|
||||
<div class="portada">
|
||||
<img class="portada-img" src="<?= "data:image/png;base64," . base64_encode(file_get_contents(WRITEPATH . "uploads/" . $ot->portada_path)) ?>">
|
||||
</div>
|
||||
<div class="portada-info">
|
||||
<div class="portada-row">
|
||||
<p class="portada-text pl-2"><strong><?= $dates->fecha_encuadernado_at ? week_day_humanize(Time::createFromFormat("Y-m-d", $dates->fecha_encuadernado_at)->getDayOfWeek(),true) : "" ?></strong></p>
|
||||
<div class="portada-text pr-2"><strong>Comercial:</strong> <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </div>
|
||||
|
||||
</div>
|
||||
<div class="row mb-2 d-flex flex align-items-stretch">
|
||||
<div class="col-2">
|
||||
<img class="portada-img border-secondary img-thumbnail img-fluid" src="<?= $ot->portada_path ? "data:image/png;base64,".base64_encode(file_get_contents(WRITEPATH . "uploads/" . $ot->portada_path)): '/assets/img/portada_not_found.png' ?>" />
|
||||
</div>
|
||||
<div class="col-10 <?= $ot->fecha_entrega_warning ? "bg-danger" : "bg-secondary" ?> py-2 rounded border-1 border-secondary">
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<div class="px-2 d-flex flex justify-content-between align-items-center mb-2 border boder-1 border-dark bg-primary text-white rounded-pill bordered border-secondary">
|
||||
<span><strong><?= $dates->fecha_encuadernado_at ? week_day_humanize(Time::createFromFormat("Y-m-d", $dates->fecha_encuadernado_at)->getDayOfWeek(), true) : "" ?></strong></span>
|
||||
<span><strong>Comercial:</strong> <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </span>
|
||||
</div>
|
||||
<div class="portada-row-2">
|
||||
<div style="display: flex;flex-direction:column;height:100%;width:25%">
|
||||
<p class="portada-text date" id="fecha_encuadernado_at"><?= $dates->fecha_encuadernado_at ? Time::createFromFormat("Y-m-d", $dates->fecha_encuadernado_at)?->format("d/m/Y") : "" ?></p>
|
||||
<!-- <div style="width: 100%;height: 100%;background-color:white;margin-left:0.5rem;margin-bottom:0.5rem">
|
||||
|
||||
</div> -->
|
||||
<div class="pl-2">
|
||||
<table id="table-portada-ubicacion">
|
||||
<tr class="t-row">
|
||||
<th class="t-header">IN</th>
|
||||
<td class="t-cell"><?= $ubicacion ?></td>
|
||||
</tr>
|
||||
<tr class="t-row">
|
||||
<th class="t-header">PO</th>
|
||||
<td class="t-cell"><?= $ubicacion ?></td>
|
||||
</tr>
|
||||
<tr class="t-row">
|
||||
<th class="t-header">PL</th>
|
||||
<td class="t-cell"><?= $ubicacion ?></td>
|
||||
</tr>
|
||||
<tr class="t-row">
|
||||
<th class="t-header">EN</th>
|
||||
<td class="t-cell"><?= $ubicacion ?></td>
|
||||
</tr>
|
||||
<tr class="t-row">
|
||||
<th class="t-header">MA</th>
|
||||
<td class="t-cell"><?= $ubicacion ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex;flex-direction:column;height:100%;width:10%" class="pt-2">
|
||||
<div class="pl-2 pt-2">
|
||||
<table id="table-portada-ubicacion">
|
||||
<tr class="t-row">
|
||||
<th class="t-header" style="font-size: large;">RF</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="square-wrapper">
|
||||
<div class="square bg-white">
|
||||
BCLF 100
|
||||
</div>
|
||||
<div class="square bg-white">
|
||||
0:3
|
||||
</div>
|
||||
<div class="square bg-gray">
|
||||
EM 300
|
||||
</div>
|
||||
<div class="square bg-blue">
|
||||
BRILLO
|
||||
</div>
|
||||
</div>
|
||||
<div class="cod">
|
||||
<div class="code-code">
|
||||
<p style="line-height: 0px;font-size:20px"><?= $ot->id ?></p>
|
||||
</div>
|
||||
<div class="cod-barras"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="px-2 d-flex flex justify-content-center align-items-center mb-2 border boder-1 border-dark bg-success rounded-pill">
|
||||
<span class="text-white"><strong><?= $presupuesto->presupuestoLineaImpresion()->isRotativa() ? "Rotativa" : "Plana" ?></strong></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="flex-row">
|
||||
<div class="flex-col" id="presupuesto-section">
|
||||
<table>
|
||||
<tr>
|
||||
<th>Cliente</th>
|
||||
<td class="t-cell ">
|
||||
<p class="cliente-title"><?= $cliente->nombre ?></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Titulo</th>
|
||||
<td class="t-cell ">
|
||||
<p class="presupuesto-title"><?= $presupuesto->titulo ?></p>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<th>ISBN</th>
|
||||
<td class="t-cell"><?= $presupuesto->isbn ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>CIF</th>
|
||||
<td class="t-cell"><?= $cliente->cif ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="row p-2">
|
||||
<div class="col-4 h-100">
|
||||
<div class="row px-2 d-flex flex justify-content-between align-items-center">
|
||||
<div class="col-6 w-75 border border-1 border-dark text-center <?= $ot->fecha_entrega_warning ? "bg-danger" : "bg-secondary" ?> ">
|
||||
<span class="text-white" id="fecha_encuadernado_at"><strong><?= $dates->fecha_encuadernado_at ? Time::createFromFormat("Y-m-d", $dates->fecha_encuadernado_at)?->format("d/m/Y") : "" ?></strong></span>
|
||||
</div>
|
||||
<div class="col-6 w-25 border border-1 border-dark text-center bg-secondary text-white">
|
||||
<strong>RF</strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row px-2 mt-2 h-100">
|
||||
<table class="h-100">
|
||||
<tr class="t-row">
|
||||
<th class="t-header">IN</th>
|
||||
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
||||
</tr>
|
||||
<tr class="t-row">
|
||||
<th class="t-header">PO</th>
|
||||
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
||||
</tr>
|
||||
<tr class="t-row">
|
||||
<th class="t-header">PL</th>
|
||||
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
||||
</tr>
|
||||
<tr class="t-row">
|
||||
<th class="t-header">EN</th>
|
||||
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
||||
</tr>
|
||||
<tr class="t-row">
|
||||
<th class="t-header">MA</th>
|
||||
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="row h-100">
|
||||
<div class="col-6 h-50 square text-center text-dark bg-secondary border border-right border-dark">
|
||||
BCLF 100
|
||||
</div>
|
||||
<div class="col-6 h-50 square text-center text-dark bg-secondary border border-right border-dark">
|
||||
0:3
|
||||
</div>
|
||||
<div class="col-6 h-50 square bg-primary text-center text-white border border-right border-dark">
|
||||
EM 300
|
||||
</div>
|
||||
<div class="col-6 h-50 square bg-blue text-center text-dark bg-secondary border border-right border-dark">
|
||||
BRILLO
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4 bg-warning border border-dark">
|
||||
<div class="row h-100">
|
||||
<div class="col-12 h-25 d-flex flex align-items-center justify-content-center">
|
||||
<span class="fs-large text-white"><strong><?= $ot->id ?></strong></span>
|
||||
</div>
|
||||
<div class="col-12 h-75 d-flex flex align-items-center justify-content-center bg-white">
|
||||
<img class="img-fluid" src="data:image/png;base64,<?= $ot->bar_code ?>" alt="barcode" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<div class="col-8">
|
||||
<table class="h-100">
|
||||
<tr>
|
||||
<th>Cliente</th>
|
||||
<td class="t-cell ">
|
||||
<?= $cliente->nombre ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Titulo</th>
|
||||
<td class="t-cell ">
|
||||
<?= $presupuesto->titulo ?>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<th>ISBN</th>
|
||||
<td class="t-cell"><?= $presupuesto->isbn ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>CIF</th>
|
||||
<td class="t-cell"><?= $cliente->cif ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="col-12 mb-2">
|
||||
<div class="esquema-imposicion-wrapper">
|
||||
<div class="esquema">
|
||||
<div class="pagina-imposicion-outer-start">
|
||||
@ -144,52 +179,56 @@ use CodeIgniter\I18n\Time;
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="imposicion">
|
||||
<table style="width: 400%;">
|
||||
<tr>
|
||||
<th>Imposicion</th>
|
||||
<td>400x400</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="imposicion">
|
||||
<table>
|
||||
<tr>
|
||||
<th>Imposicion</th>
|
||||
<td>??</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<div class="section-title impresion">IMP. INTERIOR</div>
|
||||
<div class="col-12">
|
||||
<div>
|
||||
<table>
|
||||
<tr>
|
||||
<td rowspan="3" class="row-logo-impresion"><img src="<?= site_url($linea_impresion->get_impresion_logo()) ?>" width="35px" height="35px"></td>
|
||||
<th>Páginas</th>
|
||||
<th>Ejemplares</th>
|
||||
<th>Tintas</th>
|
||||
<th>Formas</th>
|
||||
<th>Máquina</th>
|
||||
<th>Clics</th>
|
||||
<th>Tiempo</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?= $presupuesto->paginas ?></td>
|
||||
<td><?= $presupuesto->tirada ?></td>
|
||||
<td>??</td>
|
||||
<td><?= json_decode($linea_impresion->formas)->formas ?></td>
|
||||
<td><strong><?= $linea_impresion->maquina()->nombre ?></strong></td>
|
||||
<td><?= $linea_impresion->rotativa_clicks_total ?></td>
|
||||
<td><?= float_seconds_to_hhmm_string($linea_impresion->horas_maquina * 3600) ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><?= $linea_impresion->papel_impresion ?></td>
|
||||
<td><?= $linea_impresion->papel_impresion()->gramaje . " " . "gr" ?></td>
|
||||
<td colspan="2"><?= number_format($linea_impresion->rotativa_metros_total, 2, ',', '.') ?> metros</td>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title impresion">IMP. INTERIOR</div>
|
||||
<table>
|
||||
<tr>
|
||||
<td rowspan="3" class="row-logo-impresion"><img src="<?= site_url($linea_impresion->get_impresion_logo()) ?>" width="35px" height="35px"></td>
|
||||
<th>Páginas</th>
|
||||
<th>Ejemplares</th>
|
||||
<th>Tintas</th>
|
||||
<th>Formas</th>
|
||||
<th>Máquina</th>
|
||||
<th>Clics</th>
|
||||
<th>Tiempo</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?= $presupuesto->paginas ?></td>
|
||||
<td><?= $presupuesto->tirada ?></td>
|
||||
<td>??</td>
|
||||
<td><?= json_decode($linea_impresion->formas)->formas ?></td>
|
||||
<td><strong><?= $linea_impresion->maquina()->nombre ?></strong></td>
|
||||
<td><?= $linea_impresion->rotativa_clicks_total ?></td>
|
||||
<td><?= float_seconds_to_hhmm_string($linea_impresion->horas_maquina * 3600) ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4"><?= $linea_impresion->papel_impresion ?></td>
|
||||
<td><?= $linea_impresion->papel_impresion()->gramaje . " " . "gr" ?></td>
|
||||
<td colspan="2">_________ metros</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="comments">
|
||||
<div class="flex-row impresion">Comentarios impresión interior</div>
|
||||
<div class="comment-content">
|
||||
<div class="comment-content w-100">
|
||||
<p>
|
||||
</p>
|
||||
<br />
|
||||
@ -198,9 +237,11 @@ use CodeIgniter\I18n\Time;
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<div class="section-title cubierta">IMP. CUBIERTA</div>
|
||||
<div class="col-12">
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title cubierta">IMP. CUBIERTA</div>
|
||||
<table>
|
||||
<tr>
|
||||
<td rowspan="3" class="row-logo-impresion"><img src="<?= site_url($linea_cubierta->get_impresion_logo()) ?>" width="35px" height="35px"></td>
|
||||
@ -233,51 +274,53 @@ use CodeIgniter\I18n\Time;
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="section-title encuadernacion">ENCUADERNACIÓN</div>
|
||||
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<div class="section-title encuadernacion">ENCUADERNACIÓN</div>
|
||||
<div class="col-12">
|
||||
<table>
|
||||
<tr>
|
||||
<th class="t-header">Plastificado</th>
|
||||
<th class="t-header" style="width: 10%;">Plastificado</th>
|
||||
<td class="t-cell"><?= $acabados[0]->tarifa()->nombre ?></td>
|
||||
<th class="t-header" style="width: 10%;">UVI</th>
|
||||
<td class="t-cell"> ?? </td>
|
||||
<th class="t-header" style="width: 10%;">Máquina</th>
|
||||
<td class="t-cell"><?= implode("/", array_map(fn($q) => $q->nombre, $acabados[0]->maquinas())) ?> </td>
|
||||
<th class="t-header" style="width: 10%;">Operario</th>
|
||||
<td class="t-cell"><?= $ot->users()->plastificado_by?->getFullName() ?? null ?> </td>
|
||||
</tr>
|
||||
</table>
|
||||
<table>
|
||||
<tr>
|
||||
<th class="t-header">MAQUINA</th>
|
||||
<td class="t-cell"> ?? </td>
|
||||
<th>Encuadernacion</th>
|
||||
<th>Solapas</th>
|
||||
<th>Sobrecubierta</th>
|
||||
<th>Plegado</th>
|
||||
<th>Guardas</th>
|
||||
<th>Retractilado</th>
|
||||
<th>Marcapáginas</th>
|
||||
</tr>
|
||||
</table>
|
||||
<table>
|
||||
<tr>
|
||||
<th class="t-header">OPERARIO</th>
|
||||
<td class="t-cell"> ?? </td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php if (count($encuadernaciones) > 0): ?>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Encuadernacion</th>
|
||||
<th>Solapas</th>
|
||||
<th>Sobrecubierta</th>
|
||||
<th>Plegado</th>
|
||||
<th>Guardas</th>
|
||||
<th>Retractilado</th>
|
||||
<th>Marcapáginas</th>
|
||||
</tr>
|
||||
<?php if (count($encuadernaciones) > 0): ?>
|
||||
<?php foreach ($encuadernaciones as $key => $value): ?>
|
||||
<tr>
|
||||
<td><?= $value->tarifa()->nombre ?></td>
|
||||
<td><?= $presupuesto->solapas ? "SI" : "NO" ?></td>
|
||||
<td><?= $presupuesto->hasSobrecubierta() ? "SI" : "NO" ?></td>
|
||||
<td> ______ pliegos de ______ </td>
|
||||
<td> <?= $linea_impresion->pliegos_libro?>/<?=$linea_impresion->pliegos_pedido?> </td>
|
||||
<td><?= $presupuesto->guardas ? "SI" : "NO" ?></td>
|
||||
<td><?= $presupuesto->retractilado ? "SI" : "NO" ?></td>
|
||||
<td><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
<?php else: ?>
|
||||
<tr>
|
||||
<td colspan="7">Sin encuadernación</td>
|
||||
</tr>
|
||||
<?php endif; ?>
|
||||
</table>
|
||||
<?php if (count($encuadernaciones) > 0): ?>
|
||||
|
||||
<div class="comments">
|
||||
<div class="flex-row encuadernacion">Comentarios encuadernacion:</div>
|
||||
<div class="comment-content">
|
||||
@ -286,10 +329,13 @@ use CodeIgniter\I18n\Time;
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="section-title">LOGISTICA</div>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<div class="section-title">LOGISTICA</div>
|
||||
<div class="col-12">
|
||||
<table>
|
||||
<tr>
|
||||
<th>Peso Unidad</th>
|
||||
@ -298,8 +344,8 @@ use CodeIgniter\I18n\Time;
|
||||
<th>Corte Pie</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?= $peso_unidad ?>gr</td>
|
||||
<td><?= $peso_pedido ?>gr</td>
|
||||
<td><?= number_format($peso_unidad, 2, ',', '.') ?> gr</td>
|
||||
<td><?= $peso_pedido > 1000 ? number_format($peso_pedido / 1000, 2, ',', '.') . " kg" : number_format($peso_pedido, 2, ',', '.') . " gr" ?> </td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
@ -312,11 +358,21 @@ use CodeIgniter\I18n\Time;
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
© 2024 SAFEKAT. Todos los derechos reservados.
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-12 d-flex justify-content-center align-items-center">
|
||||
<span>© 2024 SAFEKAT. Todos los derechos reservados.</span>
|
||||
</div>
|
||||
<script src=<?= site_url("themes/vuexy/vendor/libs/html2pdf/html2pdf.bundle.min.js") ?>></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/jquery/jquery.js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/popper/popper.js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/js/bootstrap.js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/flatpickr/flatpickr.js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/hammer/hammer.js') ?>"></script>
|
||||
<script src="<?= site_url('themes/vuexy/vendor/js/menu.js') ?>"></script>
|
||||
<script src="<?= site_url('assets/js/safekat/pages/pdf/otDownload.js') ?>"></script>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@ -17,7 +17,8 @@
|
||||
"firebase/php-jwt": "^6.10",
|
||||
"hermawan/codeigniter4-datatables": "^0.7.2",
|
||||
"nicolab/php-ftp-client": "^2.0",
|
||||
"phpseclib/phpseclib": "~3.0"
|
||||
"phpseclib/phpseclib": "~3.0",
|
||||
"picqer/php-barcode-generator": "^3.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"fakerphp/faker": "^1.9",
|
||||
|
||||
87
ci4/composer.lock
generated
87
ci4/composer.lock
generated
@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "939889ce4de6a8168b475984ff4401bd",
|
||||
"content-hash": "e811712016c9f7c27fff6e0007f6bc44",
|
||||
"packages": [
|
||||
{
|
||||
"name": "codeigniter4/framework",
|
||||
@ -937,6 +937,87 @@
|
||||
],
|
||||
"time": "2024-09-16T03:06:04+00:00"
|
||||
},
|
||||
{
|
||||
"name": "picqer/php-barcode-generator",
|
||||
"version": "v3.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/picqer/php-barcode-generator.git",
|
||||
"reference": "3ef0b26ebd3996e8bb9e90fa2059a67d2e482b3e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/picqer/php-barcode-generator/zipball/3ef0b26ebd3996e8bb9e90fa2059a67d2e482b3e",
|
||||
"reference": "3ef0b26ebd3996e8bb9e90fa2059a67d2e482b3e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-mbstring": "*",
|
||||
"php": "^8.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^1.10",
|
||||
"phpunit/phpunit": "^9.5"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-bcmath": "Barcode IMB (Intelligent Mail Barcode) needs bcmath extension",
|
||||
"ext-gd": "For JPG and PNG generators, GD or Imagick is required",
|
||||
"ext-imagick": "For JPG and PNG generators, GD or Imagick is required"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Picqer\\Barcode\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"LGPL-3.0-or-later"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Casper Bakker",
|
||||
"email": "info@picqer.com",
|
||||
"homepage": "https://picqer.com"
|
||||
},
|
||||
{
|
||||
"name": "Nicola Asuni",
|
||||
"email": "info@tecnick.com",
|
||||
"homepage": "http://nicolaasuni.tecnick.com"
|
||||
}
|
||||
],
|
||||
"description": "An easy to use, non-bloated, barcode generator in PHP. Creates SVG, PNG, JPG and HTML images from the most used 1D barcode standards.",
|
||||
"homepage": "https://github.com/picqer/php-barcode-generator",
|
||||
"keywords": [
|
||||
"CODABAR",
|
||||
"Code11",
|
||||
"Code93",
|
||||
"EAN13",
|
||||
"KIX",
|
||||
"KIXCODE",
|
||||
"MSI",
|
||||
"POSTNET",
|
||||
"Pharma",
|
||||
"Standard 2 of 5",
|
||||
"barcode",
|
||||
"barcode generator",
|
||||
"code128",
|
||||
"code39",
|
||||
"ean",
|
||||
"html",
|
||||
"jpeg",
|
||||
"jpg",
|
||||
"php",
|
||||
"png",
|
||||
"svg",
|
||||
"upc"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/picqer/php-barcode-generator/issues",
|
||||
"source": "https://github.com/picqer/php-barcode-generator/tree/v3.2.0"
|
||||
},
|
||||
"time": "2024-10-01T19:35:25+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/log",
|
||||
"version": "3.0.2",
|
||||
@ -3033,12 +3114,12 @@
|
||||
],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": [],
|
||||
"stability-flags": {},
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
"php": "^8.2"
|
||||
},
|
||||
"platform-dev": [],
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user