mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Merge branch 'main' into 'feat/catalogo'
Main See merge request jjimenez/safekat!707
This commit is contained in:
68
ci4/app/Config/OrdenTrabajo.php
Normal file
68
ci4/app/Config/OrdenTrabajo.php
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Config;
|
||||||
|
|
||||||
|
use CodeIgniter\Config\BaseConfig;
|
||||||
|
|
||||||
|
class OrdenTrabajo extends BaseConfig
|
||||||
|
{
|
||||||
|
|
||||||
|
public array $DATE_USER_MAPPING = [
|
||||||
|
//IMPRESION
|
||||||
|
"interior_bn_at" => "interior_bn_user_id",
|
||||||
|
"interior_color_at" => "interior_color_user_id",
|
||||||
|
"cubierta_at" => "cubierta_user_id",
|
||||||
|
//ACABADO
|
||||||
|
"plastificado_at" => "plastificado_user_id",
|
||||||
|
"encuadernacion_at" => "encuadernacion_user_id",
|
||||||
|
"corte_at" => "corte_user_id",
|
||||||
|
"preparacion_interiores_at" => "preparacion_interior_user_id",
|
||||||
|
"entrada_manipulado_at" => "entrada_manipulado_user_id",
|
||||||
|
"cosido_at" => "cosido_user_id",
|
||||||
|
"grapado_at" => "grapado_user_id",
|
||||||
|
"solapa_at" => "solapa_user_id",
|
||||||
|
"retractilado_at" => "retractilado_user_id",
|
||||||
|
"retractilado5_at" => "retractilado5_user_id",
|
||||||
|
"prototipo_at" => "prototipo_user_id",
|
||||||
|
"marcapaginas_at" => "marcapaginas_user_id",
|
||||||
|
//FERRO
|
||||||
|
"pendiente_ferro_at" => "pendiente_ferro_user_id",
|
||||||
|
"ferro_en_cliente_at" => "ferro_en_cliente_user_id",
|
||||||
|
"ferro_ok_at" => "ferro_ok_user_id",
|
||||||
|
//ENVIO
|
||||||
|
"embalaje_at" => "embalaje_user_id",
|
||||||
|
"envio_at" => "envio_user_id",
|
||||||
|
//PREIMPRESION
|
||||||
|
"pre_formato_at" => "pre_formato_user_id",
|
||||||
|
"pre_lomo_at" => "pre_lomo_user_id",
|
||||||
|
"pre_solapa_at" => "pre_solapa_user_id",
|
||||||
|
"pre_codbarras_at" => "pre_codbarras_user_id",
|
||||||
|
"pre_imposicion_at" => "pre_imposicion_user_id",
|
||||||
|
|
||||||
|
];
|
||||||
|
public array $DATE_USER_MAPPING_PEDIDO = [
|
||||||
|
"inaplazable" => "inaplazable_change_user_id",
|
||||||
|
"fecha_entrega_real" => "fecha_entrega_real_change_user_id",
|
||||||
|
"fecha_impresion" => "fecha_impresion_change_user_id",
|
||||||
|
"fecha_encuadernado" => "fecha_encuadernado_change_user_id",
|
||||||
|
"fecha_entrega_externo" => "fecha_entrega_externo_change_user_id",
|
||||||
|
];
|
||||||
|
public array $OT_COLORS = [
|
||||||
|
"sin_imprimir" => "#FF6363",
|
||||||
|
"impreso_int" => "#AFDDFF",
|
||||||
|
"impreso_cub" => "#3A59D1",
|
||||||
|
"plastificado" => "#FFD63A",
|
||||||
|
"preparado" => "#FF0B55",
|
||||||
|
"solapa" => "#4F1C51",
|
||||||
|
"cosido" => "#FF0B55",
|
||||||
|
"grapado" => "#FEBA17",
|
||||||
|
"encuadernado" => "#FEBA17",
|
||||||
|
"corte" => "#67AE6E"
|
||||||
|
];
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -153,6 +153,8 @@ $routes->group('imposiciones', ['namespace' => 'App\Controllers\Configuracion'],
|
|||||||
$routes->post('datatable', 'Imposiciones::datatable', ['as' => 'dataTableOfImposiciones']);
|
$routes->post('datatable', 'Imposiciones::datatable', ['as' => 'dataTableOfImposiciones']);
|
||||||
$routes->post('allmenuitems', 'Imposiciones::allItemsSelect', ['as' => 'select2ItemsOfImposiciones']);
|
$routes->post('allmenuitems', 'Imposiciones::allItemsSelect', ['as' => 'select2ItemsOfImposiciones']);
|
||||||
$routes->post('menuitems', 'Imposiciones::menuItems', ['as' => 'menuItemsOfImposiciones']);
|
$routes->post('menuitems', 'Imposiciones::menuItems', ['as' => 'menuItemsOfImposiciones']);
|
||||||
|
$routes->get('select', 'Imposiciones::selectImposicion', ['as' => 'selectImposicion']);
|
||||||
|
|
||||||
});
|
});
|
||||||
$routes->resource('imposiciones', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Imposiciones', 'except' => 'show,new,create,update']);
|
$routes->resource('imposiciones', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Imposiciones', 'except' => 'show,new,create,update']);
|
||||||
|
|
||||||
@ -645,6 +647,8 @@ $routes->group('chat', ['namespace' => 'App\Controllers\Chat'], function ($route
|
|||||||
$routes->get('direct/client/users/select/presupuesto/(:num)', 'ChatController::get_presupuesto_client_users/$1/$2', ['as' => 'getPresupuestoClientUsers']);
|
$routes->get('direct/client/users/select/presupuesto/(:num)', 'ChatController::get_presupuesto_client_users/$1/$2', ['as' => 'getPresupuestoClientUsers']);
|
||||||
$routes->get('direct/client/users/select/pedido/(:num)', 'ChatController::get_pedido_client_users/$1/$2', ['as' => 'getPedidoClientUsers']);
|
$routes->get('direct/client/users/select/pedido/(:num)', 'ChatController::get_pedido_client_users/$1/$2', ['as' => 'getPedidoClientUsers']);
|
||||||
$routes->get('direct/client/users/select/factura/(:num)', 'ChatController::get_factura_client_users/$1/$2', ['as' => 'getFacturaClientUsers']);
|
$routes->get('direct/client/users/select/factura/(:num)', 'ChatController::get_factura_client_users/$1/$2', ['as' => 'getFacturaClientUsers']);
|
||||||
|
$routes->get('direct/client/users/select/ot/(:num)', 'ChatController::get_orden_trabajo_client_users/$1/$2', ['as' => 'getOrdenTrabajoClientUsers']);
|
||||||
|
|
||||||
|
|
||||||
$routes->get('direct/users/(:num)', 'ChatController::get_chat_direct_users', ['as' => 'getChatDirectUsers']);
|
$routes->get('direct/users/(:num)', 'ChatController::get_chat_direct_users', ['as' => 'getChatDirectUsers']);
|
||||||
$routes->post('direct/users/(:num)', 'ChatController::store_chat_direct_users/$1', ['as' => 'storeChatDirectUsers']);
|
$routes->post('direct/users/(:num)', 'ChatController::store_chat_direct_users/$1', ['as' => 'storeChatDirectUsers']);
|
||||||
@ -661,7 +665,10 @@ $routes->group('chat', ['namespace' => 'App\Controllers\Chat'], function ($route
|
|||||||
$routes->get('department/presupuesto/(:num)/(:num)', 'ChatController::get_chat_presupuesto/$1/$2', ['as' => 'getChatPresupuesto']);
|
$routes->get('department/presupuesto/(:num)/(:num)', 'ChatController::get_chat_presupuesto/$1/$2', ['as' => 'getChatPresupuesto']);
|
||||||
$routes->get('department/pedido/(:num)/(:num)', 'ChatController::get_chat_pedido/$1/$2', ['as' => 'getChatPedido']);
|
$routes->get('department/pedido/(:num)/(:num)', 'ChatController::get_chat_pedido/$1/$2', ['as' => 'getChatPedido']);
|
||||||
$routes->get('department/factura/(:num)/(:num)', 'ChatController::get_chat_factura/$1/$2', ['as' => 'getChatFactura']);
|
$routes->get('department/factura/(:num)/(:num)', 'ChatController::get_chat_factura/$1/$2', ['as' => 'getChatFactura']);
|
||||||
|
$routes->get('department/ot/(:num)/(:num)', 'ChatController::get_chat_orden_trabajo/$1/$2', ['as' => 'getChatOrdenTrabajo']);
|
||||||
$routes->get('department/users/presupuesto/(:num)/(:num)', 'ChatController::get_chat_department_presupuesto_users/$1/$2', ['as' => 'getPresupuestoChatDepartmentUsers']);
|
$routes->get('department/users/presupuesto/(:num)/(:num)', 'ChatController::get_chat_department_presupuesto_users/$1/$2', ['as' => 'getPresupuestoChatDepartmentUsers']);
|
||||||
|
$routes->get('department/users/ot/(:num)/(:num)', 'ChatController::get_chat_department_orden_trabajo_users/$1/$2', ['as' => 'getOrdenTrabajoChatDepartmentUsers']);
|
||||||
|
|
||||||
$routes->get('department/datatable', 'ChatController::chat_department_datatable', ['as' => 'chatDepartmentDatatable']);
|
$routes->get('department/datatable', 'ChatController::chat_department_datatable', ['as' => 'chatDepartmentDatatable']);
|
||||||
$routes->get('department/edit/(:num)', 'ChatController::chat_department_edit/$1', ['as' => 'chatDepartmentEditView']);
|
$routes->get('department/edit/(:num)', 'ChatController::chat_department_edit/$1', ['as' => 'chatDepartmentEditView']);
|
||||||
$routes->get('department/users/datatable/(:num)', 'ChatController::chat_department_user_datatable/$1', ['as' => 'chatDepartmentUsersDatatable']);
|
$routes->get('department/users/datatable/(:num)', 'ChatController::chat_department_user_datatable/$1', ['as' => 'chatDepartmentUsersDatatable']);
|
||||||
@ -733,10 +740,13 @@ $routes->group('produccion', ['namespace' => 'App\Controllers\Produccion'], func
|
|||||||
*========================**/
|
*========================**/
|
||||||
$routes->post("update/tarea", 'Ordentrabajo::update_orden_trabajo_tarea');
|
$routes->post("update/tarea", 'Ordentrabajo::update_orden_trabajo_tarea');
|
||||||
$routes->post("update/date", 'Ordentrabajo::update_orden_trabajo_date');
|
$routes->post("update/date", 'Ordentrabajo::update_orden_trabajo_date');
|
||||||
|
$routes->post("update/pedido/date", 'Ordentrabajo::update_orden_trabajo_pedido_date');
|
||||||
|
$routes->post("update/pedido", 'Ordentrabajo::update_orden_trabajo_pedido');
|
||||||
$routes->post("update/user", 'Ordentrabajo::update_orden_trabajo_user');
|
$routes->post("update/user", 'Ordentrabajo::update_orden_trabajo_user');
|
||||||
$routes->post("update", 'Ordentrabajo::update_orden_trabajo');
|
$routes->post("update", 'Ordentrabajo::update_orden_trabajo');
|
||||||
$routes->post("upload/portada", 'Ordentrabajo::upload_orden_trabajo_portada');
|
$routes->post("upload/portada", 'Ordentrabajo::upload_orden_trabajo_portada');
|
||||||
$routes->delete("portada/(:num)", 'Ordentrabajo::delete_orden_trabajo_portada/$1');
|
$routes->delete("portada/(:num)", 'Ordentrabajo::delete_orden_trabajo_portada/$1');
|
||||||
|
$routes->get("color/(:num)", 'Ordentrabajo::get_orden_trabajo_color_status/$1');
|
||||||
|
|
||||||
/**======================
|
/**======================
|
||||||
* FILES
|
* FILES
|
||||||
|
|||||||
@ -11,6 +11,7 @@ use App\Models\ChatNotification;
|
|||||||
use App\Models\ChatUser;
|
use App\Models\ChatUser;
|
||||||
use App\Models\Clientes\ClienteModel;
|
use App\Models\Clientes\ClienteModel;
|
||||||
use App\Models\Facturas\FacturaModel;
|
use App\Models\Facturas\FacturaModel;
|
||||||
|
use App\Models\OrdenTrabajo\OrdenTrabajoModel;
|
||||||
use App\Models\Pedidos\PedidoModel;
|
use App\Models\Pedidos\PedidoModel;
|
||||||
use App\Models\Presupuestos\PresupuestoModel;
|
use App\Models\Presupuestos\PresupuestoModel;
|
||||||
use App\Models\Usuarios\UserModel;
|
use App\Models\Usuarios\UserModel;
|
||||||
@ -132,6 +133,25 @@ class ChatController extends BaseController
|
|||||||
$data["chat"] = $chat;
|
$data["chat"] = $chat;
|
||||||
return $this->response->setJSON($data);
|
return $this->response->setJSON($data);
|
||||||
}
|
}
|
||||||
|
public function get_chat_orden_trabajo(int $chat_department_id, int $orden_trabajo_id)
|
||||||
|
{
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
"department" => $this->chatDeparmentModel->find($chat_department_id),
|
||||||
|
"chat" => null,
|
||||||
|
"messages" => null,
|
||||||
|
"count" => 0,
|
||||||
|
];
|
||||||
|
$chat = $this->chatModel->getChatOrdenTrabajo($chat_department_id, $orden_trabajo_id);
|
||||||
|
if ($chat) {
|
||||||
|
$data["messages"] = $this->chatMessageModel->get_chat_messages($chat->id);
|
||||||
|
$this->chatMessageModel->set_chat_department_messages_as_read($chat->id);
|
||||||
|
$this->chatModel->setAsViewedChatUserNotifications($chat->id, auth()->user()->id);
|
||||||
|
$data["count"] = count($data["messages"]);
|
||||||
|
}
|
||||||
|
$data["chat"] = $chat;
|
||||||
|
return $this->response->setJSON($data);
|
||||||
|
}
|
||||||
public function get_chat_direct_view($chat_id)
|
public function get_chat_direct_view($chat_id)
|
||||||
{
|
{
|
||||||
$chat = $this->chatModel->find($chat_id);
|
$chat = $this->chatModel->find($chat_id);
|
||||||
@ -295,6 +315,11 @@ class ChatController extends BaseController
|
|||||||
$data = $this->chatDeparmentModel->find($chat_department_id)->withUsers($factura_id, 'factura');
|
$data = $this->chatDeparmentModel->find($chat_department_id)->withUsers($factura_id, 'factura');
|
||||||
return $this->response->setJSON($data);
|
return $this->response->setJSON($data);
|
||||||
}
|
}
|
||||||
|
public function get_chat_department_orden_trabajo_users(int $chat_department_id, $orden_trabajo_id)
|
||||||
|
{
|
||||||
|
$data = $this->chatDeparmentModel->find($chat_department_id)->withUsers($orden_trabajo_id, 'ot');
|
||||||
|
return $this->response->setJSON($data);
|
||||||
|
}
|
||||||
public function get_chat_users_internal()
|
public function get_chat_users_internal()
|
||||||
{
|
{
|
||||||
$query = $this->userModel->builder()->select(
|
$query = $this->userModel->builder()->select(
|
||||||
@ -357,6 +382,15 @@ class ChatController extends BaseController
|
|||||||
$clienteContactos = $cm->querySelectClienteContacto($f->cliente_id,$this->request->getGet('q'));
|
$clienteContactos = $cm->querySelectClienteContacto($f->cliente_id,$this->request->getGet('q'));
|
||||||
return $this->response->setJSON($clienteContactos);
|
return $this->response->setJSON($clienteContactos);
|
||||||
}
|
}
|
||||||
|
public function get_orden_trabajo_client_users(int $orden_trabajo_id)
|
||||||
|
{
|
||||||
|
$otm = model(OrdenTrabajoModel::class);
|
||||||
|
$ot = $otm->find($orden_trabajo_id);
|
||||||
|
$cm = model(ClienteModel::class);
|
||||||
|
$cliente = $ot->pedido()->cliente();
|
||||||
|
$clienteContactos = $cm->querySelectClienteContacto($cliente->id,$this->request->getGet('q'));
|
||||||
|
return $this->response->setJSON($clienteContactos);
|
||||||
|
}
|
||||||
public function store_hebra(string $model)
|
public function store_hebra(string $model)
|
||||||
{
|
{
|
||||||
$auth_user = auth()->user();
|
$auth_user = auth()->user();
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
<?php namespace App\Controllers\Configuracion;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Controllers\Configuracion;
|
||||||
|
|
||||||
|
|
||||||
use App\Controllers\BaseResourceController;
|
use App\Controllers\BaseResourceController;
|
||||||
@ -279,6 +281,9 @@ class Imposiciones extends \App\Controllers\BaseResourceController
|
|||||||
];
|
];
|
||||||
return $orientacionOptions;
|
return $orientacionOptions;
|
||||||
}
|
}
|
||||||
|
public function selectImposicion()
|
||||||
|
{
|
||||||
|
$data = $this->model->querySelect($this->request->getGet('q'));
|
||||||
|
return $this->response->setJSON($data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1595,7 +1595,7 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
|
|||||||
$presupuestoServiciosExtraModel = model('App\Models\Presupuestos\PresupuestoServiciosExtraModel');
|
$presupuestoServiciosExtraModel = model('App\Models\Presupuestos\PresupuestoServiciosExtraModel');
|
||||||
foreach ($presupuestoServiciosExtraModel->where('presupuesto_id', $presupuesto->id)->findAll() as $servicioExtra) {
|
foreach ($presupuestoServiciosExtraModel->where('presupuesto_id', $presupuesto->id)->findAll() as $servicioExtra) {
|
||||||
$servicioExtra->presupuesto_id = $new_id;
|
$servicioExtra->presupuesto_id = $new_id;
|
||||||
$presupuestoServiciosExtraModel->insert($preimpresion);
|
$presupuestoServiciosExtraModel->insert($servicioExtra);
|
||||||
}
|
}
|
||||||
|
|
||||||
$presupuestoDireccionesModel = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
|
$presupuestoDireccionesModel = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
|
||||||
|
|||||||
@ -118,7 +118,26 @@ class Ordentrabajo extends BaseController
|
|||||||
return $this->response->setJSON(["errors" => $this->validation->getErrors()])->setStatusCode(400);
|
return $this->response->setJSON(["errors" => $this->validation->getErrors()])->setStatusCode(400);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public function update_orden_trabajo_pedido_date()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$bodyData = $this->request->getPost();
|
||||||
|
$r = $this->produccionService->init($bodyData["orden_trabajo_id"])->updateOrdenTrabajoPedidoDate($bodyData);
|
||||||
|
return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "status" => $r["status"], "user" => $r["user"], "data" => $bodyData]);
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
return $this->response->setJSON(["errors" => $th->getMessage(), "status" => false])->setStatusCode(500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public function update_orden_trabajo_pedido()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$bodyData = $this->request->getPost();
|
||||||
|
$r = $this->produccionService->init($bodyData["orden_trabajo_id"])->updateOrdenTrabajoPedido($bodyData);
|
||||||
|
return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "status" => $r, "data" => $bodyData]);
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
return $this->response->setJSON(["errors" => $th->getMessage(), "status" => false])->setStatusCode(500);
|
||||||
|
}
|
||||||
|
}
|
||||||
public function edit($orden_trabajo_id)
|
public function edit($orden_trabajo_id)
|
||||||
{
|
{
|
||||||
// Breadcrumbs
|
// Breadcrumbs
|
||||||
@ -128,9 +147,14 @@ class Ordentrabajo extends BaseController
|
|||||||
];
|
];
|
||||||
$this->viewData["modelId"] = $orden_trabajo_id;
|
$this->viewData["modelId"] = $orden_trabajo_id;
|
||||||
$this->produccionService->init($orden_trabajo_id);
|
$this->produccionService->init($orden_trabajo_id);
|
||||||
|
$this->produccionService->reInsertOrdenTrabajoDates();
|
||||||
|
$this->produccionService->reInsertOrdenTrabajoUsers();
|
||||||
$this->viewData["presupuesto"] = $this->produccionService->getPresupuesto();
|
$this->viewData["presupuesto"] = $this->produccionService->getPresupuesto();
|
||||||
$this->viewData["cliente"] = $this->produccionService->getCliente();
|
$this->viewData["cliente"] = $this->produccionService->getCliente();
|
||||||
$this->viewData["ot"] = $this->produccionService->getOrdenTrabajo();
|
$this->viewData["ot"] = $this->produccionService->getOrdenTrabajo();
|
||||||
|
$this->viewData["user_dates"] = $this->produccionService->userDates();
|
||||||
|
$this->viewData["pedido_user_dates"] = $this->produccionService->pedidoUserDates();
|
||||||
|
|
||||||
return view(static::$viewPath . $this->editRoute, $this->viewData);
|
return view(static::$viewPath . $this->editRoute, $this->viewData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,7 +165,7 @@ class Ordentrabajo extends BaseController
|
|||||||
$q = $this->otModel->getDatatableQuery()->where("ordenes_trabajo.estado", "F");
|
$q = $this->otModel->getDatatableQuery()->where("ordenes_trabajo.estado", "F");
|
||||||
// return $this->response->setJSON($q->get()->getResultArray());
|
// return $this->response->setJSON($q->get()->getResultArray());
|
||||||
return DataTable::of($q)
|
return DataTable::of($q)
|
||||||
->add("logo", fn($q) => site_url($logo->get_logo_path($q->presupuesto_linea_tipo)))
|
->add("logo", fn($q) => ["logo" => site_url($logo->get_logo_path($q->presupuesto_linea_tipo)), "imposicion" => $q->imposicion_name,"color" => $this->produccionService->init($q->id)->getOtColorStatus()])
|
||||||
->edit(
|
->edit(
|
||||||
"fecha_encuadernado_at",
|
"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") : ""
|
||||||
@ -156,7 +180,7 @@ class Ordentrabajo extends BaseController
|
|||||||
$q = $this->otModel->getDatatableQuery()->whereIn("ordenes_trabajo.estado", ["I", "PM"]);
|
$q = $this->otModel->getDatatableQuery()->whereIn("ordenes_trabajo.estado", ["I", "PM"]);
|
||||||
// return $this->response->setJSON($q->get()->getResultArray());
|
// return $this->response->setJSON($q->get()->getResultArray());
|
||||||
return DataTable::of($q)
|
return DataTable::of($q)
|
||||||
->add("logo", fn($q) => site_url($logo->get_logo_path($q->presupuesto_linea_tipo)))
|
->add("logo", fn($q) => ["logo" => site_url($logo->get_logo_path($q->presupuesto_linea_tipo)), "imposicion" => $q->imposicion_name,"color" => $this->produccionService->init($q->id)->getOtColorStatus()])
|
||||||
->edit(
|
->edit(
|
||||||
"fecha_encuadernado_at",
|
"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") : ""
|
||||||
@ -171,7 +195,7 @@ class Ordentrabajo extends BaseController
|
|||||||
$q = $this->otModel->getDatatableQuery()->where("ferro_ok_at", null);
|
$q = $this->otModel->getDatatableQuery()->where("ferro_ok_at", null);
|
||||||
// return $this->response->setJSON($q->get()->getResultArray());
|
// return $this->response->setJSON($q->get()->getResultArray());
|
||||||
return DataTable::of($q)
|
return DataTable::of($q)
|
||||||
->add("logo", fn($q) => site_url($logo->get_logo_path($q->presupuesto_linea_tipo)))
|
->add("logo", fn($q) => ["logo" => site_url($logo->get_logo_path($q->presupuesto_linea_tipo)), "imposicion" => $q->imposicion_name,"color" => $this->produccionService->init($q->id)->getOtColorStatus()])
|
||||||
->edit(
|
->edit(
|
||||||
"fecha_encuadernado_at",
|
"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") : ""
|
||||||
@ -186,7 +210,7 @@ class Ordentrabajo extends BaseController
|
|||||||
$q = $this->otModel->getDatatableQuery()->where("ferro_ok_at is NOT NULL", NULL, FALSE);
|
$q = $this->otModel->getDatatableQuery()->where("ferro_ok_at is NOT NULL", NULL, FALSE);
|
||||||
// return $this->response->setJSON($q->get()->getResultArray());
|
// return $this->response->setJSON($q->get()->getResultArray());
|
||||||
return DataTable::of($q)
|
return DataTable::of($q)
|
||||||
->add("logo", fn($q) => site_url($logo->get_logo_path($q->presupuesto_linea_tipo)))
|
->add("logo", fn($q) => ["logo" => site_url($logo->get_logo_path($q->presupuesto_linea_tipo)), "imposicion" => $q->imposicion_name,"color" => $this->produccionService->init($q->id)->getOtColorStatus()])
|
||||||
->edit(
|
->edit(
|
||||||
"fecha_encuadernado_at",
|
"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") : ""
|
||||||
@ -232,6 +256,7 @@ class Ordentrabajo extends BaseController
|
|||||||
->edit("tiempo_estimado", fn($q) => float_seconds_to_hhmm_string($q->tiempo_estimado))
|
->edit("tiempo_estimado", fn($q) => float_seconds_to_hhmm_string($q->tiempo_estimado))
|
||||||
->edit("tiempo_real", fn($q) => float_seconds_to_hhmm_string($q->tiempo_real))
|
->edit("tiempo_real", fn($q) => float_seconds_to_hhmm_string($q->tiempo_real))
|
||||||
->edit("maquina_tarea", fn($q) => ["id" => $q->id, "maquina_id" => $q->maquina_tarea, "maquina_name" => $q->maquina_nombre])
|
->edit("maquina_tarea", fn($q) => ["id" => $q->id, "maquina_id" => $q->maquina_tarea, "maquina_name" => $q->maquina_nombre])
|
||||||
|
->add("imposicion", fn($q) => ["id" => $q->id, "imposicion_id" => $q->imposicion_id, "name" => $q->imposicion_name, "is_presupuesto_linea" => $q->presupuesto_linea_id ? true : false])
|
||||||
->toJson(true);
|
->toJson(true);
|
||||||
}
|
}
|
||||||
public function get_pdf($orden_trabajo_id)
|
public function get_pdf($orden_trabajo_id)
|
||||||
@ -241,7 +266,6 @@ class Ordentrabajo extends BaseController
|
|||||||
public function upload_orden_trabajo_portada()
|
public function upload_orden_trabajo_portada()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
//code...
|
|
||||||
$file = $this->request->getFile("portada_file");
|
$file = $this->request->getFile("portada_file");
|
||||||
$bodyData = $this->request->getPost();
|
$bodyData = $this->request->getPost();
|
||||||
$id = $bodyData["orden_trabajo_id"];
|
$id = $bodyData["orden_trabajo_id"];
|
||||||
@ -249,6 +273,12 @@ class Ordentrabajo extends BaseController
|
|||||||
$fullpath = null;
|
$fullpath = null;
|
||||||
if ($file->isValid() && !$file->hasMoved()) {
|
if ($file->isValid() && !$file->hasMoved()) {
|
||||||
$fullpath = $file->store('ordenes_trabajo_portadas');
|
$fullpath = $file->store('ordenes_trabajo_portadas');
|
||||||
|
$otEntity = $this->otModel->find($id);
|
||||||
|
if ($otEntity->portada_path) {
|
||||||
|
if (file_exists($otEntity->full_path)) {
|
||||||
|
unlink($otEntity->full_path);
|
||||||
|
}
|
||||||
|
}
|
||||||
$r = $this->otModel->update($id, ["portada_path" => $fullpath]);
|
$r = $this->otModel->update($id, ["portada_path" => $fullpath]);
|
||||||
}
|
}
|
||||||
return $this->response->setJSON(["message" => "Portada subida", "data" => $r]);
|
return $this->response->setJSON(["message" => "Portada subida", "data" => $r]);
|
||||||
@ -256,7 +286,7 @@ class Ordentrabajo extends BaseController
|
|||||||
if ($fullpath) {
|
if ($fullpath) {
|
||||||
delete_files($fullpath);
|
delete_files($fullpath);
|
||||||
}
|
}
|
||||||
return $this->response->setJSON(["message" => "Portada error", "error" => $th->getMessage()])->setStatusCode($th->getCode());
|
return $this->response->setJSON(["message" => "Portada error", "error" => $th->getMessage()])->setStatusCode(500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public function delete_orden_trabajo_portada($orden_trabajo_id)
|
public function delete_orden_trabajo_portada($orden_trabajo_id)
|
||||||
@ -280,7 +310,7 @@ class Ordentrabajo extends BaseController
|
|||||||
try {
|
try {
|
||||||
$ot = $this->otModel->find($orden_trabajo_id);
|
$ot = $this->otModel->find($orden_trabajo_id);
|
||||||
if ($ot->portada_path) {
|
if ($ot->portada_path) {
|
||||||
$filePath = WRITEPATH . 'uploads/' . $ot->portada_path;
|
$filePath = $ot->full_path;
|
||||||
if (file_exists($filePath)) {
|
if (file_exists($filePath)) {
|
||||||
|
|
||||||
$mimeType = mime_content_type($filePath);
|
$mimeType = mime_content_type($filePath);
|
||||||
@ -296,31 +326,30 @@ class Ordentrabajo extends BaseController
|
|||||||
}
|
}
|
||||||
} catch (\Throwable $th) {
|
} catch (\Throwable $th) {
|
||||||
return $this->response->setJSON(["message" => "Portada error", "error" => $th->getMessage()])->setStatusCode(500);
|
return $this->response->setJSON(["message" => "Portada error", "error" => $th->getMessage()])->setStatusCode(500);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public function planning_rotativa_datatable()
|
public function planning_rotativa_datatable()
|
||||||
{
|
{
|
||||||
$q = $this->produccionService->planningRotativaQueryDatatable();
|
$query = $this->produccionService->planningRotativaQueryDatatable();
|
||||||
return DataTable::of($q)
|
return DataTable::of($query)
|
||||||
->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") : "")
|
->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("metros_check", fn($q) => $q->otId)
|
||||||
->add("corte", fn($q) => ["otId" => $q->otId, "tipo_corte" => $this->produccionService->ordenTrabajoTareaCorte($q->otId)])
|
->add("corte", fn($q) => ["otId" => $q->otId, "tipo_corte" => $this->produccionService->ordenTrabajoTareaCorte($q->otId)])
|
||||||
->add("action", fn($q) => $q)
|
->add("action", fn($q) => ["data" => $q])
|
||||||
->toJson(true);
|
->toJson(true);
|
||||||
}
|
}
|
||||||
public function planning_plana_datatable()
|
public function planning_plana_datatable()
|
||||||
{
|
{
|
||||||
$q = $this->produccionService->planningPlanaQueryDatatable();
|
$query = $this->produccionService->planningPlanaQueryDatatable();
|
||||||
$padreId = $this->request->getGet('padre_id');
|
$padreId = $this->request->getGet('padre_id');
|
||||||
if ($padreId) {
|
if ($padreId) {
|
||||||
$q->where('lg_maquinas.padre_id', $padreId);
|
$query->where('lg_maquinas.padre_id', $padreId);
|
||||||
}
|
}
|
||||||
return DataTable::of($q)
|
return DataTable::of($query)
|
||||||
->edit("tiempo_real_sum", fn($q) => $q->tiempo_real_sum)
|
->edit("tiempo_real_sum", fn($q) => $q->tiempo_real_sum)
|
||||||
->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") : "")
|
->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("pliegos_check", fn($q) => $q->otId)
|
->add("pliegos_check", fn($q) => $q->otId)
|
||||||
->add("action", fn($q) => $q)
|
->add("action", fn($q) => ["data" => $q ])
|
||||||
->toJson(true);
|
->toJson(true);
|
||||||
}
|
}
|
||||||
public function select_maquina_planning_rot()
|
public function select_maquina_planning_rot()
|
||||||
@ -404,4 +433,9 @@ class Ordentrabajo extends BaseController
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public function get_orden_trabajo_color_status(int $orden_trabajo_id)
|
||||||
|
{
|
||||||
|
$color = $this->produccionService->init($orden_trabajo_id)->getOtColorStatus();
|
||||||
|
return $this->response->setJSON(["color" => $color]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,101 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Database\Migrations;
|
||||||
|
|
||||||
|
use CodeIgniter\Database\Migration;
|
||||||
|
use CodeIgniter\Database\RawSql;
|
||||||
|
|
||||||
|
class UpdateDateFieldsOrdenTrabajoDates extends Migration
|
||||||
|
{
|
||||||
|
protected array $DATES = [
|
||||||
|
"cosido_at" => [
|
||||||
|
"type" => "DATE",
|
||||||
|
"null" => true,
|
||||||
|
],
|
||||||
|
"solapa_at" => [
|
||||||
|
"type" => "DATE",
|
||||||
|
"null" => true,
|
||||||
|
],
|
||||||
|
"grapado_at" => [
|
||||||
|
"type" => "DATE",
|
||||||
|
"null" => true,
|
||||||
|
],
|
||||||
|
"retractilado_at" => [
|
||||||
|
"type" => "DATE",
|
||||||
|
"null" => true,
|
||||||
|
],
|
||||||
|
"retractilado5_at" => [
|
||||||
|
"type" => "DATE",
|
||||||
|
"null" => true,
|
||||||
|
],
|
||||||
|
"prototipo_at" => [
|
||||||
|
"type" => "DATE",
|
||||||
|
"null" => true,
|
||||||
|
],
|
||||||
|
"marcapaginas_at" => [
|
||||||
|
"type" => "DATE",
|
||||||
|
"null" => true,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
protected array $USERS = [
|
||||||
|
"cosido_user_id" => [
|
||||||
|
"type" => "INT",
|
||||||
|
"unsigned" => true,
|
||||||
|
"constraint" => 10,
|
||||||
|
"null" => true,
|
||||||
|
],
|
||||||
|
"solapa_user_id" => [
|
||||||
|
"type" => "INT",
|
||||||
|
"unsigned" => true,
|
||||||
|
"constraint" => 10,
|
||||||
|
"null" => true,
|
||||||
|
],
|
||||||
|
"grapado_user_id" => [
|
||||||
|
"type" => "INT",
|
||||||
|
"unsigned" => true,
|
||||||
|
"constraint" => 10,
|
||||||
|
"null" => true,
|
||||||
|
],
|
||||||
|
"retractilado_user_id" => [
|
||||||
|
"type" => "INT",
|
||||||
|
"unsigned" => true,
|
||||||
|
"constraint" => 10,
|
||||||
|
"null" => true,
|
||||||
|
],
|
||||||
|
"retractilado5_user_id" => [
|
||||||
|
"type" => "INT",
|
||||||
|
"unsigned" => true,
|
||||||
|
"constraint" => 10,
|
||||||
|
"null" => true,
|
||||||
|
],
|
||||||
|
"prototipo_user_id" => [
|
||||||
|
"type" => "INT",
|
||||||
|
"unsigned" => true,
|
||||||
|
"constraint" => 10,
|
||||||
|
"null" => true,
|
||||||
|
],
|
||||||
|
"marcapaginas_user_id" => [
|
||||||
|
"type" => "INT",
|
||||||
|
"unsigned" => true,
|
||||||
|
"constraint" => 10,
|
||||||
|
"null" => true,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
$this->forge->addColumn("orden_trabajo_dates", $this->DATES);
|
||||||
|
$this->forge->addColumn("orden_trabajo_users", $this->USERS);
|
||||||
|
foreach ($this->USERS as $key => $value) {
|
||||||
|
$this->forge->addForeignKey([$key],"users",["id"]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
$this->forge->dropColumn("orden_trabajo_dates", array_keys($this->DATES));
|
||||||
|
$this->forge->dropColumn("orden_trabajo_users", array_keys($this->USERS));
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Database\Migrations;
|
||||||
|
|
||||||
|
use CodeIgniter\Database\Migration;
|
||||||
|
use CodeIgniter\Database\RawSql;
|
||||||
|
|
||||||
|
class AddFkOrdenTrabajoChatDepartment extends Migration
|
||||||
|
{
|
||||||
|
protected array $COLUMNS = [
|
||||||
|
"orden_trabajo_id" => [
|
||||||
|
"type" => "INT",
|
||||||
|
"constraint" => 10,
|
||||||
|
"unsigned" => true,
|
||||||
|
"null" => true
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
$this->forge->addColumn("chats", $this->COLUMNS);
|
||||||
|
$this->forge->addColumn("chat_department_users", $this->COLUMNS);
|
||||||
|
$this->forge->addForeignKey('orden_trabajo_id', 'ordenes_trabajo', 'id');
|
||||||
|
$this->forge->processIndexes('chats');
|
||||||
|
$this->forge->addForeignKey('orden_trabajo_id', 'ordenes_trabajo', 'id');
|
||||||
|
$this->forge->processIndexes('chat_department_users');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
$this->forge->dropColumn("chats", ["orden_trabajo_id"]);
|
||||||
|
$this->forge->dropColumn("chat_department_users", ["orden_trabajo_id"]);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -36,7 +36,9 @@ class ChatDepartmentEntity extends Entity
|
|||||||
$chatDepartmentUsers = $m->where('chat_department_id',$this->attributes['id'])
|
$chatDepartmentUsers = $m->where('chat_department_id',$this->attributes['id'])
|
||||||
->where('pedido_id',null)
|
->where('pedido_id',null)
|
||||||
->where('factura_id',null)
|
->where('factura_id',null)
|
||||||
->where('presupuesto_id',null)->findAll();
|
->where('presupuesto_id',null)
|
||||||
|
->where('orden_trabajo_id',null)
|
||||||
|
->findAll();
|
||||||
return $chatDepartmentUsers;
|
return $chatDepartmentUsers;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@ -62,6 +64,9 @@ class ChatDepartmentEntity extends Entity
|
|||||||
case 'factura':
|
case 'factura':
|
||||||
$m->where('pedido_id',$modelFkId);
|
$m->where('pedido_id',$modelFkId);
|
||||||
break;
|
break;
|
||||||
|
case 'ot':
|
||||||
|
$m->where('orden_trabajo_id',$modelFkId);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,6 +20,7 @@ class ChatDepartmentUserEntity extends Entity
|
|||||||
"pedido_id" => null,
|
"pedido_id" => null,
|
||||||
"factura_id" => null,
|
"factura_id" => null,
|
||||||
"presupuesto_id" => null,
|
"presupuesto_id" => null,
|
||||||
|
"orden_trabajo_id" => null,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
@ -29,6 +30,7 @@ class ChatDepartmentUserEntity extends Entity
|
|||||||
"pedido_id" => "?integer",
|
"pedido_id" => "?integer",
|
||||||
"factura_id" => "?integer",
|
"factura_id" => "?integer",
|
||||||
"presupuesto_id" => "?integer",
|
"presupuesto_id" => "?integer",
|
||||||
|
"orden_trabajo_id" => "?integer",
|
||||||
];
|
];
|
||||||
|
|
||||||
public function user() : ?UserEntity
|
public function user() : ?UserEntity
|
||||||
|
|||||||
@ -5,11 +5,13 @@ namespace App\Entities\Chat;
|
|||||||
use App\Entities\Facturas\FacturaEntity;
|
use App\Entities\Facturas\FacturaEntity;
|
||||||
use App\Entities\Pedidos\PedidoEntity;
|
use App\Entities\Pedidos\PedidoEntity;
|
||||||
use App\Entities\Presupuestos\PresupuestoEntity;
|
use App\Entities\Presupuestos\PresupuestoEntity;
|
||||||
|
use App\Entities\Produccion\OrdenTrabajoEntity;
|
||||||
use App\Entities\Usuarios\UserEntity;
|
use App\Entities\Usuarios\UserEntity;
|
||||||
use App\Models\Chat\ChatDeparmentModel;
|
use App\Models\Chat\ChatDeparmentModel;
|
||||||
use App\Models\Chat\ChatMessageModel;
|
use App\Models\Chat\ChatMessageModel;
|
||||||
use App\Models\ChatUser;
|
use App\Models\ChatUser;
|
||||||
use App\Models\Facturas\FacturaModel;
|
use App\Models\Facturas\FacturaModel;
|
||||||
|
use App\Models\OrdenTrabajo\OrdenTrabajoModel;
|
||||||
use App\Models\Pedidos\PedidoModel;
|
use App\Models\Pedidos\PedidoModel;
|
||||||
use App\Models\Presupuestos\PresupuestoModel;
|
use App\Models\Presupuestos\PresupuestoModel;
|
||||||
use App\Models\Usuarios\UserModel;
|
use App\Models\Usuarios\UserModel;
|
||||||
@ -25,6 +27,7 @@ class ChatEntity extends Entity
|
|||||||
"pedido_id" => null,
|
"pedido_id" => null,
|
||||||
"presupuesto_id" => null,
|
"presupuesto_id" => null,
|
||||||
"factura_id" => null,
|
"factura_id" => null,
|
||||||
|
"orden_trabajo_id" => null,
|
||||||
"title" => null
|
"title" => null
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -34,6 +37,7 @@ class ChatEntity extends Entity
|
|||||||
"pedido_id" => "?integer",
|
"pedido_id" => "?integer",
|
||||||
"presupuesto_id" => "?integer",
|
"presupuesto_id" => "?integer",
|
||||||
"factura_id" => "?integer",
|
"factura_id" => "?integer",
|
||||||
|
"orden_trabajo_id" => "?integer",
|
||||||
"title" => "string"
|
"title" => "string"
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -71,6 +75,11 @@ class ChatEntity extends Entity
|
|||||||
$m = model(FacturaEntity::class);
|
$m = model(FacturaEntity::class);
|
||||||
return $m->find($this->attributes['factura_id']);
|
return $m->find($this->attributes['factura_id']);
|
||||||
}
|
}
|
||||||
|
public function orden_trabajo(): ?OrdenTrabajoEntity
|
||||||
|
{
|
||||||
|
$m = model(OrdenTrabajoModel::class);
|
||||||
|
return $m->find($this->attributes['orden_trabajo_id']);
|
||||||
|
}
|
||||||
public function messages(): ?array
|
public function messages(): ?array
|
||||||
{
|
{
|
||||||
$m = model(ChatMessageModel::class);
|
$m = model(ChatMessageModel::class);
|
||||||
@ -100,12 +109,14 @@ class ChatEntity extends Entity
|
|||||||
$models = [
|
$models = [
|
||||||
"presupuesto_id" => model(PresupuestoModel::class),
|
"presupuesto_id" => model(PresupuestoModel::class),
|
||||||
"pedido_id" => model(PedidoModel::class),
|
"pedido_id" => model(PedidoModel::class),
|
||||||
"factura_id" => model(FacturaModel::class)
|
"factura_id" => model(FacturaModel::class),
|
||||||
|
"orden_trabajo_id" => model(OrdenTrabajoModel::class),
|
||||||
];
|
];
|
||||||
$fks = [
|
$fks = [
|
||||||
"presupuesto_id" => $this->attributes["presupuesto_id"],
|
"presupuesto_id" => $this->attributes["presupuesto_id"],
|
||||||
"pedido_id" => $this->attributes["pedido_id"],
|
"pedido_id" => $this->attributes["pedido_id"],
|
||||||
"factura_id" => $this->attributes["factura_id"],
|
"factura_id" => $this->attributes["factura_id"],
|
||||||
|
"orden_trabajo_id" => $this->attributes["orden_trabajo"],
|
||||||
];
|
];
|
||||||
foreach ($fks as $key => $fk) {
|
foreach ($fks as $key => $fk) {
|
||||||
if ($fk) {
|
if ($fk) {
|
||||||
@ -123,6 +134,7 @@ class ChatEntity extends Entity
|
|||||||
"presupuesto" => $this->attributes["presupuesto_id"],
|
"presupuesto" => $this->attributes["presupuesto_id"],
|
||||||
"pedido" => $this->attributes["pedido_id"],
|
"pedido" => $this->attributes["pedido_id"],
|
||||||
"factura" => $this->attributes["factura_id"],
|
"factura" => $this->attributes["factura_id"],
|
||||||
|
"ot" => $this->attributes["orden_trabajo_id"],
|
||||||
];
|
];
|
||||||
foreach ($fks as $key => $fk) {
|
foreach ($fks as $key => $fk) {
|
||||||
if ($fk) {
|
if ($fk) {
|
||||||
|
|||||||
@ -19,4 +19,13 @@ class Imposicion extends \CodeIgniter\Entity\Entity
|
|||||||
"alto" => "int",
|
"alto" => "int",
|
||||||
"unidades" => "?int",
|
"unidades" => "?int",
|
||||||
];
|
];
|
||||||
|
|
||||||
|
public function getFullName() : string
|
||||||
|
{
|
||||||
|
$ancho_x_alto = $this->attributes["ancho"] ."x". $this->attributes["alto"];
|
||||||
|
$unidades = $this->attributes["unidades"] ?? "";
|
||||||
|
$orientacion = $this->attributes["orientacion"] ?? "";
|
||||||
|
return implode("_",[$ancho_x_alto,$unidades,$orientacion]);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,9 +2,11 @@
|
|||||||
namespace App\Entities\Configuracion;
|
namespace App\Entities\Configuracion;
|
||||||
|
|
||||||
use App\Models\Configuracion\MaquinasPapelesImpresionModel;
|
use App\Models\Configuracion\MaquinasPapelesImpresionModel;
|
||||||
|
use App\Models\Configuracion\PapelGenericoModel;
|
||||||
use App\Models\Configuracion\PapelImpresionMargenModel;
|
use App\Models\Configuracion\PapelImpresionMargenModel;
|
||||||
use App\Models\Configuracion\PapelImpresionTipologiaModel;
|
use App\Models\Configuracion\PapelImpresionTipologiaModel;
|
||||||
use CodeIgniter\Entity;
|
use CodeIgniter\Entity;
|
||||||
|
use CodeIgniter\Model;
|
||||||
|
|
||||||
class PapelImpresion extends \CodeIgniter\Entity\Entity
|
class PapelImpresion extends \CodeIgniter\Entity\Entity
|
||||||
{
|
{
|
||||||
@ -68,4 +70,15 @@ class PapelImpresion extends \CodeIgniter\Entity\Entity
|
|||||||
$m = model(PapelImpresionMargenModel::class);
|
$m = model(PapelImpresionMargenModel::class);
|
||||||
return $m->asArray()->where('papel_impresion_id',$this->attributes["id"])->findAll();
|
return $m->asArray()->where('papel_impresion_id',$this->attributes["id"])->findAll();
|
||||||
}
|
}
|
||||||
|
public function papel_generico() : ?PapelGenerico
|
||||||
|
{
|
||||||
|
$m = model(PapelGenericoModel::class);
|
||||||
|
return $m->find($this->attributes["papel_generico_id"]);
|
||||||
|
}
|
||||||
|
public function getPapelCodeOt() : ?string
|
||||||
|
{
|
||||||
|
$code_ot = $this->papel_generico()->code_ot;
|
||||||
|
$gramaje = $this->attributes["gramaje"];
|
||||||
|
return implode(" ",[$code_ot,$gramaje]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,9 +6,11 @@ use App\Entities\Produccion\OrdenTrabajoEntity;
|
|||||||
use App\Models\OrdenTrabajo\OrdenTrabajoModel;
|
use App\Models\OrdenTrabajo\OrdenTrabajoModel;
|
||||||
use App\Entities\Clientes\ClienteEntity;
|
use App\Entities\Clientes\ClienteEntity;
|
||||||
use App\Entities\Configuracion\UbicacionesEntity;
|
use App\Entities\Configuracion\UbicacionesEntity;
|
||||||
|
use App\Entities\Usuarios\UserEntity;
|
||||||
use App\Models\Clientes\ClienteModel;
|
use App\Models\Clientes\ClienteModel;
|
||||||
use App\Models\Pedidos\PedidoLineaModel;
|
use App\Models\Pedidos\PedidoLineaModel;
|
||||||
use App\Models\Presupuestos\PresupuestoModel;
|
use App\Models\Presupuestos\PresupuestoModel;
|
||||||
|
use App\Models\Usuarios\UserModel;
|
||||||
use CodeIgniter\Entity;
|
use CodeIgniter\Entity;
|
||||||
|
|
||||||
class PedidoEntity extends \CodeIgniter\Entity\Entity
|
class PedidoEntity extends \CodeIgniter\Entity\Entity
|
||||||
@ -40,6 +42,12 @@ class PedidoEntity extends \CodeIgniter\Entity\Entity
|
|||||||
protected $casts = [
|
protected $casts = [
|
||||||
"total_precio" => "float",
|
"total_precio" => "float",
|
||||||
"total_tirada" => "float",
|
"total_tirada" => "float",
|
||||||
|
"inaplazable" => "bool",
|
||||||
|
"fecha_entrega_real_change_user_id" => "?integer",
|
||||||
|
"fecha_impresion_change_user_id" => "?integer",
|
||||||
|
"fecha_encuadernado_change_user_id" => "?integer",
|
||||||
|
"fecha_entrega_change_externo_user_id" => "?integer",
|
||||||
|
"inaplazable_change_user_id" => "?integer",
|
||||||
];
|
];
|
||||||
/**
|
/**
|
||||||
* Devuelve la entidad `PedidoEntity` con sus relaciones
|
* Devuelve la entidad `PedidoEntity` con sus relaciones
|
||||||
@ -91,4 +99,16 @@ class PedidoEntity extends \CodeIgniter\Entity\Entity
|
|||||||
$pre = $pm->find($pedido_linea->presupuesto_id);
|
$pre = $pm->find($pedido_linea->presupuesto_id);
|
||||||
return $m->find($pre->cliente_id);
|
return $m->find($pre->cliente_id);
|
||||||
}
|
}
|
||||||
|
public 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -225,4 +225,8 @@ class PresupuestoLineaEntity extends \CodeIgniter\Entity\Entity
|
|||||||
{
|
{
|
||||||
return in_array($this->attributes['tipo'],['lp_rot_color','lp_rot_bn']);
|
return in_array($this->attributes['tipo'],['lp_rot_color','lp_rot_bn']);
|
||||||
}
|
}
|
||||||
|
public function isColor():bool {
|
||||||
|
return in_array($this->attributes['tipo'],['lp_color','lp_colorhq','lp_rot_color']);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,34 +2,45 @@
|
|||||||
|
|
||||||
namespace App\Entities\Produccion;
|
namespace App\Entities\Produccion;
|
||||||
|
|
||||||
|
use App\Models\Usuarios\UserModel;
|
||||||
use CodeIgniter\Entity\Entity;
|
use CodeIgniter\Entity\Entity;
|
||||||
|
use Exception;
|
||||||
|
|
||||||
class OrdenTrabajoDateEntity extends Entity
|
class OrdenTrabajoDateEntity extends Entity
|
||||||
{
|
{
|
||||||
protected $attributes = [
|
protected $attributes = [
|
||||||
"orden_trabajo_id" => null,
|
"orden_trabajo_id" => null,
|
||||||
"fecha_entrada_at" => null,
|
"fecha_entrada_at" => null,
|
||||||
"fecha_entrega_change_at" => null,
|
//IMPRESION
|
||||||
"fecha_entrega_real_at" => null,
|
|
||||||
"fecha_entrega_real_warning" => null,
|
|
||||||
"fecha_impresion_at" => null,
|
|
||||||
"fecha_encuadernado_at" => null,
|
|
||||||
"fecha_externo_at" => null,
|
|
||||||
"fecha_entrega_warning" => null,
|
|
||||||
"fecha_entrega_warning_revised" => null,
|
|
||||||
"pendiente_ferro_at" => null,
|
|
||||||
"ferro_en_cliente_at" => null,
|
|
||||||
"ferro_ok_at" => null,
|
|
||||||
"interior_bn_at" => null,
|
"interior_bn_at" => null,
|
||||||
"interior_color_at" => null,
|
"interior_color_at" => null,
|
||||||
"preparacion_interiores_at" => null,
|
|
||||||
"cubierta_at" => null,
|
"cubierta_at" => null,
|
||||||
|
//ACABADO
|
||||||
"plastificado_at" => null,
|
"plastificado_at" => null,
|
||||||
"encuadernacion_at" => null,
|
"encuadernacion_at" => null,
|
||||||
"corte_at" => null,
|
"corte_at" => null,
|
||||||
|
"preparacion_interiores_at" => null,
|
||||||
|
"entrada_manipulado_at" => null,
|
||||||
|
"cosido_at" => null,
|
||||||
|
"solapa_at" => null,
|
||||||
|
"grapado_at" => null,
|
||||||
|
"retractilado_at"=> null,
|
||||||
|
"retractilado5_at"=> null,
|
||||||
|
"prototipo_at"=> null,
|
||||||
|
"marcapaginas_at"=> null,
|
||||||
|
//FERRO
|
||||||
|
"pendiente_ferro_at" => null,
|
||||||
|
"ferro_en_cliente_at" => null,
|
||||||
|
"ferro_ok_at" => null,
|
||||||
|
//ENVIO
|
||||||
"embalaje_at" => null,
|
"embalaje_at" => null,
|
||||||
"envio_at" => null,
|
"envio_at" => null,
|
||||||
"entrada_manipulado_at" => null
|
//PREIMPRESION
|
||||||
|
"pre_formato_at" => null,
|
||||||
|
"pre_lomo_at" => null,
|
||||||
|
"pre_solapa_at" => null,
|
||||||
|
"pre_codbarras_at" => null,
|
||||||
|
"pre_imposicion_at" => null,
|
||||||
|
|
||||||
];
|
];
|
||||||
protected $datamap = [];
|
protected $datamap = [];
|
||||||
@ -37,51 +48,52 @@ class OrdenTrabajoDateEntity extends Entity
|
|||||||
'created_at',
|
'created_at',
|
||||||
'updated_at',
|
'updated_at',
|
||||||
'deleted_at',
|
'deleted_at',
|
||||||
// 'fecha_entrega_at',
|
|
||||||
// 'fecha_entrega_change_at',
|
|
||||||
// 'fecha_entrega_real_at',
|
|
||||||
// 'fecha_entrega_real_warning',
|
|
||||||
// 'fecha_impresion_at',
|
|
||||||
// 'fecha_encuadernado_at',
|
|
||||||
// 'fecha_externo_at',
|
|
||||||
// 'fecha_entrega_warning',
|
|
||||||
// 'fecha_entrega_warning_revised',
|
|
||||||
// 'pendiente_ferro_at',
|
|
||||||
// 'ferro_en_cliente_at',
|
|
||||||
// 'ferro_ok_at',
|
|
||||||
// 'interior_bn_at',
|
|
||||||
// 'interior_color_at',
|
|
||||||
// 'preparacion_interiores_at',
|
|
||||||
// 'cubierta_at',
|
|
||||||
// 'plastificado_at',
|
|
||||||
// 'encuadernacion_at',
|
|
||||||
// 'corte_at',
|
|
||||||
// 'embalaje_at',
|
|
||||||
// 'envio_at',
|
|
||||||
// 'entrada_manipulado_at'
|
|
||||||
];
|
|
||||||
protected $casts = [
|
|
||||||
// "fecha_entrada_at" => "?datetime",
|
|
||||||
// "fecha_entrega_change_at" => "?datetime",
|
|
||||||
// "fecha_entrega_real_at" => "?datetime",
|
|
||||||
// "fecha_entrega_real_warning" => "?bool",
|
|
||||||
// "fecha_impresion_at" => "?datetime",
|
|
||||||
// "fecha_encuadernado_at" => "?datetime",
|
|
||||||
// "fecha_externo_at" => "?datetime",
|
|
||||||
// "fecha_entrega_warning" => "?bool",
|
|
||||||
// "fecha_entrega_warning_revised" => "?bool",
|
|
||||||
// "pendiente_ferro_at" => "?datetime",
|
|
||||||
// "ferro_en_cliente_at" => "?datetime",
|
|
||||||
// "ferro_ok_at" => "?datetime",
|
|
||||||
// "interior_bn_at" => "?datetime",
|
|
||||||
// "interior_color_at" => "?datetime",
|
|
||||||
// "preparacion_interiores_at" => "?datetime",
|
|
||||||
// "cubierta_at" => "?datetime",
|
|
||||||
// "plastificado_at" => "?datetime",
|
|
||||||
// "encuadernacion_at" => "?datetime",
|
|
||||||
// "corte_at" => "?datetime",
|
|
||||||
// "embalaje_at" => "?datetime",
|
|
||||||
// "envio_at" => "?datetime",
|
|
||||||
// "entrada_manipulado_at" => "?datetime"
|
|
||||||
];
|
];
|
||||||
|
protected $casts = [];
|
||||||
|
|
||||||
|
public function sinImprimirStatus(): bool
|
||||||
|
{
|
||||||
|
return !(
|
||||||
|
$this->attributes['interior_bn_at'] == null
|
||||||
|
&& $this->attributes['interior_color_at'] == null
|
||||||
|
&& $this->attributes['cubierta_at'] == null
|
||||||
|
);
|
||||||
|
}
|
||||||
|
public function impresionInteriorStatus():bool
|
||||||
|
{
|
||||||
|
return $this->attributes['interior_bn_at']|| $this->attributes['interior_color_at'];
|
||||||
|
}
|
||||||
|
public function impresionCubiertaStatus():bool
|
||||||
|
{
|
||||||
|
return $this->attributes['cubierta_at'] != null;
|
||||||
|
}
|
||||||
|
public function plastificadoStatus():bool
|
||||||
|
{
|
||||||
|
return $this->attributes['plastificado_at'] != null;
|
||||||
|
}
|
||||||
|
public function encuadernadoStatus():bool
|
||||||
|
{
|
||||||
|
return $this->attributes['encuadernacion_at'] != null;
|
||||||
|
}
|
||||||
|
public function preparacionInterioresStatus():bool
|
||||||
|
{
|
||||||
|
return $this->attributes['preparacion_interiores_at'] != null;
|
||||||
|
}
|
||||||
|
public function corteStatus():bool
|
||||||
|
{
|
||||||
|
return $this->attributes['corte_at'] != null;
|
||||||
|
}
|
||||||
|
public function cosidoStatus():bool
|
||||||
|
{
|
||||||
|
return $this->attributes['cosido_at'] != null;
|
||||||
|
}
|
||||||
|
public function grapadoStatus():bool
|
||||||
|
{
|
||||||
|
return $this->attributes['grapado_at'] != null;
|
||||||
|
}
|
||||||
|
public function solapaStatus():bool
|
||||||
|
{
|
||||||
|
return $this->attributes['solapa_at'] != null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,21 +21,21 @@ class OrdenTrabajoEntity extends Entity
|
|||||||
"pedido_id" => null,
|
"pedido_id" => null,
|
||||||
"user_created_id" => null,
|
"user_created_id" => null,
|
||||||
"user_updated_id" => null,
|
"user_updated_id" => null,
|
||||||
"fecha_entrega_warning" => false,
|
"fecha_entrega_warning" => null,
|
||||||
"fecha_entrega_warning_revised" => false,
|
"fecha_entrega_warning_revised" => null,
|
||||||
"total_tirada" => null,
|
"total_tirada" => null,
|
||||||
"total_precio" => null,
|
"total_precio" => null,
|
||||||
"tipo_entrada" => "out",
|
"tipo_entrada" => "out",
|
||||||
"progreso" => 0.00,
|
"progreso" => 0.00,
|
||||||
"estado" => "I",
|
"estado" => "I",
|
||||||
"comentarios" => null,
|
"comentarios" => null,
|
||||||
"revisar_formato" => false,
|
"revisar_formato" => null,
|
||||||
"revisar_lomo" => false,
|
"revisar_lomo" => null,
|
||||||
"revisar_solapa" => false,
|
"revisar_solapa" => null,
|
||||||
"revisar_isbn" => false,
|
"revisar_isbn" => null,
|
||||||
"revisar_codigo_barras" => false,
|
"revisar_codigo_barras" => null,
|
||||||
"realizar_imposicion" => false,
|
"realizar_imposicion" => null,
|
||||||
"enviar_impresion" => false,
|
"enviar_impresion" => null,
|
||||||
"portada_path" => null,
|
"portada_path" => null,
|
||||||
"is_pedido_espera" => null,
|
"is_pedido_espera" => null,
|
||||||
"pedido_espera_by" => null,
|
"pedido_espera_by" => null,
|
||||||
@ -87,12 +87,12 @@ class OrdenTrabajoEntity extends Entity
|
|||||||
public function dates(): ?OrdenTrabajoDateEntity
|
public function dates(): ?OrdenTrabajoDateEntity
|
||||||
{
|
{
|
||||||
$m = model(OrdenTrabajoDate::class);
|
$m = model(OrdenTrabajoDate::class);
|
||||||
return $m->where('orden_trabajo_id',$this->attributes["id"])->first();
|
return $m->where('orden_trabajo_id', $this->attributes["id"])->first();
|
||||||
}
|
}
|
||||||
public function users(): ?OrdenTrabajoUserEntity
|
public function users(): ?OrdenTrabajoUserEntity
|
||||||
{
|
{
|
||||||
$m = model(OrdenTrabajoUser::class);
|
$m = model(OrdenTrabajoUser::class);
|
||||||
return $m->where('orden_trabajo_id',$this->attributes["id"])->first();
|
return $m->where('orden_trabajo_id', $this->attributes["id"])->first();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -109,24 +109,24 @@ class OrdenTrabajoEntity extends Entity
|
|||||||
$this->attributes["dates"] = $ot_dates->fill($data);
|
$this->attributes["dates"] = $ot_dates->fill($data);
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
public function getBarCode() : string
|
public function getBarCode(): string
|
||||||
{
|
{
|
||||||
$barcode = new TypeCode128();
|
$barcode = new TypeCode128();
|
||||||
$renderer = new PngRenderer();
|
$renderer = new PngRenderer();
|
||||||
$barcodeData = $barcode->getBarcode($this->pedido()->presupuesto()->id);
|
$barcodeData = $barcode->getBarcode($this->pedido()->presupuesto()->id);
|
||||||
return base64_encode($renderer->render($barcodeData,200, 50));
|
return base64_encode($renderer->render($barcodeData, 200, 50));
|
||||||
}
|
}
|
||||||
public function files() : array
|
public function files(): array
|
||||||
{
|
{
|
||||||
$m = model(OrdenTrabajoFileModel::class);
|
$m = model(OrdenTrabajoFileModel::class);
|
||||||
return $m->where('orden_trabajo_id',$this->attributes['id'])->findAll() ?? [];
|
return $m->where('orden_trabajo_id', $this->attributes['id'])->findAll() ?? [];
|
||||||
}
|
}
|
||||||
public function pedidoEsperaBy() : ?UserEntity
|
public function pedidoEsperaBy(): ?UserEntity
|
||||||
{
|
{
|
||||||
$m = model(UserModel::class);
|
$m = model(UserModel::class);
|
||||||
if($this->attributes['pedido_espera_by']){
|
if ($this->attributes['pedido_espera_by']) {
|
||||||
return $m->findById($this->attributes['pedido_espera_by']);
|
return $m->findById($this->attributes['pedido_espera_by']);
|
||||||
}else{
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -134,4 +134,18 @@ class OrdenTrabajoEntity extends Entity
|
|||||||
{
|
{
|
||||||
return $this->pedidoEsperaBy();
|
return $this->pedidoEsperaBy();
|
||||||
}
|
}
|
||||||
|
public function getFullPath(): ?string
|
||||||
|
{
|
||||||
|
helper('filesystem');
|
||||||
|
$path = WRITEPATH . 'uploads/' . $this->attributes["portada_path"];
|
||||||
|
$portada_path = null;
|
||||||
|
if ($path) {
|
||||||
|
if (file_exists($path)) {
|
||||||
|
$portada_path = $path;
|
||||||
|
} else {
|
||||||
|
$portada_path = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $portada_path;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,10 +2,12 @@
|
|||||||
|
|
||||||
namespace App\Entities\Produccion;
|
namespace App\Entities\Produccion;
|
||||||
|
|
||||||
|
use App\Entities\Configuracion\Imposicion;
|
||||||
use App\Entities\Configuracion\Maquina;
|
use App\Entities\Configuracion\Maquina;
|
||||||
use App\Entities\Presupuestos\PresupuestoAcabadosEntity;
|
use App\Entities\Presupuestos\PresupuestoAcabadosEntity;
|
||||||
use App\Entities\Presupuestos\PresupuestoLineaEntity;
|
use App\Entities\Presupuestos\PresupuestoLineaEntity;
|
||||||
use App\Entities\Presupuestos\PresupuestoManipuladosEntity;
|
use App\Entities\Presupuestos\PresupuestoManipuladosEntity;
|
||||||
|
use App\Models\Configuracion\ImposicionModel;
|
||||||
use App\Models\Configuracion\MaquinaModel;
|
use App\Models\Configuracion\MaquinaModel;
|
||||||
use App\Models\OrdenTrabajo\OrdenTrabajoModel;
|
use App\Models\OrdenTrabajo\OrdenTrabajoModel;
|
||||||
use App\Models\Presupuestos\PresupuestoAcabadosModel;
|
use App\Models\Presupuestos\PresupuestoAcabadosModel;
|
||||||
@ -105,5 +107,14 @@ class OrdenTrabajoTareaEntity extends Entity
|
|||||||
$m = model(PresupuestoAcabadosModel::class);
|
$m = model(PresupuestoAcabadosModel::class);
|
||||||
return $m->find($this->attributes["presupuesto_linea_id"]);
|
return $m->find($this->attributes["presupuesto_linea_id"]);
|
||||||
}
|
}
|
||||||
|
public function imposicion() : ?Imposicion
|
||||||
|
{
|
||||||
|
$m = model(ImposicionModel::class);
|
||||||
|
$imposicion = null;
|
||||||
|
if($this->attributes["imposicion_id"]){
|
||||||
|
$imposicion = $m->find($this->attributes["imposicion_id"]);
|
||||||
|
}
|
||||||
|
return $imposicion;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,28 +15,42 @@ class OrdenTrabajoUserEntity extends Entity
|
|||||||
"orden_trabajo_id" => null,
|
"orden_trabajo_id" => null,
|
||||||
"user_created_id" => null,
|
"user_created_id" => null,
|
||||||
"user_update_id" => null,
|
"user_update_id" => null,
|
||||||
"inaplazable_revised_change_user_id" => null,
|
//IMPRESION
|
||||||
"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_bn_user_id" => null,
|
||||||
"interior_color_user_id" => null,
|
"interior_color_user_id" => null,
|
||||||
"preparacion_interior_user_id" => null,
|
|
||||||
"cubierta_user_id" => null,
|
"cubierta_user_id" => null,
|
||||||
|
//ACABADO
|
||||||
"plastificado_user_id" => null,
|
"plastificado_user_id" => null,
|
||||||
"encuadernacion_user_id" => null,
|
"encuadernacion_user_id" => null,
|
||||||
"corte_user_id" => null,
|
"corte_user_id" => null,
|
||||||
"embalaje_user_id" => null,
|
"preparacion_interior_user_id" => null,
|
||||||
"entrada_manipulado_user_id" => null,
|
"entrada_manipulado_user_id" => null,
|
||||||
|
"cosido_user_id" => null,
|
||||||
|
"solapa_user_id" => null,
|
||||||
|
"grapado_user_id" => null,
|
||||||
|
"retractilado_user_id" => null,
|
||||||
|
"retractilado5_user_id" => null,
|
||||||
|
"prototipo_user_id" => null,
|
||||||
|
"marcapaginas_user_id" => null,
|
||||||
|
//FERRO
|
||||||
|
"pendiente_ferro_user_id" => null,
|
||||||
|
"ferro_en_cliente_user_id" => null,
|
||||||
|
"ferro_ok_user_id" => null,
|
||||||
|
//ENVIO
|
||||||
|
"embalaje_user_id" => null,
|
||||||
|
"envio_user_id" => null,
|
||||||
|
//PREIMPRESION
|
||||||
"pre_formato_user_id" => null,
|
"pre_formato_user_id" => null,
|
||||||
"pre_lomo_user_id" => null,
|
"pre_lomo_user_id" => null,
|
||||||
"pre_solapa_user_id" => null,
|
"pre_solapa_user_id" => null,
|
||||||
"pre_codbarras_user_id" => null,
|
"pre_codbarras_user_id" => null,
|
||||||
"pre_imposicion_user_id" => null,
|
"pre_imposicion_user_id" => null,
|
||||||
"pre_imprimir_user_id" => null
|
//UNUSED
|
||||||
|
"inaplazable_revised_change_user_id" => null, //!DELETE
|
||||||
|
"ferro_disponible_hecho_user_id" => null, //!DELETE
|
||||||
|
"ferro_entregado_user_id" => null, //!DELETE
|
||||||
|
"pre_imprimir_user_id" => null, //!DELETE
|
||||||
|
"ferro_disponible_ok_user_id" => null, //!DELETE
|
||||||
];
|
];
|
||||||
// protected array $casts = [
|
// protected array $casts = [
|
||||||
// "orden_trabajo_id" => "integer",
|
// "orden_trabajo_id" => "integer",
|
||||||
@ -66,7 +80,7 @@ class OrdenTrabajoUserEntity extends Entity
|
|||||||
// "pre_imprimir_user_id" => "?integer"
|
// "pre_imprimir_user_id" => "?integer"
|
||||||
// ];
|
// ];
|
||||||
|
|
||||||
protected function userBy(string $key): ?UserEntity
|
public function userBy(string $key): ?UserEntity
|
||||||
{
|
{
|
||||||
$user = null;
|
$user = null;
|
||||||
if (isset($this->attributes[$key])) {
|
if (isset($this->attributes[$key])) {
|
||||||
@ -78,7 +92,7 @@ class OrdenTrabajoUserEntity extends Entity
|
|||||||
}
|
}
|
||||||
return $user;
|
return $user;
|
||||||
}
|
}
|
||||||
public function getPlastificadoBy() : ?UserEntity
|
public function getPlastificadoBy(): ?UserEntity
|
||||||
{
|
{
|
||||||
return $this->userBy('plastificado_user_id');
|
return $this->userBy('plastificado_user_id');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,5 +34,13 @@ class TarifaEncuadernacionEntity extends \CodeIgniter\Entity\Entity
|
|||||||
"is_deleted" => "int",
|
"is_deleted" => "int",
|
||||||
];
|
];
|
||||||
|
|
||||||
|
public function getNameInitials(): string
|
||||||
|
{
|
||||||
|
$words = explode(" ",$this->attributes["nombre"]);
|
||||||
|
$words_initial = array_map(fn($w) => substr(strtoupper($w),0,1),$words);
|
||||||
|
return implode("",$words_initial);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,7 +39,8 @@ return [
|
|||||||
"maquina_presupuesto" => "Máquina presupuesto",
|
"maquina_presupuesto" => "Máquina presupuesto",
|
||||||
"maquina_actual" => "Máquina actual",
|
"maquina_actual" => "Máquina actual",
|
||||||
"tiempo_estimado" => "Tiempo estimado",
|
"tiempo_estimado" => "Tiempo estimado",
|
||||||
"tiempo" => "Tiempo"
|
"tiempo" => "Tiempo",
|
||||||
|
"imposicion" => "Imposición"
|
||||||
],
|
],
|
||||||
"finalizadas" => "Finalizadas",
|
"finalizadas" => "Finalizadas",
|
||||||
"pendiente_ferro" => "Ferro pendiente",
|
"pendiente_ferro" => "Ferro pendiente",
|
||||||
@ -56,7 +57,7 @@ return [
|
|||||||
"fecha_entrega_estimada" => "Fecha entrega estimada",
|
"fecha_entrega_estimada" => "Fecha entrega estimada",
|
||||||
"formato" => "Formato",
|
"formato" => "Formato",
|
||||||
"paginas" => "Páginas",
|
"paginas" => "Páginas",
|
||||||
"guillotina" => "Guillotina",
|
"guillotina" => "Guillotina/Corte",
|
||||||
"tirada" => "Tirada",
|
"tirada" => "Tirada",
|
||||||
"merma" => "Merma",
|
"merma" => "Merma",
|
||||||
"pendiente_ferro" => "Pendiente ferro",
|
"pendiente_ferro" => "Pendiente ferro",
|
||||||
@ -79,6 +80,39 @@ return [
|
|||||||
"solapa" => "Solapa",
|
"solapa" => "Solapa",
|
||||||
"papel_gramajes" => "Papel y gramajes",
|
"papel_gramajes" => "Papel y gramajes",
|
||||||
"estado" => "Estado",
|
"estado" => "Estado",
|
||||||
"pedido_espera" => "Pedido en espera"
|
"pedido_espera" => "Pedido en espera",
|
||||||
|
"imposicion_no_label" => "Sin etiqueta",
|
||||||
|
"pliegos_de" => "pliegos de",
|
||||||
|
"size" => "Tamaño",
|
||||||
|
"ejemplares" => "Ejemplares",
|
||||||
|
"tipo" => "Tipo",
|
||||||
|
"lomo" => "Lomo",
|
||||||
|
|
||||||
|
"cosido" => "Cosido",
|
||||||
|
"grapado" => "Grapado",
|
||||||
|
"solapa" => "Solapas",
|
||||||
|
"retractilado" => "Retractilado",
|
||||||
|
"retractilado5" => "Retractilado 5",
|
||||||
|
"prototipo" => "Prototipo",
|
||||||
|
"marcapaginas" => "Marcapáginas",
|
||||||
|
//IMPRESION
|
||||||
|
"impresion_bn" => "Impresión BN",
|
||||||
|
"cubierta" => "Cubierta/Portada",
|
||||||
|
//PREIMPRESION
|
||||||
|
"pre_formato" => "Revisión formato",
|
||||||
|
"pre_lomo" => "Revisión lomo",
|
||||||
|
"pre_solapa" => "Revisión solapa",
|
||||||
|
"pre_codbarras" => "Revisión código barras",
|
||||||
|
"pre_imposicion" => "Revisión imposición",
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
"errors" => [
|
||||||
|
"date_not_exist" => "Esta fecha no existe en el modelo",
|
||||||
|
"attr_not_exist" => "El atributo {0,string} no pertenece al modelo Pedido"
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
];
|
];
|
||||||
@ -136,6 +136,7 @@ class ChatDeparmentModel extends Model
|
|||||||
->where('chat_department_users.presupuesto_id',null)
|
->where('chat_department_users.presupuesto_id',null)
|
||||||
->where('chat_department_users.pedido_id',null)
|
->where('chat_department_users.pedido_id',null)
|
||||||
->where('chat_department_users.factura_id',null)
|
->where('chat_department_users.factura_id',null)
|
||||||
|
->where('chat_department_users.orden_trabajo_id',null)
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
return $result->getResultObject() ?: [];
|
return $result->getResultObject() ?: [];
|
||||||
@ -161,6 +162,13 @@ class ChatDeparmentModel extends Model
|
|||||||
->get()->getResultObject();
|
->get()->getResultObject();
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
public function getChatDeparmentOrdenTrabajoUsers(int $chat_deparment_id, int $orden_trabajo_id)
|
||||||
|
{
|
||||||
|
$result = $this->getChatDeparmentUserQuery($chat_deparment_id)
|
||||||
|
->where('chat_department_users.orden_trabajo_id', $orden_trabajo_id)
|
||||||
|
->get()->getResultObject();
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
public function getDisplay(int $chat_deparment_id): string
|
public function getDisplay(int $chat_deparment_id): string
|
||||||
{
|
{
|
||||||
return $this->find($chat_deparment_id)->display;
|
return $this->find($chat_deparment_id)->display;
|
||||||
|
|||||||
@ -19,7 +19,9 @@ class ChatDeparmentUserModel extends Model
|
|||||||
"user_id",
|
"user_id",
|
||||||
"pedido_id",
|
"pedido_id",
|
||||||
"factura_id",
|
"factura_id",
|
||||||
"presupuesto_id"
|
"presupuesto_id",
|
||||||
|
"orden_trabajo_id",
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
protected bool $allowEmptyInserts = false;
|
protected bool $allowEmptyInserts = false;
|
||||||
|
|||||||
@ -6,11 +6,13 @@ use App\Entities\Chat\ChatEntity;
|
|||||||
use App\Models\ChatNotification;
|
use App\Models\ChatNotification;
|
||||||
use App\Models\ChatUser;
|
use App\Models\ChatUser;
|
||||||
use App\Models\Facturas\FacturaModel;
|
use App\Models\Facturas\FacturaModel;
|
||||||
|
use App\Models\OrdenTrabajo\OrdenTrabajoModel;
|
||||||
use App\Models\Pedidos\PedidoModel;
|
use App\Models\Pedidos\PedidoModel;
|
||||||
use App\Models\Presupuestos\PresupuestoModel;
|
use App\Models\Presupuestos\PresupuestoModel;
|
||||||
use App\Models\Usuarios\UserModel;
|
use App\Models\Usuarios\UserModel;
|
||||||
use CodeIgniter\Model;
|
use CodeIgniter\Model;
|
||||||
use CodeIgniter\Database\BaseBuilder;
|
use CodeIgniter\Database\BaseBuilder;
|
||||||
|
use Config\OrdenTrabajo;
|
||||||
|
|
||||||
class ChatModel extends Model
|
class ChatModel extends Model
|
||||||
{
|
{
|
||||||
@ -25,6 +27,7 @@ class ChatModel extends Model
|
|||||||
"chat_department_id",
|
"chat_department_id",
|
||||||
"presupuesto_id",
|
"presupuesto_id",
|
||||||
"factura_id",
|
"factura_id",
|
||||||
|
"orden_trabajo_id",
|
||||||
"title"
|
"title"
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -86,6 +89,10 @@ class ChatModel extends Model
|
|||||||
{
|
{
|
||||||
return $this->builder()->where("factura_id", $factura_id)->where("chat_department_id", $chat_department_id)->get()->getFirstRow();
|
return $this->builder()->where("factura_id", $factura_id)->where("chat_department_id", $chat_department_id)->get()->getFirstRow();
|
||||||
}
|
}
|
||||||
|
public function getChatOrdenTrabajo(int $chat_department_id, int $orden_trabajo_id)
|
||||||
|
{
|
||||||
|
return $this->builder()->where("orden_trabajo_id", $orden_trabajo_id)->where("chat_department_id", $chat_department_id)->get()->getFirstRow();
|
||||||
|
}
|
||||||
|
|
||||||
public function createChatPresupuesto(int $chat_department_id, int $presupuesto_id): int
|
public function createChatPresupuesto(int $chat_department_id, int $presupuesto_id): int
|
||||||
{
|
{
|
||||||
@ -123,6 +130,17 @@ class ChatModel extends Model
|
|||||||
"chat_department_id" => $chat_department_id
|
"chat_department_id" => $chat_department_id
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
public function createChatOrdenTrabajo(int $chat_department_id, int $orden_trabajo_id): int
|
||||||
|
{
|
||||||
|
$model = model(OrdenTrabajoModel::class);
|
||||||
|
$chatDeparmentModel = model(ChatDeparmentModel::class);
|
||||||
|
$ot = $model->find($orden_trabajo_id);
|
||||||
|
return $this->insert([
|
||||||
|
"title" => "[OT]".$ot->id . "[" . $chatDeparmentModel->getDisplay($chat_department_id) . "]",
|
||||||
|
"orden_trabajo_id" => $orden_trabajo_id,
|
||||||
|
"chat_department_id" => $chat_department_id
|
||||||
|
]);
|
||||||
|
}
|
||||||
public function createChatSingle(): int
|
public function createChatSingle(): int
|
||||||
{
|
{
|
||||||
return $this->insert(["chat_department_id" => null]);
|
return $this->insert(["chat_department_id" => null]);
|
||||||
@ -323,6 +341,7 @@ class ChatModel extends Model
|
|||||||
"chats.pedido_id as pedidoId",
|
"chats.pedido_id as pedidoId",
|
||||||
"chats.presupuesto_id as presupuestoId",
|
"chats.presupuesto_id as presupuestoId",
|
||||||
"chats.factura_id as facturaId",
|
"chats.factura_id as facturaId",
|
||||||
|
"chats.orden_trabajo_id as ordenTrabajoId",
|
||||||
"chats.title as chatDisplay",
|
"chats.title as chatDisplay",
|
||||||
"COUNT(chat_notifications.id) as unreadMessages"
|
"COUNT(chat_notifications.id) as unreadMessages"
|
||||||
])
|
])
|
||||||
@ -363,6 +382,13 @@ class ChatModel extends Model
|
|||||||
$row->title = $row->facturaId;
|
$row->title = $row->facturaId;
|
||||||
$rows_new[] = $row;
|
$rows_new[] = $row;
|
||||||
}
|
}
|
||||||
|
elseif ($row->ordenTrabajoId) {
|
||||||
|
// $row->model = $facturaModel->find($row->facturaId);
|
||||||
|
$row->uri = "/chat/ot/" . $row->ordenTrabajoId . "#accordionChatOrdenTrabajo";
|
||||||
|
$row->avatar = "OT";
|
||||||
|
$row->title = $row->ordenTrabajoId;
|
||||||
|
$rows_new[] = $row;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return $rows_new;
|
return $rows_new;
|
||||||
}
|
}
|
||||||
@ -374,6 +400,7 @@ class ChatModel extends Model
|
|||||||
"chats.chat_department_id as chatDepartmentId",
|
"chats.chat_department_id as chatDepartmentId",
|
||||||
"chats.pedido_id as pedidoId",
|
"chats.pedido_id as pedidoId",
|
||||||
"chats.presupuesto_id as presupuestoId",
|
"chats.presupuesto_id as presupuestoId",
|
||||||
|
"chats.orden_trabajo_id as ordenTrabajoId",
|
||||||
"chats.factura_id as facturaId",
|
"chats.factura_id as facturaId",
|
||||||
"chats.title as chatDisplay",
|
"chats.title as chatDisplay",
|
||||||
"COUNT(chat_messages.id) as unreadMessages"
|
"COUNT(chat_messages.id) as unreadMessages"
|
||||||
@ -413,6 +440,13 @@ class ChatModel extends Model
|
|||||||
$row->title = $row->facturaId;
|
$row->title = $row->facturaId;
|
||||||
$rows_new[] = $row;
|
$rows_new[] = $row;
|
||||||
}
|
}
|
||||||
|
elseif ($row->ordenTrabajoId) {
|
||||||
|
$row->uri = "/produccion/ordentrabajo/edit/" . $row->ordenTrabajoId . "#accordionChatOrdenTrabajo";
|
||||||
|
$row->avatar = "OT";
|
||||||
|
$row->chatDisplay .= "[INTERNAL]";
|
||||||
|
$row->title = $row->ordenTrabajoId;
|
||||||
|
$rows_new[] = $row;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return $rows_new;
|
return $rows_new;
|
||||||
}
|
}
|
||||||
@ -433,6 +467,7 @@ class ChatModel extends Model
|
|||||||
->where("chats.chat_department_id", null)
|
->where("chats.chat_department_id", null)
|
||||||
->where("chats.pedido_id", null)
|
->where("chats.pedido_id", null)
|
||||||
->where("chats.factura_id", null)
|
->where("chats.factura_id", null)
|
||||||
|
->where("chats.orden_trabajo_id", null)
|
||||||
->where("chat_notifications.viewed", false)
|
->where("chat_notifications.viewed", false)
|
||||||
->where("chat_notifications.user_id", auth()->user()->id);
|
->where("chat_notifications.user_id", auth()->user()->id);
|
||||||
$rows = $q->get()->getResultObject();
|
$rows = $q->get()->getResultObject();
|
||||||
@ -513,6 +548,27 @@ class ChatModel extends Model
|
|||||||
$data["users"] = $this->getChatUsers($chat_id);
|
$data["users"] = $this->getChatUsers($chat_id);
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
public function getChatInternalHebraOrdenTrabajo($chat_id, $orden_trabajo_id)
|
||||||
|
{
|
||||||
|
$data = [];
|
||||||
|
$query = $this->builder()->select([
|
||||||
|
"chats.id as chatId",
|
||||||
|
"chat_messages.message",
|
||||||
|
"users.username as senderUserName",
|
||||||
|
"chat_messages.created_at",
|
||||||
|
"CONCAT(users.first_name,' ',users.last_name) as senderFullName",
|
||||||
|
])
|
||||||
|
->join("chat_messages", "chat_messages.chat_id = chats.id", "left")
|
||||||
|
->join("users", "users.id = chat_messages.sender_id", "left")
|
||||||
|
->where("chats.id", $chat_id)
|
||||||
|
->where("chats.orden_trabajo_id", $orden_trabajo_id);
|
||||||
|
$data["chatId"] = $chat_id;
|
||||||
|
$data["messages"] = $query->get()->getResultObject();
|
||||||
|
$data["chatTitle"] = "OT" . "[" . $orden_trabajo_id . "] - ";
|
||||||
|
$data["chatTitle"] .= $this->find($chat_id)->title;
|
||||||
|
$data["users"] = $this->getChatUsers($chat_id);
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
public function getChatUsers(int $chat_id)
|
public function getChatUsers(int $chat_id)
|
||||||
{
|
{
|
||||||
$query = $this->builder()->select([
|
$query = $this->builder()->select([
|
||||||
@ -557,6 +613,17 @@ class ChatModel extends Model
|
|||||||
}
|
}
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
public function getOrdenTrabajoHebras($orden_trabajo_id): array
|
||||||
|
{
|
||||||
|
$data = [];
|
||||||
|
$chats = $this->builder()->select("chats.id as chatId")
|
||||||
|
->where("chats.chat_department_id", null)
|
||||||
|
->where("chats.orden_trabajo_id", $orden_trabajo_id)->get()->getResultObject();
|
||||||
|
foreach ($chats as $chat) {
|
||||||
|
$data[$chat->chatId] = $this->getChatInternalHebraOrdenTrabajo($chat->chatId, $orden_trabajo_id);
|
||||||
|
}
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
public function countUnreadMessagePresupuesto(int $presupuesto_id): int|string
|
public function countUnreadMessagePresupuesto(int $presupuesto_id): int|string
|
||||||
{
|
{
|
||||||
return $this->builder()->select()
|
return $this->builder()->select()
|
||||||
@ -586,6 +653,15 @@ class ChatModel extends Model
|
|||||||
->where("chat_notifications.viewed", false)
|
->where("chat_notifications.viewed", false)
|
||||||
->where("chat_notifications.user_id", auth()->user()->id)->countAllResults();
|
->where("chat_notifications.user_id", auth()->user()->id)->countAllResults();
|
||||||
}
|
}
|
||||||
|
public function countUnreadMessageOrdenTrabajo($orden_trabajo_id): int|string
|
||||||
|
{
|
||||||
|
return $this->builder()->select()
|
||||||
|
->join("chat_messages", "chat_messages.chat_id = chats.id", "left")
|
||||||
|
->join("chat_notifications", "chat_notifications.chat_message_id = chat_messages.id", "left")
|
||||||
|
->where("chats.orden_trabajo_id", $orden_trabajo_id)
|
||||||
|
->where("chat_notifications.viewed", false)
|
||||||
|
->where("chat_notifications.user_id", auth()->user()->id)->countAllResults();
|
||||||
|
}
|
||||||
public function countUnreadMessageDirectos(int $chat_id): int|string
|
public function countUnreadMessageDirectos(int $chat_id): int|string
|
||||||
{
|
{
|
||||||
return $this->builder()->select()
|
return $this->builder()->select()
|
||||||
@ -606,6 +682,7 @@ class ChatModel extends Model
|
|||||||
->where("chats.presupuesto_id", null)
|
->where("chats.presupuesto_id", null)
|
||||||
->where("chats.pedido_id", null)
|
->where("chats.pedido_id", null)
|
||||||
->where("chats.factura_id", null)
|
->where("chats.factura_id", null)
|
||||||
|
->where("chats.orden_trabajo_id", null)
|
||||||
->where("chats.id", $chat_id)
|
->where("chats.id", $chat_id)
|
||||||
->where("chat_messages.receiver_id", auth()->user()->id)->get()->getFirstRow();
|
->where("chat_messages.receiver_id", auth()->user()->id)->get()->getFirstRow();
|
||||||
$userModel = model(UserModel::class);
|
$userModel = model(UserModel::class);
|
||||||
@ -837,6 +914,36 @@ class ChatModel extends Model
|
|||||||
}
|
}
|
||||||
return $query->groupBy('chatMessageId');
|
return $query->groupBy('chatMessageId');
|
||||||
}
|
}
|
||||||
|
public function getQueryDatatableMessageOrdenTrabajo(int $user_id): BaseBuilder
|
||||||
|
{
|
||||||
|
$query = $this->builder()
|
||||||
|
->select([
|
||||||
|
"chats.id",
|
||||||
|
"cm.id as chatMessageId",
|
||||||
|
"u.id as userId",
|
||||||
|
"cm.message",
|
||||||
|
"chats.created_at",
|
||||||
|
"
|
||||||
|
(
|
||||||
|
SELECT cm2.updated_at
|
||||||
|
FROM chat_messages cm2
|
||||||
|
WHERE cm2.chat_id = chats.id
|
||||||
|
ORDER BY cm2.updated_at DESC LIMIT 1
|
||||||
|
) as updated_at",
|
||||||
|
"CONCAT(u.first_name,' ',u.last_name) as creator",
|
||||||
|
"chats.title",
|
||||||
|
])
|
||||||
|
->join("chat_messages cm", "chats.id = cm.chat_id", "left")
|
||||||
|
->join("users u", "u.id = cm.sender_id", 'left')
|
||||||
|
->join("ordenes_trabajo", "ordenes_trabajo.id = chats.orden_trabajo_id", "left")
|
||||||
|
->where("chats.orden_trabajo_id is NOT NULL", NULL, FALSE);
|
||||||
|
|
||||||
|
if (auth()->user()->inGroup("cliente-administrador","cliente")) {
|
||||||
|
$query->where('facturas.cliente_id', auth()->user()->cliente_id)
|
||||||
|
->where("chats.chat_department_id is NOT NULL", NULL, FALSE);
|
||||||
|
}
|
||||||
|
return $query->groupBy('chatMessageId');
|
||||||
|
}
|
||||||
public function createNewDirectChat(string $title, string $message, array $users)
|
public function createNewDirectChat(string $title, string $message, array $users)
|
||||||
{
|
{
|
||||||
$chatMessageModel = model(ChatMessageModel::class);
|
$chatMessageModel = model(ChatMessageModel::class);
|
||||||
|
|||||||
@ -151,7 +151,7 @@ class ClientePlantillaPreciosLineasModel extends \App\Models\BaseModel
|
|||||||
|
|
||||||
$builder->join("users t2", "t1.user_updated_id = t2.id", "left");
|
$builder->join("users t2", "t1.user_updated_id = t2.id", "left");
|
||||||
|
|
||||||
$builder->where('t1.deleted_at', 0);
|
$builder->where('t1.deleted_at', null);
|
||||||
$builder->where('t1.plantilla_id', $plantilla_id);
|
$builder->where('t1.plantilla_id', $plantilla_id);
|
||||||
|
|
||||||
if (empty($search))
|
if (empty($search))
|
||||||
|
|||||||
@ -388,7 +388,7 @@ class ClientePreciosModel extends \App\Models\BaseModel
|
|||||||
|
|
||||||
$builder->join("users t2", "t1.user_updated_id = t2.id", "left");
|
$builder->join("users t2", "t1.user_updated_id = t2.id", "left");
|
||||||
|
|
||||||
$builder->where('t1.deleted_at', 0);
|
$builder->where('t1.deleted_at', null);
|
||||||
$builder->where('t1.cliente_id', $cliente_id);
|
$builder->where('t1.cliente_id', $cliente_id);
|
||||||
|
|
||||||
if (empty($search))
|
if (empty($search))
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Models\Configuracion;
|
namespace App\Models\Configuracion;
|
||||||
|
|
||||||
class ImposicionModel extends \App\Models\BaseModel
|
class ImposicionModel extends \App\Models\BaseModel
|
||||||
@ -95,21 +96,37 @@ class ImposicionModel extends \App\Models\BaseModel
|
|||||||
return empty($search)
|
return empty($search)
|
||||||
? $builder
|
? $builder
|
||||||
: $builder
|
: $builder
|
||||||
->groupStart()
|
->groupStart()
|
||||||
->like("t1.id", $search)
|
->like("t1.id", $search)
|
||||||
->orlike("t1.ancho", $search)
|
->orlike("t1.ancho", $search)
|
||||||
->orLike("t1.alto", $search)
|
->orLike("t1.alto", $search)
|
||||||
->orLike("t1.unidades", $search)
|
->orLike("t1.unidades", $search)
|
||||||
->orLike("t1.orientacion", $search)
|
->orLike("t1.orientacion", $search)
|
||||||
->orLike("t1.maquina", $search)
|
->orLike("t1.maquina", $search)
|
||||||
->orLike("t1.etiqueta", $search)
|
->orLike("t1.etiqueta", $search)
|
||||||
->orlike("t1.id", $search)
|
->orlike("t1.id", $search)
|
||||||
->orLike("t1.ancho", $search)
|
->orLike("t1.ancho", $search)
|
||||||
->orLike("t1.alto", $search)
|
->orLike("t1.alto", $search)
|
||||||
->orLike("t1.unidades", $search)
|
->orLike("t1.unidades", $search)
|
||||||
->orLike("t1.orientacion", $search)
|
->orLike("t1.orientacion", $search)
|
||||||
->orLike("t1.maquina", $search)
|
->orLike("t1.maquina", $search)
|
||||||
->orLike("t1.etiqueta", $search)
|
->orLike("t1.etiqueta", $search)
|
||||||
->groupEnd();
|
->groupEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function querySelect(?string $q)
|
||||||
|
{
|
||||||
|
$query = $this->builder()->select([
|
||||||
|
"id",
|
||||||
|
"CONCAT(lg_imposiciones.ancho,'x',lg_imposiciones.alto,'_',COALESCE(lg_imposiciones.unidades,'NULL'),'_',COALESCE(lg_imposiciones.orientacion,'NULL')) as name",
|
||||||
|
"COALESCE(lg_imposiciones.etiqueta,'" . lang("Produccion.imposicion_no_label") . "') as description"
|
||||||
|
]);
|
||||||
|
if ($q) {
|
||||||
|
$query->orLike("CONCAT(lg_imposiciones.ancho,'x',lg_imposiciones.alto)", $q);
|
||||||
|
$query->orLike("lg_imposiciones.etiqueta", $q);
|
||||||
|
}
|
||||||
|
return $query
|
||||||
|
->orderBy('id', 'ASC')
|
||||||
|
->get()->getResultArray();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,7 @@ namespace App\Models\OrdenTrabajo;
|
|||||||
use App\Entities\Produccion\OrdenTrabajoDateEntity;
|
use App\Entities\Produccion\OrdenTrabajoDateEntity;
|
||||||
use CodeIgniter\Database\MySQLi\Builder;
|
use CodeIgniter\Database\MySQLi\Builder;
|
||||||
use CodeIgniter\Model;
|
use CodeIgniter\Model;
|
||||||
|
use Config\OrdenTrabajo;
|
||||||
|
|
||||||
class OrdenTrabajoDate extends Model
|
class OrdenTrabajoDate extends Model
|
||||||
{
|
{
|
||||||
@ -17,25 +18,36 @@ class OrdenTrabajoDate extends Model
|
|||||||
protected $allowedFields = [
|
protected $allowedFields = [
|
||||||
"orden_trabajo_id",
|
"orden_trabajo_id",
|
||||||
"fecha_entrada_at",
|
"fecha_entrada_at",
|
||||||
"fecha_entrega_at",
|
//IMPRESION
|
||||||
"fecha_entrega_real_at",
|
|
||||||
"fecha_entrega_change_at",
|
|
||||||
"fecha_impresion_at",
|
|
||||||
"fecha_encuadernado_at",
|
|
||||||
"fecha_externo_at",
|
|
||||||
"pendiente_ferro_at",
|
|
||||||
"ferro_en_cliente_at",
|
|
||||||
"ferro_ok_at",
|
|
||||||
"interior_bn_at",
|
"interior_bn_at",
|
||||||
"interior_color_at",
|
"interior_color_at",
|
||||||
"preparacion_interiores_at",
|
|
||||||
"cubierta_at",
|
"cubierta_at",
|
||||||
|
//ACABADO
|
||||||
"plastificado_at",
|
"plastificado_at",
|
||||||
"encuadernacion_at",
|
"encuadernacion_at",
|
||||||
"corte_at",
|
"corte_at",
|
||||||
|
"preparacion_interiores_at",
|
||||||
|
"entrada_manipulado_at",
|
||||||
|
"cosido_at",
|
||||||
|
"solapa_at",
|
||||||
|
"grapado_at",
|
||||||
|
"retractilado_at",
|
||||||
|
"retractilado5_at",
|
||||||
|
"prototipo_at",
|
||||||
|
"marcapaginas_at",
|
||||||
|
//FERRO
|
||||||
|
"pendiente_ferro_at",
|
||||||
|
"ferro_en_cliente_at",
|
||||||
|
"ferro_ok_at",
|
||||||
|
//ENVIO
|
||||||
"embalaje_at",
|
"embalaje_at",
|
||||||
"envio_at",
|
"envio_at",
|
||||||
"entrada_manipulado_at"
|
//PREIMPRESION
|
||||||
|
"pre_formato_at",
|
||||||
|
"pre_lomo_at",
|
||||||
|
"pre_solapa_at",
|
||||||
|
"pre_codbarras_at",
|
||||||
|
"pre_imposicion_at"
|
||||||
];
|
];
|
||||||
|
|
||||||
protected bool $allowEmptyInserts = false;
|
protected bool $allowEmptyInserts = false;
|
||||||
@ -103,22 +115,8 @@ class OrdenTrabajoDate extends Model
|
|||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
public function updateUserDateMap($orden_trabajo_id,$data){
|
public function updateUserDateMap($orden_trabajo_id,$data){
|
||||||
$mapping = [
|
$ordenTrabajoConfig = new OrdenTrabajo();
|
||||||
"fecha_encuadernado_at" => "encuadernacion_user_id",
|
$mapping = $ordenTrabajoConfig->DATE_USER_MAPPING;
|
||||||
// "fecha_externo_at" => "null",
|
|
||||||
"fecha_impresion_at" => null,
|
|
||||||
"pendiente_ferro_at" => "pendiente_ferro_user_id",
|
|
||||||
"ferro_en_cliente_at" => "ferro_en_cliente_user_id",
|
|
||||||
"ferro_ok_at" => "ferro_ok_user_id",
|
|
||||||
"interior_bn_at" => "interior_bn_user_id",
|
|
||||||
"interior_color_at" => "interior_color_user_id",
|
|
||||||
"preparacion_interiores_at" => "preparacion_interior_user_id",
|
|
||||||
"cubierta_at" => "cubierta_user_id",
|
|
||||||
"plastificado_at" => "plastificado_user_id",
|
|
||||||
"corte_at" => "corte_user_id",
|
|
||||||
"embalaje_at" => "embalaje_user_id",
|
|
||||||
"entrada_manipulado_at" => "entrada_manipulado_user_id"
|
|
||||||
];
|
|
||||||
$otUser = model(OrdenTrabajoUser::class);
|
$otUser = model(OrdenTrabajoUser::class);
|
||||||
$auth_user_id = auth()->user()->id;
|
$auth_user_id = auth()->user()->id;
|
||||||
foreach ($data as $key => $value) {
|
foreach ($data as $key => $value) {
|
||||||
|
|||||||
@ -82,7 +82,9 @@ class OrdenTrabajoModel extends Model
|
|||||||
"tipos_presupuestos.codigo as tipo_presupuesto_impresion",
|
"tipos_presupuestos.codigo as tipo_presupuesto_impresion",
|
||||||
"ordenes_trabajo.progreso",
|
"ordenes_trabajo.progreso",
|
||||||
"presupuesto_linea.tipo as presupuesto_linea_tipo",
|
"presupuesto_linea.tipo as presupuesto_linea_tipo",
|
||||||
"orden_trabajo_dates.ferro_ok_at"
|
"orden_trabajo_dates.ferro_ok_at",
|
||||||
|
"CONCAT(lg_imposiciones.ancho,'x',lg_imposiciones.alto,'_',COALESCE(lg_imposiciones.unidades,'NULL'),'_',COALESCE(lg_imposiciones.orientacion,'NULL')) as imposicion_name"
|
||||||
|
|
||||||
])
|
])
|
||||||
->join("orden_trabajo_dates","orden_trabajo_dates.orden_trabajo_id = ordenes_trabajo.id","left")
|
->join("orden_trabajo_dates","orden_trabajo_dates.orden_trabajo_id = ordenes_trabajo.id","left")
|
||||||
->join("pedidos","pedidos.id = ordenes_trabajo.pedido_id","left")
|
->join("pedidos","pedidos.id = ordenes_trabajo.pedido_id","left")
|
||||||
@ -92,6 +94,9 @@ class OrdenTrabajoModel extends Model
|
|||||||
->join("clientes","clientes.id = presupuestos.cliente_id","left")
|
->join("clientes","clientes.id = presupuestos.cliente_id","left")
|
||||||
->join("tipos_presupuestos","presupuestos.tipo_impresion_id = tipos_presupuestos.id","left")
|
->join("tipos_presupuestos","presupuestos.tipo_impresion_id = tipos_presupuestos.id","left")
|
||||||
->join("ubicaciones","ubicaciones.id = pedidos_linea.ubicacion_id","left")
|
->join("ubicaciones","ubicaciones.id = pedidos_linea.ubicacion_id","left")
|
||||||
|
->join("orden_trabajo_tareas","orden_trabajo_tareas.orden_trabajo_id = ordenes_trabajo.id","left")
|
||||||
|
->join("lg_imposiciones","lg_imposiciones.id = orden_trabajo_tareas.imposicion_id","left")
|
||||||
|
|
||||||
->whereIn("presupuesto_linea.tipo",["lp_bn","lp_bnhq","lp_rot_bn","lp_color","lp_colorhq","lp_rot_color"])
|
->whereIn("presupuesto_linea.tipo",["lp_bn","lp_bnhq","lp_rot_bn","lp_color","lp_colorhq","lp_rot_color"])
|
||||||
->where("ordenes_trabajo.deleted_at",null)
|
->where("ordenes_trabajo.deleted_at",null)
|
||||||
->groupBy("ordenes_trabajo.id");
|
->groupBy("ordenes_trabajo.id");
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
namespace App\Models\OrdenTrabajo;
|
namespace App\Models\OrdenTrabajo;
|
||||||
|
|
||||||
use App\Entities\Produccion\OrdenTrabajoUserEntity;
|
use App\Entities\Produccion\OrdenTrabajoUserEntity;
|
||||||
|
use App\Models\Usuarios\UserModel;
|
||||||
use CodeIgniter\Database\MySQLi\Builder;
|
use CodeIgniter\Database\MySQLi\Builder;
|
||||||
use CodeIgniter\Model;
|
use CodeIgniter\Model;
|
||||||
|
|
||||||
@ -18,28 +19,42 @@ class OrdenTrabajoUser extends Model
|
|||||||
"orden_trabajo_id",
|
"orden_trabajo_id",
|
||||||
"user_created_id",
|
"user_created_id",
|
||||||
"user_update_id",
|
"user_update_id",
|
||||||
"inaplazable_revised_change_user_id",
|
//IMPRESION
|
||||||
"ferro_disponible_hecho_user_id",
|
|
||||||
"ferro_disponible_ok_user_id",
|
|
||||||
"ferro_entregado_user_id",
|
|
||||||
"pendiente_ferro_user_id",
|
|
||||||
"ferro_en_cliente_user_id",
|
|
||||||
"ferro_ok_user_id",
|
|
||||||
"interior_bn_user_id",
|
"interior_bn_user_id",
|
||||||
"interior_color_user_id",
|
"interior_color_user_id",
|
||||||
"preparacion_interior_user_id",
|
|
||||||
"cubierta_user_id",
|
"cubierta_user_id",
|
||||||
|
//ACABADO
|
||||||
"plastificado_user_id",
|
"plastificado_user_id",
|
||||||
"encuadernacion_user_id",
|
"encuadernacion_user_id",
|
||||||
"corte_user_id",
|
"corte_user_id",
|
||||||
"embalaje_user_id",
|
"preparacion_interior_user_id",
|
||||||
"entrada_manipulado_user_id",
|
"entrada_manipulado_user_id",
|
||||||
|
"cosido_user_id",
|
||||||
|
"solapa_user_id",
|
||||||
|
"grapado_user_id",
|
||||||
|
"retractilado_user_id",
|
||||||
|
"retractilado5_user_id",
|
||||||
|
"prototipo_user_id",
|
||||||
|
"marcapaginas_user_id",
|
||||||
|
//FERRO
|
||||||
|
"pendiente_ferro_user_id",
|
||||||
|
"ferro_en_cliente_user_id",
|
||||||
|
"ferro_ok_user_id",
|
||||||
|
//ENVIO
|
||||||
|
"embalaje_user_id",
|
||||||
|
"envio_user_id",
|
||||||
|
//PREIMPRESION
|
||||||
"pre_formato_user_id",
|
"pre_formato_user_id",
|
||||||
"pre_lomo_user_id",
|
"pre_lomo_user_id",
|
||||||
"pre_solapa_user_id",
|
"pre_solapa_user_id",
|
||||||
"pre_codbarras_user_id",
|
"pre_codbarras_user_id",
|
||||||
"pre_imposicion_user_id",
|
"pre_imposicion_user_id",
|
||||||
"pre_imprimir_user_id"
|
//UNUSED
|
||||||
|
"inaplazable_revised_change_user_id",//!DELETE
|
||||||
|
"ferro_disponible_hecho_user_id",//!DELETE
|
||||||
|
"ferro_entregado_user_id",//!DELETE
|
||||||
|
"pre_imprimir_user_id", //!DELETE
|
||||||
|
"ferro_disponible_ok_user_id", //!DELETE
|
||||||
];
|
];
|
||||||
|
|
||||||
protected bool $allowEmptyInserts = false;
|
protected bool $allowEmptyInserts = false;
|
||||||
@ -73,5 +88,4 @@ class OrdenTrabajoUser extends Model
|
|||||||
protected $afterDelete = [];
|
protected $afterDelete = [];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,6 +40,7 @@ class ChatService extends BaseService
|
|||||||
"presupuesto" => "presupuesto_id",
|
"presupuesto" => "presupuesto_id",
|
||||||
"pedido" => "pedido_id",
|
"pedido" => "pedido_id",
|
||||||
"factura" => "factura_id",
|
"factura" => "factura_id",
|
||||||
|
"ot" => "orden_trabajo_id"
|
||||||
];
|
];
|
||||||
protected array $modelClassMap;
|
protected array $modelClassMap;
|
||||||
public function __construct()
|
public function __construct()
|
||||||
@ -122,6 +123,9 @@ class ChatService extends BaseService
|
|||||||
case 'factura':
|
case 'factura':
|
||||||
$r = $this->chatModel->createChatFactura($chatDepartmentId, $modelId);
|
$r = $this->chatModel->createChatFactura($chatDepartmentId, $modelId);
|
||||||
break;
|
break;
|
||||||
|
case 'ot':
|
||||||
|
$r = $this->chatModel->createChatOrdenTrabajo($chatDepartmentId, $modelId);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
namespace App\Services;
|
namespace App\Services;
|
||||||
|
|
||||||
use App\Entities\Clientes\ClienteEntity;
|
use App\Entities\Clientes\ClienteEntity;
|
||||||
|
use App\Entities\Configuracion\Imposicion;
|
||||||
use App\Entities\Pedidos\PedidoEntity;
|
use App\Entities\Pedidos\PedidoEntity;
|
||||||
use App\Entities\Presupuestos\PresupuestoEntity;
|
use App\Entities\Presupuestos\PresupuestoEntity;
|
||||||
use App\Entities\Presupuestos\PresupuestoLineaEntity;
|
use App\Entities\Presupuestos\PresupuestoLineaEntity;
|
||||||
@ -18,12 +19,14 @@ use App\Entities\Produccion\OrdenTrabajoTareaEntity;
|
|||||||
use App\Models\Configuracion\ConfigVariableModel;
|
use App\Models\Configuracion\ConfigVariableModel;
|
||||||
use App\Models\Configuracion\MaquinaModel;
|
use App\Models\Configuracion\MaquinaModel;
|
||||||
use App\Models\OrdenTrabajo\OrdenTrabajoFileModel;
|
use App\Models\OrdenTrabajo\OrdenTrabajoFileModel;
|
||||||
|
use App\Models\Pedidos\PedidoModel;
|
||||||
use App\Models\Usuarios\UserModel;
|
use App\Models\Usuarios\UserModel;
|
||||||
use CodeIgniter\Database\BaseBuilder;
|
use CodeIgniter\Database\BaseBuilder;
|
||||||
use CodeIgniter\Database\BaseResult;
|
use CodeIgniter\Database\BaseResult;
|
||||||
use CodeIgniter\Database\Exceptions\DatabaseException;
|
use CodeIgniter\Database\Exceptions\DatabaseException;
|
||||||
use CodeIgniter\HTTP\Files\UploadedFile;
|
use CodeIgniter\HTTP\Files\UploadedFile;
|
||||||
use CodeIgniter\I18n\Time;
|
use CodeIgniter\I18n\Time;
|
||||||
|
use Config\OrdenTrabajo;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -41,26 +44,13 @@ class ProductionService extends BaseService
|
|||||||
protected OrdenTrabajoUser $otUser;
|
protected OrdenTrabajoUser $otUser;
|
||||||
protected OrdenTrabajoEntity $ot;
|
protected OrdenTrabajoEntity $ot;
|
||||||
protected OrdenTrabajoFileModel $otFileModel;
|
protected OrdenTrabajoFileModel $otFileModel;
|
||||||
|
protected PedidoModel $pedidoModel;
|
||||||
protected UserModel $userModel;
|
protected UserModel $userModel;
|
||||||
protected string $defaultMaquinaCorteName = 'HT-1000';
|
protected string $defaultMaquinaCorteName = 'HT-1000';
|
||||||
protected MaquinaEntity $defaultMaquinaCorte;
|
protected MaquinaEntity $defaultMaquinaCorte;
|
||||||
protected MaquinaModel $maquinaModel;
|
protected MaquinaModel $maquinaModel;
|
||||||
protected array $MAPPING_DATE_USER = [
|
protected OrdenTrabajo $ordenTrabajoConfig;
|
||||||
"fecha_encuadernado_at" => "encuadernacion_user_id",
|
public string $statusColor;
|
||||||
// "fecha_externo_at" => "null",
|
|
||||||
"fecha_impresion_at" => null,
|
|
||||||
"pendiente_ferro_at" => "pendiente_ferro_user_id",
|
|
||||||
"ferro_en_cliente_at" => "ferro_en_cliente_user_id",
|
|
||||||
"ferro_ok_at" => "ferro_ok_user_id",
|
|
||||||
"interior_bn_at" => "interior_bn_user_id",
|
|
||||||
"interior_color_at" => "interior_color_user_id",
|
|
||||||
"preparacion_interiores_at" => "preparacion_interior_user_id",
|
|
||||||
"cubierta_at" => "cubierta_user_id",
|
|
||||||
"plastificado_at" => "plastificado_user_id",
|
|
||||||
"corte_at" => "corte_user_id",
|
|
||||||
"embalaje_at" => "embalaje_user_id",
|
|
||||||
"entrada_manipulado_at" => "entrada_manipulado_user_id"
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pedido Entity
|
* Pedido Entity
|
||||||
@ -83,16 +73,25 @@ class ProductionService extends BaseService
|
|||||||
$this->otUser = model(OrdenTrabajoUser::class);
|
$this->otUser = model(OrdenTrabajoUser::class);
|
||||||
$this->userModel = model(UserModel::class);
|
$this->userModel = model(UserModel::class);
|
||||||
$this->otFileModel = model(OrdenTrabajoFileModel::class);
|
$this->otFileModel = model(OrdenTrabajoFileModel::class);
|
||||||
|
$this->pedidoModel = model(PedidoModel::class);
|
||||||
|
$this->ordenTrabajoConfig = config('OrdenTrabajo');
|
||||||
|
$this->statusColor = $this->ordenTrabajoConfig->OT_COLORS["sin_imprimir"];
|
||||||
}
|
}
|
||||||
public function init(int $orden_trabajo_id): self
|
public function init(int $orden_trabajo_id): self
|
||||||
{
|
{
|
||||||
$this->maquinaModel = model(MaquinaModel::class);
|
try {
|
||||||
$this->otModel = model(OrdenTrabajoModel::class);
|
//code...
|
||||||
$this->ot = $this->otModel->find($orden_trabajo_id);
|
$this->maquinaModel = model(MaquinaModel::class);
|
||||||
$pedido = $this->ot->pedido();
|
$this->otModel = model(OrdenTrabajoModel::class);
|
||||||
$this->setPedido($pedido);
|
$this->ot = $this->otModel->find($orden_trabajo_id);
|
||||||
$this->defaultMaquinaCorte = $this->maquinaModel->where('nombre', $this->defaultMaquinaCorteName)->first();
|
$pedido = $this->ot->pedido();
|
||||||
return $this;
|
$this->setPedido($pedido);
|
||||||
|
$this->defaultMaquinaCorte = $this->maquinaModel->where('nombre', $this->defaultMaquinaCorteName)->first();
|
||||||
|
$this->statusColor = $this->ordenTrabajoConfig->OT_COLORS["sin_imprimir"];
|
||||||
|
return $this;
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
throw $th;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Establece el pedido sobre el que se va a trabajar
|
* Establece el pedido sobre el que se va a trabajar
|
||||||
@ -141,10 +140,10 @@ class ProductionService extends BaseService
|
|||||||
];
|
];
|
||||||
$id = $this->otModel->insert($data);
|
$id = $this->otModel->insert($data);
|
||||||
$this->init($id);
|
$this->init($id);
|
||||||
$this->updatePedidoEspera();
|
|
||||||
$this->storeOrdenTrabajoUsers();
|
$this->storeOrdenTrabajoUsers();
|
||||||
$this->storeOrdenTrabajoDates();
|
$this->storeOrdenTrabajoDates();
|
||||||
$this->storeAllTareas();
|
$this->storeAllTareas();
|
||||||
|
$this->updatePedidoEspera();
|
||||||
return $this->ot;
|
return $this->ot;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,6 +176,24 @@ class ProductionService extends BaseService
|
|||||||
"orden_trabajo_id" => $this->ot->id,
|
"orden_trabajo_id" => $this->ot->id,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
public function reInsertOrdenTrabajoUsers(): int|bool|string
|
||||||
|
{
|
||||||
|
$status = false;
|
||||||
|
if($this->otUser->where('orden_trabajo_id',$this->ot->id)->countAllResults() == 0)
|
||||||
|
{
|
||||||
|
$status = $this->storeOrdenTrabajoUsers();
|
||||||
|
}
|
||||||
|
return $status;
|
||||||
|
}
|
||||||
|
public function reInsertOrdenTrabajoDates(): int|bool|string
|
||||||
|
{
|
||||||
|
$status = false;
|
||||||
|
if($this->otDate->where('orden_trabajo_id',$this->ot->id)->countAllResults() == 0)
|
||||||
|
{
|
||||||
|
$status = $this->storeOrdenTrabajoDates();
|
||||||
|
}
|
||||||
|
return $status;
|
||||||
|
}
|
||||||
protected function storeAllTareas()
|
protected function storeAllTareas()
|
||||||
{
|
{
|
||||||
$this->storeOrdenTrabajoTareas();
|
$this->storeOrdenTrabajoTareas();
|
||||||
@ -414,9 +431,12 @@ class ProductionService extends BaseService
|
|||||||
"orden_trabajo_tareas.maquina_id as maquina_tarea",
|
"orden_trabajo_tareas.maquina_id as maquina_tarea",
|
||||||
"lg_maquinas.nombre as maquina_nombre",
|
"lg_maquinas.nombre as maquina_nombre",
|
||||||
"lg_imposiciones.id as imposicion_id",
|
"lg_imposiciones.id as imposicion_id",
|
||||||
|
"CONCAT(lg_imposiciones.ancho,'x',lg_imposiciones.alto,'_',COALESCE(lg_imposiciones.unidades,'NULL'),'_',COALESCE(lg_imposiciones.orientacion,'NULL'),'_',COALESCE(lg_imposiciones.etiqueta,'')) as imposicion_name",
|
||||||
"orden_trabajo_tareas.tiempo_estimado",
|
"orden_trabajo_tareas.tiempo_estimado",
|
||||||
"orden_trabajo_tareas.tiempo_real",
|
"orden_trabajo_tareas.tiempo_real",
|
||||||
"orden_trabajo_tareas.comment",
|
"orden_trabajo_tareas.comment",
|
||||||
|
"orden_trabajo_tareas.presupuesto_linea_id",
|
||||||
|
"presupuesto_linea.tipo",
|
||||||
|
|
||||||
])
|
])
|
||||||
->join("orden_trabajo_tareas", "orden_trabajo_tareas.orden_trabajo_id = ordenes_trabajo.id", "left")
|
->join("orden_trabajo_tareas", "orden_trabajo_tareas.orden_trabajo_id = ordenes_trabajo.id", "left")
|
||||||
@ -623,6 +643,7 @@ class ProductionService extends BaseService
|
|||||||
"pedido" => $this->pedido,
|
"pedido" => $this->pedido,
|
||||||
"presupuesto" => $this->presupuesto,
|
"presupuesto" => $this->presupuesto,
|
||||||
"dates" => $this->ot->dates(),
|
"dates" => $this->ot->dates(),
|
||||||
|
"user_dates" => $this->userDates(),
|
||||||
"tasks" => $this->ot->tareas(),
|
"tasks" => $this->ot->tareas(),
|
||||||
"acabados" => $this->presupuesto->acabados(),
|
"acabados" => $this->presupuesto->acabados(),
|
||||||
"preimpresiones" => $this->presupuesto->preimpresiones(),
|
"preimpresiones" => $this->presupuesto->preimpresiones(),
|
||||||
@ -635,6 +656,8 @@ class ProductionService extends BaseService
|
|||||||
"tareas_encuadernacion" => $this->tareas_encuadernacion(),
|
"tareas_encuadernacion" => $this->tareas_encuadernacion(),
|
||||||
"tareas_preimpresion" => $this->tareas_preimpresion(),
|
"tareas_preimpresion" => $this->tareas_preimpresion(),
|
||||||
"tareas_impresion" => $this->tareas_impresion(),
|
"tareas_impresion" => $this->tareas_impresion(),
|
||||||
|
"tiempo_procesamiento" => $this->getTiempoProcesamientoHHMM(),
|
||||||
|
"statusColor" => $this->getOtColorStatus(),
|
||||||
];
|
];
|
||||||
return $summary;
|
return $summary;
|
||||||
}
|
}
|
||||||
@ -657,39 +680,55 @@ class ProductionService extends BaseService
|
|||||||
"linea_impresion" => $this->presupuesto->presupuestoLineaImpresion(),
|
"linea_impresion" => $this->presupuesto->presupuestoLineaImpresion(),
|
||||||
"linea_cubierta" => $this->presupuesto->presupuestoLineaCubierta(),
|
"linea_cubierta" => $this->presupuesto->presupuestoLineaCubierta(),
|
||||||
"peso_unidad" => $logistica_data["peso_unidad"],
|
"peso_unidad" => $logistica_data["peso_unidad"],
|
||||||
"peso_pedido" => $logistica_data["peso_pedido"]
|
"peso_pedido" => $logistica_data["peso_pedido"],
|
||||||
|
"imposicion" => $this->getImposicionTareaImpresion(),
|
||||||
|
"tiempo_procesamiento" => $this->getTiempoProcesamientoHHMM(),
|
||||||
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
public function getTareaImpresionSobreCubierta(): array
|
public function getImposicionTareaImpresion(): ?Imposicion
|
||||||
|
{
|
||||||
|
$imposicion = null;
|
||||||
|
$impresionInteriorBnImposicion = $this->getTareaImpresionInteriorBn()?->imposicion();
|
||||||
|
$impresionInteriorColorImposicion = $this->getTareaImpresionInteriorColor()?->imposicion();
|
||||||
|
if ($impresionInteriorBnImposicion) {
|
||||||
|
$imposicion = $impresionInteriorBnImposicion;
|
||||||
|
}
|
||||||
|
if ($impresionInteriorColorImposicion) {
|
||||||
|
$imposicion = $impresionInteriorColorImposicion;
|
||||||
|
}
|
||||||
|
return $imposicion;
|
||||||
|
}
|
||||||
|
public function getTareaImpresionSobreCubierta(): ?OrdenTrabajoTareaEntity
|
||||||
{
|
{
|
||||||
$q = $this->otTarea->select('orden_trabajo_tareas.*')
|
$q = $this->otTarea->select('orden_trabajo_tareas.*')
|
||||||
->join("presupuesto_linea", "presupuesto_linea.id = orden_trabajo_tareas.presupuesto_linea_id", "left")
|
->join("presupuesto_linea", "presupuesto_linea.id = orden_trabajo_tareas.presupuesto_linea_id", "left")
|
||||||
->where("orden_trabajo_tareas.orden_trabajo_id", $this->ot->id)
|
->where("orden_trabajo_tareas.orden_trabajo_id", $this->ot->id)
|
||||||
->whereIn("presupuesto_linea.tipo", ["lp_sobrecubierta"])->findAll();
|
->whereIn("presupuesto_linea.tipo", ["lp_sobrecubierta"])->first();
|
||||||
return $q;
|
return $q;
|
||||||
}
|
}
|
||||||
public function getTareaImpresionCubierta(): array
|
public function getTareaImpresionCubierta(): ?OrdenTrabajoTareaEntity
|
||||||
{
|
{
|
||||||
$q = $this->otTarea->select('orden_trabajo_tareas.*')
|
$q = $this->otTarea->select('orden_trabajo_tareas.*')
|
||||||
->join("presupuesto_linea", "presupuesto_linea.id = orden_trabajo_tareas.presupuesto_linea_id", "left")
|
->join("presupuesto_linea", "presupuesto_linea.id = orden_trabajo_tareas.presupuesto_linea_id", "left")
|
||||||
->where("orden_trabajo_tareas.orden_trabajo_id", $this->ot->id)
|
->where("orden_trabajo_tareas.orden_trabajo_id", $this->ot->id)
|
||||||
->whereIn("presupuesto_linea.tipo", ["lp_cubierta"])->findAll();
|
->whereIn("presupuesto_linea.tipo", ["lp_cubierta"])->first();
|
||||||
return $q;
|
return $q;
|
||||||
}
|
}
|
||||||
public function getTareaImpresionInteriorBn(): array
|
public function getTareaImpresionInteriorBn(): ?OrdenTrabajoTareaEntity
|
||||||
{
|
{
|
||||||
$q = $this->otTarea->select('orden_trabajo_tareas.*')
|
$q = $this->otTarea->select('orden_trabajo_tareas.*')
|
||||||
->join("presupuesto_linea", "presupuesto_linea.id = orden_trabajo_tareas.presupuesto_linea_id", "left")
|
->join("presupuesto_linea", "presupuesto_linea.id = orden_trabajo_tareas.presupuesto_linea_id", "left")
|
||||||
->where("orden_trabajo_tareas.orden_trabajo_id", $this->ot->id)
|
->where("orden_trabajo_tareas.orden_trabajo_id", $this->ot->id)
|
||||||
->whereIn("presupuesto_linea.tipo", ["lp_rot_bn", "lp_bn", "lp_bnhq"])->findAll();
|
->whereIn("presupuesto_linea.tipo", ["lp_rot_bn", "lp_bn", "lp_bnhq"])->first();
|
||||||
return $q;
|
return $q;
|
||||||
}
|
}
|
||||||
public function getTareaImpresionInteriorColor(): array
|
public function getTareaImpresionInteriorColor(): ?OrdenTrabajoTareaEntity
|
||||||
{
|
{
|
||||||
$q = $this->otTarea->select('orden_trabajo_tareas.*')
|
$q = $this->otTarea->select('orden_trabajo_tareas.*')
|
||||||
->join("presupuesto_linea", "presupuesto_linea.id = orden_trabajo_tareas.presupuesto_linea_id", "left")
|
->join("presupuesto_linea", "presupuesto_linea.id = orden_trabajo_tareas.presupuesto_linea_id", "left")
|
||||||
->where("orden_trabajo_tareas.orden_trabajo_id", $this->ot->id)
|
->where("orden_trabajo_tareas.orden_trabajo_id", $this->ot->id)
|
||||||
->whereIn("presupuesto_linea.tipo", ["lp_rot_color", "lp_color", "lp_colorhq"])->findAll();
|
->whereIn("presupuesto_linea.tipo", ["lp_rot_color", "lp_color", "lp_colorhq"])->first();
|
||||||
return $q;
|
return $q;
|
||||||
}
|
}
|
||||||
public function getPresupuestoLineaImpresion() {}
|
public function getPresupuestoLineaImpresion() {}
|
||||||
@ -735,12 +774,12 @@ class ProductionService extends BaseService
|
|||||||
{
|
{
|
||||||
$result = [];
|
$result = [];
|
||||||
$otDate = $this->otDate->where('orden_trabajo_id', $this->ot->id)
|
$otDate = $this->otDate->where('orden_trabajo_id', $this->ot->id)
|
||||||
->set([$data['name'] => $data[$data['name']]])
|
->set($data['name'],$data[$data['name']])
|
||||||
->update($data);
|
->update();
|
||||||
$this->otDate->updateUserDateMap($this->ot->id, $data);
|
$this->otDate->updateUserDateMap($this->ot->id, $data);
|
||||||
$ot_users = $this->ot->users();
|
$ot_users = $this->ot->users();
|
||||||
if (isset($this->MAPPING_DATE_USER[$data["name"]])) {
|
if (isset($this->ordenTrabajoConfig->DATE_USER_MAPPING[$data["name"]])) {
|
||||||
$user_id = $ot_users->{$this->MAPPING_DATE_USER[$data["name"]]};
|
$user_id = $ot_users->{$this->ordenTrabajoConfig->DATE_USER_MAPPING[$data["name"]]};
|
||||||
$user = $this->userModel->find($user_id);
|
$user = $this->userModel->find($user_id);
|
||||||
if ($user_id) {
|
if ($user_id) {
|
||||||
$result = ["user" => null, "status" => false];
|
$result = ["user" => null, "status" => false];
|
||||||
@ -749,16 +788,45 @@ class ProductionService extends BaseService
|
|||||||
} else {
|
} else {
|
||||||
$result = ["user" => null, "status" => false];
|
$result = ["user" => null, "status" => false];
|
||||||
}
|
}
|
||||||
|
$this->updateProgress();
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
public function updateOrdenTrabajoPedidoDate($data): array
|
||||||
|
{
|
||||||
|
$status = false;
|
||||||
|
$user = auth()->user();
|
||||||
|
$row = [];
|
||||||
|
$pedidoDatesUser = $this->ordenTrabajoConfig->DATE_USER_MAPPING_PEDIDO;
|
||||||
|
$attrPedido = $data["name"];
|
||||||
|
if (isset($pedidoDatesUser[$attrPedido])) {
|
||||||
|
$row[$attrPedido] = Time::createFromFormat("Y-m-d", $data[$attrPedido])->format('Y-m-d 00:00:00');
|
||||||
|
$attrUserPedido = $pedidoDatesUser[$attrPedido];
|
||||||
|
$row[$attrUserPedido] = $user->id;
|
||||||
|
$status = $this->pedidoModel->update($this->pedido->id, $row);
|
||||||
|
$this->updateProgress();
|
||||||
|
} else {
|
||||||
|
throw new Exception(lang('Produccion.errors.attr_not_exist', [$attrPedido]));
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
"user" => $user,
|
||||||
|
"status" => $status
|
||||||
|
];
|
||||||
|
}
|
||||||
public function updateOrdenTrabajo($data): bool
|
public function updateOrdenTrabajo($data): bool
|
||||||
{
|
{
|
||||||
if(isset($data["is_pedido_espera"])){
|
if (isset($data["is_pedido_espera"])) {
|
||||||
$data["pedido_espera_by"] = auth()->user()->id;
|
$data["pedido_espera_by"] = auth()->user()->id;
|
||||||
}
|
}
|
||||||
return $this->otModel->update($this->ot->id, $data);
|
return $this->otModel->update($this->ot->id, $data);
|
||||||
}
|
}
|
||||||
|
public function updateOrdenTrabajoPedido($data)
|
||||||
|
{
|
||||||
|
if (isset($data["inaplazable"])) {
|
||||||
|
$data[$this->ordenTrabajoConfig->DATE_USER_MAPPING_PEDIDO["inaplazable"]] = auth()->user()->id;
|
||||||
|
}
|
||||||
|
return $this->pedidoModel->update($this->pedido->id, $data);
|
||||||
|
}
|
||||||
/**========================================================================
|
/**========================================================================
|
||||||
* RELATION METHODS
|
* RELATION METHODS
|
||||||
*========================================================================**/
|
*========================================================================**/
|
||||||
@ -1012,8 +1080,143 @@ class ProductionService extends BaseService
|
|||||||
$status = false;
|
$status = false;
|
||||||
$presupuestoFiles = $this->presupuesto->files();
|
$presupuestoFiles = $this->presupuesto->files();
|
||||||
if (count($presupuestoFiles) == 0) {
|
if (count($presupuestoFiles) == 0) {
|
||||||
$status = $this->otModel->update($this->ot->id, ['pedido_espera' => true]);
|
$status = $this->otModel->update($this->ot->id, ['is_pedido_espera' => true]);
|
||||||
}
|
}
|
||||||
return $status;
|
return $status;
|
||||||
}
|
}
|
||||||
|
public function userDates(): array
|
||||||
|
{
|
||||||
|
$userDates = [];
|
||||||
|
foreach ($this->ordenTrabajoConfig->DATE_USER_MAPPING as $key => $value) {
|
||||||
|
$otUserEntity = $this->otUser->where("orden_trabajo_id", $this->ot->id)->first();
|
||||||
|
$userEntity = $otUserEntity->userBy($value);
|
||||||
|
if ($userEntity) {
|
||||||
|
$userDates[$key] = $userEntity->full_name;
|
||||||
|
} else {
|
||||||
|
$userDates[$key] = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $userDates;
|
||||||
|
}
|
||||||
|
public function pedidoUserDates(): array
|
||||||
|
{
|
||||||
|
$pedidoUserDates = [];
|
||||||
|
foreach ($this->ordenTrabajoConfig->DATE_USER_MAPPING_PEDIDO as $key => $value) {
|
||||||
|
$userEntity = $this->pedido->userBy($value);
|
||||||
|
if ($userEntity) {
|
||||||
|
$pedidoUserDates[$key] = $userEntity->full_name;
|
||||||
|
} else {
|
||||||
|
$pedidoUserDates[$key] = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $pedidoUserDates;
|
||||||
|
}
|
||||||
|
public function getTiempoProcesamientoHHMM(): string
|
||||||
|
{
|
||||||
|
$time_tareas_seconds = array_map(fn($q) => $q->tiempo_estimado ?? 0, $this->ot->tareas());
|
||||||
|
$seconds = array_sum($time_tareas_seconds);
|
||||||
|
return float_seconds_to_hhmm_string($seconds);
|
||||||
|
}
|
||||||
|
public function updateProgress(): bool
|
||||||
|
{
|
||||||
|
$userDates = $this->ordenTrabajoConfig->DATE_USER_MAPPING;
|
||||||
|
$pedidoUserDates = $this->ordenTrabajoConfig->DATE_USER_MAPPING_PEDIDO;
|
||||||
|
|
||||||
|
$fill_dates = 0;
|
||||||
|
$status = false;
|
||||||
|
$total = count($userDates) + count($pedidoUserDates);
|
||||||
|
if ($this->ot->estado != "F") {
|
||||||
|
foreach ($userDates as $key => $value) {
|
||||||
|
if ($this->ot->dates()->{$key} != null) $fill_dates++;
|
||||||
|
}
|
||||||
|
foreach ($pedidoUserDates as $key => $value) {
|
||||||
|
if ($this->pedido->{$key} != null) $fill_dates++;
|
||||||
|
}
|
||||||
|
|
||||||
|
$progreso = (float) $fill_dates / $total * 100;
|
||||||
|
$status = $this->otModel->update($this->ot->id, ["progreso" => round($progreso, 2)]);
|
||||||
|
} else {
|
||||||
|
$status = $this->otModel->update($this->ot->id, ["progreso" => 100]);
|
||||||
|
}
|
||||||
|
return $status;
|
||||||
|
}
|
||||||
|
public function getOtColorStatus(): string
|
||||||
|
{
|
||||||
|
if($this->ot->dates()){
|
||||||
|
$this->updateColor();
|
||||||
|
}
|
||||||
|
return $this->statusColor;
|
||||||
|
}
|
||||||
|
protected function otSinImprimirColor()
|
||||||
|
{
|
||||||
|
if ($this->ot->dates()->sinImprimirStatus()) {
|
||||||
|
$this->statusColor = $this->ordenTrabajoConfig->OT_COLORS["sin_imprimir"];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
protected function otImpresionIntColor()
|
||||||
|
{
|
||||||
|
if ($this->ot->dates()->impresionInteriorStatus()) {
|
||||||
|
$this->statusColor = $this->ordenTrabajoConfig->OT_COLORS["impreso_int"];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
protected function otImpresionCubiertaColor()
|
||||||
|
{
|
||||||
|
if ($this->ot->dates()->impresionCubiertaStatus()) {
|
||||||
|
$this->statusColor = $this->ordenTrabajoConfig->OT_COLORS["impreso_cub"];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
protected function otPlastificadoColor()
|
||||||
|
{
|
||||||
|
if ($this->ot->dates()->plastificadoStatus()) {
|
||||||
|
$this->statusColor = $this->ordenTrabajoConfig->OT_COLORS["plastificado"];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
protected function otSolapaColor()
|
||||||
|
{
|
||||||
|
if ($this->ot->dates()->solapaStatus()) {
|
||||||
|
$this->statusColor = $this->ordenTrabajoConfig->OT_COLORS["solapa"];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
protected function otEncuadernadoColor()
|
||||||
|
{
|
||||||
|
if ($this->ot->dates()->encuadernadoStatus()) {
|
||||||
|
$this->statusColor = $this->ordenTrabajoConfig->OT_COLORS["encuadernado"];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
protected function otPreparadoColor()
|
||||||
|
{
|
||||||
|
if ($this->ot->dates()->preparacionInterioresStatus()) {
|
||||||
|
$this->statusColor = $this->ordenTrabajoConfig->OT_COLORS["preparado"];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
protected function otCorteColor()
|
||||||
|
{
|
||||||
|
if ($this->ot->dates()->corteStatus()) {
|
||||||
|
$this->statusColor = $this->ordenTrabajoConfig->OT_COLORS["corte"];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
protected function otCosidoColor()
|
||||||
|
{
|
||||||
|
if ($this->ot->dates()->cosidoStatus()) {
|
||||||
|
$this->statusColor = $this->ordenTrabajoConfig->OT_COLORS["cosido"];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
protected function otGrapadoColor()
|
||||||
|
{
|
||||||
|
if ($this->ot->dates()->grapadoStatus()) {
|
||||||
|
$this->statusColor = $this->ordenTrabajoConfig->OT_COLORS["grapado"];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
protected function updateColor(){
|
||||||
|
$this->otSinImprimirColor();
|
||||||
|
$this->otImpresionIntColor();
|
||||||
|
$this->otCosidoColor();
|
||||||
|
$this->otImpresionCubiertaColor();
|
||||||
|
$this->otPlastificadoColor();
|
||||||
|
$this->otSolapaColor();
|
||||||
|
$this->otPreparadoColor();
|
||||||
|
$this->otGrapadoColor();
|
||||||
|
$this->otEncuadernadoColor();
|
||||||
|
$this->otCorteColor();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,41 @@
|
|||||||
|
<div class="accordion accordion-bordered mt-3" id="accordionChatOrdenTrabajo">
|
||||||
|
<div class="card accordion-item">
|
||||||
|
<h2 class="accordion-header" id="headingChatOrdenTrabajo">
|
||||||
|
<button type="button" class="accordion-button collapsed" data-bs-toggle="collapse"
|
||||||
|
data-bs-target="#accordionChatOrdenTrabajoTip" aria-expanded="false"
|
||||||
|
aria-controls="accordionChatOrdenTrabajoTip">
|
||||||
|
<div class="d-flex flex-row justify-content-start align-items-stretch gap-2">
|
||||||
|
<span><i class="ti-messages ti-md ti"></i></span>
|
||||||
|
<h4><?= lang("Chat.chat") ?></h4>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
</h2>
|
||||||
|
<div id="accordionChatOrdenTrabajoTip" class="accordion-collapse collapse"
|
||||||
|
data-bs-parent="#accordionChatOrdenTrabajo">
|
||||||
|
<div class="accordion-body">
|
||||||
|
<div class="nav-align-top">
|
||||||
|
<ul class="nav nav-pills mb-4" role="tablist">
|
||||||
|
<li class="nav-item">
|
||||||
|
<button type="button" class="nav-link <?= !auth()->user()->inGroup('cliente-administrador','cliente') ? "" : "active" ?>" role="tab" data-bs-toggle="tab" data-bs-target="#navs-pills-top-chat" aria-controls="navs-pills-top-internal-chat" aria-selected="false"><?= lang('Chat.messages_client') ?></button>
|
||||||
|
</li>
|
||||||
|
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')) { ?>
|
||||||
|
<li class="nav-item">
|
||||||
|
<button type="button" class="nav-link active" role="tab" data-bs-toggle="tab" data-bs-target="#navs-pills-top-internal-messages" aria-controls="navs-pills-top-internal-messages" aria-selected="false"><?= lang('Chat.messages_internal') ?></button>
|
||||||
|
</li>
|
||||||
|
<?php } ?>
|
||||||
|
</ul>
|
||||||
|
<div class="tab-content">
|
||||||
|
<div class="tab-pane fade <?= !auth()->user()->inGroup('cliente-administrador','cliente') ? "" : "show active" ?>" id="navs-pills-top-chat" role="tabpanel">
|
||||||
|
<?= view("themes/vuexy/components/chat_orden_trabajo", data: ["modelId" => $modelId, "type" => "ot"]) ?>
|
||||||
|
</div>
|
||||||
|
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')) { ?>
|
||||||
|
<div class="tab-pane fade show active" id="navs-pills-top-internal-messages" role="tabpanel">
|
||||||
|
<?= view("themes/vuexy/components/internal_messages", data: ["modelId" => $modelId, "type" => "ot"]) ?>
|
||||||
|
</div>
|
||||||
|
<?php } ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
156
ci4/app/Views/themes/vuexy/components/chat_orden_trabajo.php
Normal file
156
ci4/app/Views/themes/vuexy/components/chat_orden_trabajo.php
Normal file
@ -0,0 +1,156 @@
|
|||||||
|
<div class="container-xxl flex-grow-1 container-p-y" id="chat-orden-trabajo" data-id="<?= $modelId ?>">
|
||||||
|
|
||||||
|
<div class="app-chat card overflow-hidden border">
|
||||||
|
<div class="row g-0">
|
||||||
|
<!-- Chat & Contacts -->
|
||||||
|
<div class="col app-chat-contacts app-sidebar flex-grow-0 overflow-hidden border-end"
|
||||||
|
id="app-chat-contacts">
|
||||||
|
<div class="sidebar-header">
|
||||||
|
<div class="d-flex align-items-center me-3 me-lg-0">
|
||||||
|
<div class="flex-shrink-0 avatar me-3">
|
||||||
|
<span class="avatar-initial rounded-circle bg-label-success">U</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex-grow-1 input-group input-group-merge rounded-pill">
|
||||||
|
<span class="input-group-text" id="basic-addon-search31">
|
||||||
|
<i class="ti ti-search"></i>
|
||||||
|
</span>
|
||||||
|
<input type="text" class="form-control chat-search-input"
|
||||||
|
placeholder="Buscar..." aria-label="Buscar..."
|
||||||
|
aria-describedby="basic-addon-search31" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<i class="ti ti-x cursor-pointer d-lg-none d-block position-absolute mt-2 me-1 top-0 end-0"
|
||||||
|
data-overlay data-bs-toggle="sidebar" data-target="#app-chat-contacts"></i>
|
||||||
|
</div>
|
||||||
|
<hr class="container-m-nx m-0" />
|
||||||
|
<div class="sidebar-body">
|
||||||
|
<div class="chat-contact-list-item-title">
|
||||||
|
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')): ?>
|
||||||
|
<div class="mb-0 px-4 pt-3 pb-2">
|
||||||
|
<select class="form-control chat-search-client"></select>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="chat-contact-list-item-title">
|
||||||
|
<h5 class="text-primary mb-0 px-4 pt-3 pb-2">Departamentos</h5>
|
||||||
|
</div>
|
||||||
|
<!-- Chats -->
|
||||||
|
<ul class="list-unstyled chat-contact-list" id="chat-list">
|
||||||
|
|
||||||
|
|
||||||
|
<!-- CHAT LIST -->
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /Chat contacts -->
|
||||||
|
|
||||||
|
<!-- Chat History -->
|
||||||
|
<div class="col app-chat-history bg-body">
|
||||||
|
<div class="chat-history-wrapper ">
|
||||||
|
<div class="chat-history-header border-bottom">
|
||||||
|
<div class="d-flex justify-content-between align-items-center">
|
||||||
|
<div class="d-flex overflow-hidden align-items-center">
|
||||||
|
<i class="ti ti-menu-2 ti-sm cursor-pointer d-lg-none d-block me-2"
|
||||||
|
data-bs-toggle="sidebar" data-overlay
|
||||||
|
data-target="#app-chat-contacts"></i>
|
||||||
|
<div class="avatar d-block flex-shrink-0">
|
||||||
|
<span
|
||||||
|
class="avatar-initial rounded-circle bg-label-primary">P</span>
|
||||||
|
</div>
|
||||||
|
<div class="chat-contact-info flex-grow-1 ms-2">
|
||||||
|
<h6 class="m-0"></h6>
|
||||||
|
<small class="user-status text-muted"></small>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="d-flex align-items-center">
|
||||||
|
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')): ?>
|
||||||
|
|
||||||
|
<div class="ml-2 px-2">
|
||||||
|
<button type="button" class="btn btn-danger btn-sm exit-chat">
|
||||||
|
<i class="ti ti-trash"></i>
|
||||||
|
<?= lang('Chat.exit_chat') ?>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="ml-2 px-2">
|
||||||
|
<button type="button" class="btn btn-success btn-sm subscribe-chat">
|
||||||
|
<i class="ti ti-plus"></i>
|
||||||
|
<?= lang('Chat.subscribe_chat') ?>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
<div class="dropdown d-flex align-self-center ml-2 px-2 d-none" id="chat-header-dropdown-users">
|
||||||
|
<button type="button" class="btn btn-primary btn-icon rounded-pill dropdown-toggle hide-arrow" data-bs-toggle="dropdown">
|
||||||
|
<i class="ti ti-users"></i>
|
||||||
|
</button>
|
||||||
|
<div class="dropdown-menu dropdown-menu-end mb-0 px-2 pt-3 pb-2" id="chat-header-users"
|
||||||
|
aria-labelledby="chat-header-users">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="chat-history-body bg-body">
|
||||||
|
<div class="d-flex justify-content-center chat-loader">
|
||||||
|
<div class="sk-wave sk-primary ">
|
||||||
|
<div class="sk-wave-rect"></div>
|
||||||
|
<div class="sk-wave-rect"></div>
|
||||||
|
<div class="sk-wave-rect"></div>
|
||||||
|
<div class="sk-wave-rect"></div>
|
||||||
|
<div class="sk-wave-rect"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ul class="list-unstyled chat-history" id="chat-conversation">
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- Chat message form -->
|
||||||
|
<div class="chat-history-footer shadow-sm">
|
||||||
|
<div
|
||||||
|
class="form-send-message d-flex justify-content-between align-items-center">
|
||||||
|
<input class="form-control message-input border-0 me-3 shadow-none"
|
||||||
|
placeholder="<?= lang('Chat.write_message_placeholder') ?>" />
|
||||||
|
<div class="message-actions d-flex align-items-center">
|
||||||
|
<?php if (!auth()->user()->inGroup('cliente-administrador','cliente')): ?>
|
||||||
|
<button type="button" class="btn btn-primary d-flex send-msg-btn" style="color:white"
|
||||||
|
id="send-msg-btn-deparment" disabled>
|
||||||
|
<i class="ti ti-send me-md-1 me-0"></i>
|
||||||
|
<span class="align-middle d-md-inline-block">Enviar</span>
|
||||||
|
</button>
|
||||||
|
<?php else : ?>
|
||||||
|
<button type="button" class="btn btn-primary d-flex send-msg-btn" style="color:white"
|
||||||
|
id="send-msg-btn-deparment-client">
|
||||||
|
<i class="ti ti-send me-md-1 me-0"></i>
|
||||||
|
<span class="align-middle d-md-inline-block">Enviar</span>
|
||||||
|
</button>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /Chat History -->
|
||||||
|
|
||||||
|
<div class="app-overlay"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?= $this->section('css') ?>
|
||||||
|
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/spinkit/spinkit.css') ?>" />
|
||||||
|
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/css/pages/app-chat.css') ?>">
|
||||||
|
<?= $this->endSection() ?>
|
||||||
|
<!------------------------------------------------------->
|
||||||
|
<!-- Código JS logica -->
|
||||||
|
<!------------------------------------------------------->
|
||||||
|
<?= $this->section("additionalExternalJs") ?>
|
||||||
|
<script type="module" src="<?= site_url('assets/js/safekat/pages/chatOrdenTrabajo.js') ?>"></script>
|
||||||
|
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
|
||||||
|
<?= $this->endSection() ?>
|
||||||
@ -0,0 +1,36 @@
|
|||||||
|
<!-- Modal -->
|
||||||
|
<div class="modal fade" id="modalNewTask" tabindex="-1" aria-hidden="true">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="exampleModalLabel1"><?= lang('Produccion.task') ?></h5>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<form id="formNewOtTask" method="POST">
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 mb-0">
|
||||||
|
<label for="ot-task-nombre" class="form-label"><?= lang('Produccion.nombre') ?></label>
|
||||||
|
<input type="input" rows="4" cols="10" id="ot-task-nombre" placeholder="Escriba un título" name="nombre" class="form-control" />
|
||||||
|
</div>
|
||||||
|
<div class="col-12 mb-0">
|
||||||
|
<label for="ot-task-nombre" class="form-label"><?= lang('Produccion.tiempo_estimado') ?></label>
|
||||||
|
<input type="input" rows="4" cols="10" id="ot-task-tiempo-estimado" name="tiempo_estimado" class="form-control" />
|
||||||
|
</div>
|
||||||
|
<div class="col-12 mb-0">
|
||||||
|
<label for="ot-task-nombre" class="form-label"><?= lang('Produccion.tiempo_estimado') ?></label>
|
||||||
|
<select type="input" rows="4" cols="10" id="ot-task-tiempo-estimado" name="tiempo_estimado" class="form-control"></select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-label-secondary" data-bs-dismiss="modal"><?= lang('App.global_come_back') ?></button>
|
||||||
|
<button type="button" id="submit_new_hebra" class="btn btn-primary d-none"><?= lang('Chat.modal.btn_send') ?></button>
|
||||||
|
<button type="button" id="submit_update_hebra" class="btn btn-primary d-none"><?= lang('Chat.modal.btn_send_update') ?></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@ -1,6 +1,6 @@
|
|||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
|
|
||||||
<table id="<?= $id ?>" class="table table-striped table-hover" style="width: 100%;">
|
<table id="<?= $id ?>" class="table table-hover text-dark" style="width: 100%;">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th><?= lang('Produccion.datatable.pedido_id') ?></th>
|
<th><?= lang('Produccion.datatable.pedido_id') ?></th>
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
<th><?= lang('Produccion.task.task') ?></th>
|
<th><?= lang('Produccion.task.task') ?></th>
|
||||||
<th><?= lang('Produccion.task.maquina_presupuesto') ?></th>
|
<th><?= lang('Produccion.task.maquina_presupuesto') ?></th>
|
||||||
<th><?= lang('Produccion.task.maquina_actual') ?></th>
|
<th><?= lang('Produccion.task.maquina_actual') ?></th>
|
||||||
<!-- <th><?= lang('Produccion.task.imposicion_id') ?></th> -->
|
<th><?= lang('Produccion.task.imposicion') ?></th>
|
||||||
<th><?= lang('Produccion.task.tiempo_estimado') ?></th>
|
<th><?= lang('Produccion.task.tiempo_estimado') ?></th>
|
||||||
<th><?= lang('Produccion.task.tiempo') ?></th>
|
<th><?= lang('Produccion.task.tiempo') ?></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
|
|||||||
@ -35,9 +35,15 @@
|
|||||||
<td></td>
|
<td></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr class="d-none">
|
||||||
<td colspan="8" style="text-align:right">I.V.A.:</td>
|
<td colspan="8" style="text-align:right">IVA (4%):</td>
|
||||||
<td class="autonumeric text-end" id="total-iva-sum"></td>
|
<td class="autonumeric text-end" id="total-iva-sum-4"></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="d-none">
|
||||||
|
<td colspan="8" style="text-align:right">IVA (21%):</td>
|
||||||
|
<td class="autonumeric text-end" id="total-iva-sum-21"></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -124,17 +130,26 @@ const actionBtns = function(data) {
|
|||||||
|
|
||||||
const autoNumericSubtotal = new AutoNumeric('#subtotal-sum', 0, {
|
const autoNumericSubtotal = new AutoNumeric('#subtotal-sum', 0, {
|
||||||
decimalPlaces: 2,
|
decimalPlaces: 2,
|
||||||
digitGroupSeparator: ',',
|
digitGroupSeparator: '.',
|
||||||
decimalCharacter: '.',
|
decimalCharacter: ',',
|
||||||
unformatOnSubmit: true,
|
unformatOnSubmit: true,
|
||||||
decimalPlacesShownOnFocus: 2,
|
decimalPlacesShownOnFocus: 2,
|
||||||
decimalPlacesShownOnBlur: 2,
|
decimalPlacesShownOnBlur: 2,
|
||||||
});
|
});
|
||||||
|
|
||||||
const autoNumericIVA = new AutoNumeric('#total-iva-sum', 0, {
|
const autoNumericIVA_4 = new AutoNumeric('#total-iva-sum-4', 0, {
|
||||||
decimalPlaces: 2,
|
decimalPlaces: 2,
|
||||||
digitGroupSeparator: ',',
|
digitGroupSeparator: '.',
|
||||||
decimalCharacter: '.',
|
decimalCharacter: ',',
|
||||||
|
unformatOnSubmit: true,
|
||||||
|
decimalPlacesShownOnFocus: 2,
|
||||||
|
decimalPlacesShownOnBlur: 2,
|
||||||
|
});
|
||||||
|
|
||||||
|
const autoNumericIVA_21 = new AutoNumeric('#total-iva-sum-21', 0, {
|
||||||
|
decimalPlaces: 2,
|
||||||
|
digitGroupSeparator: '.',
|
||||||
|
decimalCharacter: ',',
|
||||||
unformatOnSubmit: true,
|
unformatOnSubmit: true,
|
||||||
decimalPlacesShownOnFocus: 2,
|
decimalPlacesShownOnFocus: 2,
|
||||||
decimalPlacesShownOnBlur: 2,
|
decimalPlacesShownOnBlur: 2,
|
||||||
@ -142,8 +157,8 @@ const autoNumericIVA = new AutoNumeric('#total-iva-sum', 0, {
|
|||||||
|
|
||||||
const autoNumericTotal = new AutoNumeric('#total-sum', 0, {
|
const autoNumericTotal = new AutoNumeric('#total-sum', 0, {
|
||||||
decimalPlaces: 2,
|
decimalPlaces: 2,
|
||||||
digitGroupSeparator: ',',
|
digitGroupSeparator: '.',
|
||||||
decimalCharacter: '.',
|
decimalCharacter: ',',
|
||||||
unformatOnSubmit: true,
|
unformatOnSubmit: true,
|
||||||
decimalPlacesShownOnFocus: 2,
|
decimalPlacesShownOnFocus: 2,
|
||||||
decimalPlacesShownOnBlur: 2,
|
decimalPlacesShownOnBlur: 2,
|
||||||
@ -151,8 +166,8 @@ const autoNumericTotal = new AutoNumeric('#total-sum', 0, {
|
|||||||
|
|
||||||
const autoNumericPendientePago = new AutoNumeric('#pendiente-pago', 0, {
|
const autoNumericPendientePago = new AutoNumeric('#pendiente-pago', 0, {
|
||||||
decimalPlaces: 2,
|
decimalPlaces: 2,
|
||||||
digitGroupSeparator: ',',
|
digitGroupSeparator: '.',
|
||||||
decimalCharacter: '.',
|
decimalCharacter: ',',
|
||||||
unformatOnSubmit: true,
|
unformatOnSubmit: true,
|
||||||
decimalPlacesShownOnFocus: 2,
|
decimalPlacesShownOnFocus: 2,
|
||||||
decimalPlacesShownOnBlur: 2,
|
decimalPlacesShownOnBlur: 2,
|
||||||
@ -448,11 +463,38 @@ var tableLineas = $('#tableOfLineasFactura').DataTable({
|
|||||||
const table = this.api();
|
const table = this.api();
|
||||||
|
|
||||||
const totalSubtotal = table.column(8).data().reduce((a, b) => parseFloat(a) + parseFloat(b), 0);
|
const totalSubtotal = table.column(8).data().reduce((a, b) => parseFloat(a) + parseFloat(b), 0);
|
||||||
const totalIVA = table.column(9).data().reduce((a, b) => parseFloat(a) + parseFloat(b), 0);
|
|
||||||
|
const data_table = table.rows().data();
|
||||||
|
const totalIVA_4 = data_table.reduce((sum, row) => {
|
||||||
|
if (parseInt(row['iva']) === 4) {
|
||||||
|
return sum + parseFloat(row['total_iva']) || 0;
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}, 0);
|
||||||
|
const totalIVA_21 = data_table.reduce((sum, row) => {
|
||||||
|
if (parseInt(row['iva']) === 21) {
|
||||||
|
return sum + parseFloat(row['total_iva']) || 0;
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}, 0);
|
||||||
|
|
||||||
const totalTotal = table.column(10).data().reduce((a, b) => parseFloat(a) + parseFloat(b), 0);
|
const totalTotal = table.column(10).data().reduce((a, b) => parseFloat(a) + parseFloat(b), 0);
|
||||||
|
|
||||||
autoNumericSubtotal.set(totalSubtotal);
|
autoNumericSubtotal.set(totalSubtotal);
|
||||||
autoNumericIVA.set(totalIVA);
|
autoNumericIVA_4.set(totalIVA_4);
|
||||||
|
if(totalIVA_4 == 0){
|
||||||
|
$('#total-iva-sum-4').closest('tr').addClass('d-none');
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$('#total-iva-sum-4').closest('tr').removeClass('d-none');
|
||||||
|
}
|
||||||
|
autoNumericIVA_21.set(totalIVA_21);
|
||||||
|
if(totalIVA_21 == 0){
|
||||||
|
$('#total-iva-sum-21').closest('tr').addClass('d-none');
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$('#total-iva-sum-21').closest('tr').removeClass('d-none');
|
||||||
|
}
|
||||||
autoNumericTotal.set(totalTotal);
|
autoNumericTotal.set(totalTotal);
|
||||||
|
|
||||||
var total_pagos = autoNumericTotalCobrado.getNumber();
|
var total_pagos = autoNumericTotalCobrado.getNumber();
|
||||||
|
|||||||
@ -190,6 +190,11 @@
|
|||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
success:function(response){
|
success:function(response){
|
||||||
|
|
||||||
|
if(response.error){
|
||||||
|
console.error(response.error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
token=response.<?= csrf_token() ?>;
|
token=response.<?= csrf_token() ?>;
|
||||||
yeniden(token);
|
yeniden(token);
|
||||||
// redirect
|
// redirect
|
||||||
|
|||||||
@ -15,27 +15,33 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<!-- Date 1-->
|
<!-- Date 1-->
|
||||||
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
||||||
<label for="ot-tiempo-procesamiento" class="form-label"><?= @lang("Produccion.tiempo_procesamiento") ?></label>
|
<label for="ot-tiempo-procesamiento" class="form-label"><?= @lang("Produccion.tiempo_procesamiento") ?> (HH:MM)</label>
|
||||||
<input type="text" class="form-control" name="tiempo_procesamiento" placeholder="HH:MM" id="ot-tiempo-procesamiento" data-input disabled>
|
<input type="text" class="form-control" name="tiempo_procesamiento" placeholder="HH:MM" id="ot-tiempo-procesamiento" data-input disabled>
|
||||||
</div>
|
</div>
|
||||||
<!-- Date 2-->
|
<!-- Date 2-->
|
||||||
|
|
||||||
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
||||||
<label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.fecha_impresion") ?></label>
|
<label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.fecha_impresion") ?></label>
|
||||||
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="fecha_impresion_at" id="ot-fecha-impresion" data-input>
|
<input type="text" class="form-control ot-pedido" placeholder="DD/MM/YYYY" name="fecha_impresion" id="ot-fecha-impresion" data-input>
|
||||||
|
<div class="form-text"><?= $pedido_user_dates["fecha_impresion"] ?></div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- Date 2-->
|
<!-- Date 2-->
|
||||||
|
|
||||||
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
||||||
<label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.fecha_encuadernado") ?></label>
|
<label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.fecha_encuadernado") ?></label>
|
||||||
<input type="date" class="form-control ot-date" placeholder="DD/MM/YYYY" name="fecha_encuadernado_at" id="ot-fecha-encuadernado" data-input />
|
<input type="date" class="form-control ot-pedido" placeholder="DD/MM/YYYY" name="fecha_encuadernado" id="ot-fecha-encuadernado" data-input />
|
||||||
|
<div class="form-text"><?= $pedido_user_dates["fecha_encuadernado"] ?></div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- Date 4-->
|
<!-- Date 4-->
|
||||||
|
|
||||||
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
||||||
<label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.fecha_entrega_externo") ?></label>
|
<label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.fecha_entrega_externo") ?></label>
|
||||||
<input type="date" class="form-control ot-date" placeholder="DD/MM/YYYY" name="fecha_entrega_externo" id="ot-fecha-entrega-externo" data-input />
|
<input type="date" class="form-control ot-pedido" placeholder="DD/MM/YYYY" name="fecha_entrega_externo" id="ot-fecha-entrega-externo" data-input />
|
||||||
|
<div class="form-text"><?= $pedido_user_dates["fecha_entrega_externo"] ?></div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- Date 5-->
|
<!-- Date 5-->
|
||||||
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
||||||
@ -43,12 +49,13 @@
|
|||||||
<div>
|
<div>
|
||||||
|
|
||||||
<label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.fecha_entrega_real") ?></label>
|
<label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.fecha_entrega_real") ?></label>
|
||||||
<input type="date" class="form-control ot-date" placeholder="DD/MM/YYYY" name="fecha_entrega_real_at" id="ot-fecha-entrega-real" data-input />
|
<input type="date" class="form-control ot-pedido" placeholder="DD/MM/YYYY" name="fecha_entrega_real" id="ot-fecha-entrega-real" data-input />
|
||||||
|
<div class="form-text"><?= $pedido_user_dates["fecha_entrega_real"] ?></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex flex-column">
|
<div class="d-flex flex-column">
|
||||||
|
|
||||||
<label class="switch switch-danger switch-lg mt-1">
|
<label class="switch switch-danger switch-lg mt-1">
|
||||||
<input type="checkbox" class="switch-input ot-preview" name="fecha_entrega_warning" />
|
<input type="checkbox" class="switch-input ot-pedido-check" name="inaplazable" />
|
||||||
<span class="switch-toggle-slider">
|
<span class="switch-toggle-slider">
|
||||||
<span class="switch-on">
|
<span class="switch-on">
|
||||||
<i class="ti ti-alert-triangle"></i>
|
<i class="ti ti-alert-triangle"></i>
|
||||||
@ -59,6 +66,7 @@
|
|||||||
</span>
|
</span>
|
||||||
<span class="switch-label fw-large">Inaplazable</span>
|
<span class="switch-label fw-large">Inaplazable</span>
|
||||||
</label>
|
</label>
|
||||||
|
<div class="form-text"><?= $pedido_user_dates["inaplazable"] ?></div>
|
||||||
<label class="switch switch-lg mt-1">
|
<label class="switch switch-lg mt-1">
|
||||||
<input type="checkbox" class="switch-input ot-preview" name="fecha_entrega_warning_revised" />
|
<input type="checkbox" class="switch-input ot-preview" name="fecha_entrega_warning_revised" />
|
||||||
<span class="switch-toggle-slider">
|
<span class="switch-toggle-slider">
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h1 class="card-title mb-0">[<?= $presupuesto->id ?>]<?= $presupuesto->titulo ?></h1>
|
<h1 class="card-title mb-0">[<?= $presupuesto->id ?>]<?= $presupuesto->titulo ?></h1>
|
||||||
<h4 class="card-title mb-0 text-secondary"><?= $cliente->nombre ?></h4>
|
<h4 class="card-title mb-0 text-secondary"><?= $cliente->nombre ?> (<?= $cliente->alias ?>)</h4>
|
||||||
<h3 class="card-title mb-3">OT : <?= $ot->id ?></h3>
|
<h3 class="card-title mb-3">OT : <?= $ot->id ?></h3>
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<div class="card-info">
|
<div class="card-info">
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
<div class="text-light small fw-medium mb-4 text-start">Revisión</div>
|
<div class="text-light small fw-medium mb-4 text-start">Revisión</div>
|
||||||
<div class="d-flex flex-column justify-content-start text-start gap-2">
|
<div class="d-flex flex-column justify-content-start text-start gap-2">
|
||||||
<label class="switch switch-md">
|
<label class="switch switch-md">
|
||||||
<input type="checkbox" class="switch-input ot-preview" name="revisar_formato"/>
|
<input type="checkbox" class="switch-input ot-preview" name="revisar_formato" />
|
||||||
<span class="switch-toggle-slider">
|
<span class="switch-toggle-slider">
|
||||||
<span class="switch-on">
|
<span class="switch-on">
|
||||||
<i class="ti ti-check"></i>
|
<i class="ti ti-check"></i>
|
||||||
@ -14,7 +14,7 @@
|
|||||||
<span class="switch-label">Revisar formato</span>
|
<span class="switch-label">Revisar formato</span>
|
||||||
</label>
|
</label>
|
||||||
<label class="switch switch-md">
|
<label class="switch switch-md">
|
||||||
<input type="checkbox" class="switch-input ot-preview" name="revisar_lomo" />
|
<input type="checkbox" class="switch-input ot-preview" name="revisar_lomo" />
|
||||||
<span class="switch-toggle-slider">
|
<span class="switch-toggle-slider">
|
||||||
<span class="switch-on">
|
<span class="switch-on">
|
||||||
<i class="ti ti-check"></i>
|
<i class="ti ti-check"></i>
|
||||||
@ -26,7 +26,7 @@
|
|||||||
<span class="switch-label">Revisar lomo</span>
|
<span class="switch-label">Revisar lomo</span>
|
||||||
</label>
|
</label>
|
||||||
<label class="switch switch-md">
|
<label class="switch switch-md">
|
||||||
<input type="checkbox" class="switch-input ot-preview" name="revisar_solapa" />
|
<input type="checkbox" class="switch-input ot-preview" id="revisar-solapa" name="revisar_solapa" />
|
||||||
<span class="switch-toggle-slider">
|
<span class="switch-toggle-slider">
|
||||||
<span class="switch-on">
|
<span class="switch-on">
|
||||||
<i class="ti ti-check"></i>
|
<i class="ti ti-check"></i>
|
||||||
|
|||||||
@ -15,76 +15,179 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12 mb-3">
|
<div class="col-md-12 mb-3">
|
||||||
<label class="form-label" for="ot-progress-bar-parent"><?= @lang("App.progress") ?></label>
|
<label class="form-label" for="ot-progress-bar-parent"><?= @lang("App.progress") ?></label>
|
||||||
<div class="progress" id="ot-progress-bar-parent">
|
<div class="progress" style="height: 25px;" id="ot-progress-bar-parent">
|
||||||
<div id="ot-progress-bar" class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
|
<div id="ot-progress-bar" class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<!-- Progress -->
|
|
||||||
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
|
||||||
<label for="ot-pendiente-ferro" class="form-label"><?= @lang("Produccion.pendiente_ferro") ?></label>
|
|
||||||
<input type="text" class="form-control ot-date" name="pendiente_ferro_at" placeholder="DD/MM/YYYY" id="ot-pendiente-ferro">
|
|
||||||
</div>
|
|
||||||
<!-- Progress -->
|
|
||||||
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
|
||||||
<label for="ot-ferro-cliente" class="form-label"><?= @lang("Produccion.ferro_cliente") ?></label>
|
|
||||||
<input type="text" class="form-control ot-date" name="ferro_en_cliente_at" placeholder="DD/MM/YYYY" id="ot-ferro-cliente">
|
|
||||||
</div>
|
|
||||||
<!-- Progress -->
|
|
||||||
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
|
||||||
<label for="ot-ferro-ok" class="form-label"><?= @lang("Produccion.ferro_ok") ?></label>
|
|
||||||
<input type="text" class="form-control ot-date" name="ferro_ok_at" placeholder="DD/MM/YYYY" id="ot-ferro-ok">
|
|
||||||
</div>
|
|
||||||
<!-- Progress -->
|
|
||||||
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
|
||||||
<label for="ot-plakene-traslucido" class="form-label"><?= @lang("Produccion.plakene_traslucido") ?></label>
|
|
||||||
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="plakene_taslucido_at" id="ot-plakene-traslucido">
|
|
||||||
</div>
|
|
||||||
<!-- Progress -->
|
|
||||||
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
|
||||||
<label for="ot-impresion-color" class="form-label"><?= @lang("Produccion.impresion_color") ?></label>
|
|
||||||
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="interior_color_at" id="ot-impresion-color">
|
|
||||||
</div>
|
|
||||||
<!-- Progress -->
|
|
||||||
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
|
||||||
<label for="ot-portada" class="form-label"><?= @lang("Produccion.portada") ?></label>
|
|
||||||
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="cubierta_at" id="ot-portada">
|
|
||||||
</div>
|
|
||||||
<!-- Progress -->
|
|
||||||
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
|
||||||
<label for="ot-plastificado-mate" class="form-label"><?= @lang("Produccion.plastificado_mate") ?></label>
|
|
||||||
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="plastificado_at" id="ot-plastificado-mate">
|
|
||||||
</div>
|
|
||||||
<!-- Progress -->
|
|
||||||
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
|
||||||
<label for="ot-prep-guillotina" class="form-label"><?= @lang("Produccion.guillotina") ?></label>
|
|
||||||
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="corte_at" id="ot-prep-guillotina">
|
|
||||||
</div>
|
|
||||||
<!-- Progress -->
|
|
||||||
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
|
||||||
<label for="ot-espiral" class="form-label"><?= @lang("Produccion.espiral") ?></label>
|
|
||||||
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="espiral_at" id="ot-espiral">
|
|
||||||
</div>
|
|
||||||
<!-- Progress -->
|
|
||||||
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
|
||||||
<label for="ot-embalaje" class="form-label"><?= @lang("Produccion.embalaje") ?></label>
|
|
||||||
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="embalaje_at" id="ot-embalaje">
|
|
||||||
</div>
|
|
||||||
<!-- Progress -->
|
|
||||||
<div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
|
||||||
<label for="ot-envio" class="form-label"><?= @lang("Produccion.envio") ?></label>
|
|
||||||
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="envio_at" id="ot-envio">
|
|
||||||
</div>
|
|
||||||
<!-- <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
|
|
||||||
<label for="ot-estado" class="form-label"><?= @lang("Produccion.estado") ?></label>
|
|
||||||
<select class="form-control ot-preview" name="estado" id="ot-estado">
|
|
||||||
<option value="I">INICIADA</option>
|
|
||||||
<option value="E">ERROR</option>
|
|
||||||
<option value="P">PENDIENTE</option>
|
|
||||||
</select>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
|
||||||
|
<label for="ot-impresion-color" class="form-label"><?= @lang("Produccion.impresion_bn") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="interior_bn_at" id="ot-impresion-bn">
|
||||||
|
<div class="form-text"><?= $user_dates["interior_bn_at"] ?></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
|
||||||
|
<label for="ot-impresion-color" class="form-label"><?= @lang("Produccion.impresion_color") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="interior_color_at" id="ot-impresion-color">
|
||||||
|
<div class="form-text"><?= $user_dates["interior_color_at"] ?></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
|
||||||
|
<label for="ot-portada" class="form-label"><?= @lang("Produccion.cubierta") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="cubierta_at" id="ot-portada">
|
||||||
|
<div class="form-text"><?= $user_dates["cubierta_at"] ?></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
|
||||||
|
<label for="ot-plastificado-mate" class="form-label"><?= @lang("Produccion.plastificado_mate") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="plastificado_at" id="ot-plastificado-mate">
|
||||||
|
<div class="form-text"><?= $user_dates["plastificado_at"] ?></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3">
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $presupuesto->cosido ? "" : "d-none" ?>">
|
||||||
|
<label for="ot-prep-cosido" class="form-label"><?= @lang("Produccion.cosido") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="cosido_at" id="ot-prep-cosido">
|
||||||
|
<div class="form-text"><?= $user_dates["cosido_at"] ?></div>
|
||||||
|
</div>
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
|
||||||
|
<label for="ot-prep-grapado" class="form-label"><?= @lang("Produccion.grapado") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="grapado_at" id="ot-prep-grapado">
|
||||||
|
<div class="form-text"><?= $user_dates["grapado_at"] ?></div>
|
||||||
|
</div>
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $presupuesto->solapas ? "" : "d-none" ?>">
|
||||||
|
<label for="ot-prep-solapa" class="form-label"><?= @lang("Produccion.solapa") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="solapa_at" id="ot-prep-solapa">
|
||||||
|
<div class="form-text"><?= $user_dates["solapa_at"] ?></div>
|
||||||
|
</div>
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $presupuesto->retractilado ? "" : "d-none" ?>">
|
||||||
|
<label for="ot-prep-retractilado" class="form-label"><?= @lang("Produccion.retractilado") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="retractilado_at" id="ot-prep-retractilado">
|
||||||
|
<div class="form-text"><?= $user_dates["retractilado_at"] ?></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $presupuesto->retractilado5 ? "" : "d-none" ?>">
|
||||||
|
<label for="ot-prep-retractilado5" class="form-label"><?= @lang("Produccion.retractilado5") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="retractilado5_at" id="ot-prep-retractilado5">
|
||||||
|
<div class="form-text"><?= $user_dates["retractilado5_at"] ?></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $presupuesto->prototipo ? "" : "d-none" ?>">
|
||||||
|
<label for="ot-prep-prototipo" class="form-label"><?= @lang("Produccion.prototipo") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="prototipo_at" id="ot-prep-prototipo">
|
||||||
|
<div class="form-text"><?= $user_dates["prototipo_at"] ?></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $presupuesto->marcapaginas ? "" : "d-none" ?>">
|
||||||
|
<label for="ot-prep-marcapaginas" class="form-label"><?= @lang("Produccion.marcapaginas") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="marcapaginas_at" id="ot-prep-marcapaginas">
|
||||||
|
<div class="form-text"><?= $user_dates["marcapaginas_at"] ?></div>
|
||||||
|
</div>
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
|
||||||
|
<label for="ot-prep-guillotina" class="form-label"><?= @lang("Produccion.guillotina") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="corte_at" id="ot-prep-guillotina">
|
||||||
|
<div class="form-text"><?= $user_dates["corte_at"] ?></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
|
||||||
|
<label for="ot-espiral" class="form-label"><?= @lang("Produccion.espiral") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="espiral_at" id="ot-espiral">
|
||||||
|
<div class="form-text"></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3">
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $presupuesto->ferro ? "" : "d-none" ?>">
|
||||||
|
<label for="ot-pendiente-ferro" class="form-label"><?= @lang("Produccion.pendiente_ferro") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" name="pendiente_ferro_at" placeholder="DD/MM/YYYY" id="ot-pendiente-ferro">
|
||||||
|
<div class="form-text"><?= $user_dates["pendiente_ferro_at"] ?></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $presupuesto->ferro ? "" : "d-none" ?>">
|
||||||
|
<label for="ot-ferro-cliente" class="form-label"><?= @lang("Produccion.ferro_cliente") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" name="ferro_en_cliente_at" placeholder="DD/MM/YYYY" id="ot-ferro-cliente">
|
||||||
|
<div class="form-text"><?= $user_dates["ferro_en_cliente_at"] ?></div>
|
||||||
|
</div>
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $presupuesto->ferro ? "" : "d-none" ?>">
|
||||||
|
<label for="ot-ferro-ok" class="form-label"><?= @lang("Produccion.ferro_ok") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" name="ferro_ok_at" placeholder="DD/MM/YYYY" id="ot-ferro-ok">
|
||||||
|
<div class="form-text"><?= $user_dates["ferro_ok_at"] ?></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
|
||||||
|
<label for="ot-embalaje" class="form-label"><?= @lang("Produccion.embalaje") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="embalaje_at" id="ot-embalaje">
|
||||||
|
<div class="form-text"><?= $user_dates["embalaje_at"] ?></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- Progress -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
|
||||||
|
<label for="ot-envio" class="form-label"><?= @lang("Produccion.envio") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="envio_at" id="ot-envio">
|
||||||
|
<div class="form-text"><?= $user_dates["envio_at"] ?></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3">
|
||||||
|
<!-- PREIMPRESION -->
|
||||||
|
<!-- Preformato -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $ot->revisar_formato ? "" : "d-none" ?>">
|
||||||
|
<label for="ot-preformato-btn" class="form-label"><?= @lang("Produccion.pre_formato") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_formato_at" id="ot-preformato-date">
|
||||||
|
<div class="form-text"><?= $user_dates["pre_formato_at"] ?></div>
|
||||||
|
</div>
|
||||||
|
<!-- Prelomo -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $ot->revisar_lomo ? "" : "d-none" ?>">
|
||||||
|
<label for="ot-prelomo-btn" class="form-label"><?= @lang("Produccion.pre_lomo") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_lomo_at" id="ot-prelomo-date">
|
||||||
|
<div class="form-text"><?= $user_dates["pre_lomo_at"] ?></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- Presolapa -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $ot->revisar_solapa ? "" : "d-none" ?>">
|
||||||
|
<label for="ot-presolapa-btn" class="form-label"><?= @lang("Produccion.pre_solapa") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_solapa_at" id="ot-presolapa-date">
|
||||||
|
<div class="form-text"><?= $user_dates["pre_solapa_at"] ?></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- Precodbarras -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $ot->revisar_codigo_barras ? "" : "d-none" ?>">
|
||||||
|
<label for="ot-precodbarras-btn" class="form-label"><?= @lang("Produccion.pre_codbarras") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_codbarras_at" id="ot-precodbarras-date">
|
||||||
|
<div class="form-text"><?= $user_dates["pre_codbarras_at"] ?></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- Preimposicion -->
|
||||||
|
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100 <?= $ot->realizar_imposicion ? "" : "d-none" ?>">
|
||||||
|
<label for="ot-preimposicion-btn" class="form-label"><?= @lang("Produccion.pre_imposicion") ?></label>
|
||||||
|
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_imposicion_at" id="ot-preimposicion-date">
|
||||||
|
<div class="form-text"><?= $user_dates["pre_imposicion_at"] ?></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<h2 class="accordion-header">
|
<h2 class="accordion-header">
|
||||||
<button type="button" class="accordion-button" data-bs-toggle="collapse" data-bs-target="#accordionOtTasksTip" aria-expanded="false" aria-controls="accordionOtTasksTip">
|
<button type="button" class="accordion-button" data-bs-toggle="collapse" data-bs-target="#accordionOtTasksTip" aria-expanded="false" aria-controls="accordionOtTasksTip">
|
||||||
|
|
||||||
<div class="d-flex flex-row justify-content-start align-items-stretch gap-2">
|
<div class="d-flex flex-row justify-content-start align-items-stretch gap-2">
|
||||||
<span><i class="ti-subtask ti-md ti"></i></span>
|
<span><i class="ti-subtask ti-md ti"></i></span>
|
||||||
<h4> Tareas </h4>
|
<h4> Tareas </h4>
|
||||||
</div>
|
</div>
|
||||||
@ -25,9 +25,6 @@
|
|||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<button type="button" class="nav-link d-flex flex-column gap-1" role="tab" data-bs-toggle="tab" data-bs-target="#nav-ot-task-ferro-envio" aria-controls="nav-ot-task-ferro-envio" aria-selected="false">Ferros y envíos</button>
|
<button type="button" class="nav-link d-flex flex-column gap-1" role="tab" data-bs-toggle="tab" data-bs-target="#nav-ot-task-ferro-envio" aria-controls="nav-ot-task-ferro-envio" aria-selected="false">Ferros y envíos</button>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
|
||||||
<button type="button" class="nav-link d-flex flex-column gap-1" role="tab" data-bs-toggle="tab" data-bs-target="#nav-ot-task-messages" aria-controls="nav-ot-task-messages" aria-selected="false">Mensajes</button>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -44,9 +41,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row text-end mt-2">
|
<div class="row d-flex flex-row justify-content-between align-items-center mt-2 gap-2">
|
||||||
<div class="col-md-12">
|
<div class="col-md-3 text-start">
|
||||||
<button type="button" class="btn btn-danger btn-md" id="btn-reset-tareas"><i class="ti ti-trash ti-xs"></i> Reiniciar tareas</button>
|
<!-- <button type="button" class="btn btn-primary btn-md align-items-center" id="btn-add-tarea"><span class="ti ti-plus ti-sm me-1"></span> Insertar tarea</button> -->
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3 gap-2 text-end">
|
||||||
|
<!-- <button type="button" class="btn btn-warning btn-md" id="btn-reset-tareas-time"><span class="ti ti-clock ti-sm me-1"></span> Actualizar tiempo</button> -->
|
||||||
|
<button type="button" class="btn btn-danger btn-md" id="btn-reset-tareas"><span class="ti ti-trash ti-sm me-1"></span> Reiniciar tareas</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -62,10 +63,6 @@
|
|||||||
<?= view("themes/vuexy/form/produccion/ot/otFerrosEnvios") ?>
|
<?= view("themes/vuexy/form/produccion/ot/otFerrosEnvios") ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- MENSAJES -->
|
|
||||||
<div class="tab-pane fade" id="nav-ot-task-messages" role="tabpanel">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
<?= view("themes/vuexy/form/produccion/ot/otHeader") ?>
|
<?= view("themes/vuexy/form/produccion/ot/otHeader") ?>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<idv id="ot-edit-form">
|
<div id="ot-edit-form">
|
||||||
<div class="col-md-12 section-block">
|
<div class="col-md-12 section-block">
|
||||||
<?= view("themes/vuexy/form/produccion/ot/otPortada") ?>
|
<?= view("themes/vuexy/form/produccion/ot/otPortada") ?>
|
||||||
</div>
|
</div>
|
||||||
@ -26,6 +26,10 @@
|
|||||||
<div class="col-md-12 section-block">
|
<div class="col-md-12 section-block">
|
||||||
<?= view("themes/vuexy/form/produccion/ot/otTask") ?>
|
<?= view("themes/vuexy/form/produccion/ot/otTask") ?>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-md-12 section-block">
|
||||||
|
<?= view("themes/vuexy/components/chat_internal_orden_trabajo", data: ["modelId" => $modelId, "type" => "orden_trabajo"]) ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="col-md-12 section-block">
|
<div class="col-md-12 section-block">
|
||||||
<?= view("themes/vuexy/form/produccion/ot/otFiles") ?>
|
<?= view("themes/vuexy/form/produccion/ot/otFiles") ?>
|
||||||
</div>
|
</div>
|
||||||
@ -35,19 +39,19 @@
|
|||||||
<div class="col-md-12 section-block">
|
<div class="col-md-12 section-block">
|
||||||
<?= view("themes/vuexy/form/produccion/ot/otComments") ?>
|
<?= view("themes/vuexy/form/produccion/ot/otComments") ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-12 mt-3">
|
<div class="col-md-12 mt-3">
|
||||||
<div class="d-grip gap-2">
|
<div class="d-grip gap-2">
|
||||||
<a type="button" class="btn btn-outline-danger btn-block mb-1" target="__blank" href="<?= "/produccion/ordentrabajo/pdf/" . $modelId ?>">
|
<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>
|
<span class="ti-sm ti ti-eye me-1"></span>
|
||||||
<?= @lang("Produccion.preview_pdf") ?></a>
|
<?= @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-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>
|
<button type="button" class="btn btn-secondary btn-block mb-1"><?= @lang("Produccion.imprimir_codigo_safekat") ?></button>
|
||||||
|
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<!-- Modal -->
|
<!-- Modal -->
|
||||||
<div class="modal fade" id="modalCommentTarea" tabindex="-1" aria-hidden="true">
|
<div class="modal fade" id="modalCommentTarea" tabindex="-1" aria-hidden="true">
|
||||||
<div class="modal-dialog" role="document">
|
<div class="modal-dialog" role="document">
|
||||||
|
|||||||
@ -52,6 +52,8 @@
|
|||||||
|
|
||||||
<?= $this->section('css') ?>
|
<?= $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/formvalidation/dist/css/formValidation.min.css') ?>" />
|
||||||
|
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/ot.css') ?>" />
|
||||||
|
|
||||||
<?= $this->endSection() ?>
|
<?= $this->endSection() ?>
|
||||||
|
|
||||||
<?= $this->section("additionalExternalJs") ?>
|
<?= $this->section("additionalExternalJs") ?>
|
||||||
|
|||||||
@ -44,13 +44,13 @@ $settings = $session->get('settings');
|
|||||||
</div>
|
</div>
|
||||||
<div class="row mb-2 d-flex flex align-items-stretch">
|
<div class="row mb-2 d-flex flex align-items-stretch">
|
||||||
<div class="col-2">
|
<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' ?>" />
|
<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>
|
||||||
<div class="col-10 <?= $ot->fecha_entrega_warning ? "bg-danger" : "bg-secondary" ?> py-2 rounded border-1 border-secondary">
|
<div class="col-10 <?= $ot->fecha_entrega_warning ? "bg-danger" : "bg-secondary" ?> py-2 rounded border-1 border-secondary">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-8">
|
<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">
|
<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><?= $pedido->fecha_encuadernado ? week_day_humanize(Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->getDayOfWeek(), true) : "" ?></strong></span>
|
||||||
<span><strong>Comercial:</strong> <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </span>
|
<span><strong>Comercial:</strong> <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -64,52 +64,52 @@ $settings = $session->get('settings');
|
|||||||
<div class="row p-2">
|
<div class="row p-2">
|
||||||
<div class="col-4 h-100">
|
<div class="col-4 h-100">
|
||||||
<div class="row px-2 d-flex flex justify-content-between align-items-center">
|
<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" ?> ">
|
<div class="col-6 w-75 border border-1 border-dark text-center <?= $ot->fecha_entrega_warning ? "bg-danger" : "bg-white" ?> ">
|
||||||
<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>
|
<span class="<?= $ot->fecha_entrega_warning ? "text-white" : "text-black" ?>" id="fecha_encuadernado_at"><strong><?= $pedido->fecha_encuadernado ? Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->format('d/m/Y') : "" ?></strong></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-6 w-25 border border-1 border-dark text-center bg-secondary text-white">
|
<div class="col-6 w-25 border border-1 border-dark text-center bg-secondary text-white">
|
||||||
<strong>RF</strong>
|
<strong><?=isset($encuadernaciones[0]) ? $encuadernaciones[0]->tarifa()->code ?? "?" : "?" ?></strong>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row px-2 mt-2 h-100">
|
<div class="row px-2 mt-2 h-100">
|
||||||
<table class="h-100">
|
<table class="h-100">
|
||||||
<tr class="t-row">
|
<tr class="t-row">
|
||||||
<th class="t-header">IN</th>
|
<th class="t-header">IN</th>
|
||||||
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="t-row">
|
<tr class="t-row">
|
||||||
<th class="t-header">PO</th>
|
<th class="t-header">PO</th>
|
||||||
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="t-row">
|
<tr class="t-row">
|
||||||
<th class="t-header">PL</th>
|
<th class="t-header">PL</th>
|
||||||
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="t-row">
|
<tr class="t-row">
|
||||||
<th class="t-header">EN</th>
|
<th class="t-header">EN</th>
|
||||||
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="t-row">
|
<tr class="t-row">
|
||||||
<th class="t-header">MA</th>
|
<th class="t-header">MA</th>
|
||||||
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-4">
|
<div class="col-4">
|
||||||
<div class="row h-100">
|
<div class="row h-100">
|
||||||
<div class="col-6 h-50 square text-center text-dark bg-secondary border border-right border-dark">
|
<div class="col-6 h-50 square text-center text-dark bg-white border border-right border-dark">
|
||||||
BCLF 100
|
<?= $linea_impresion->papel_impresion()->papel_code_ot ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-6 h-50 square text-center text-dark bg-secondary border border-right border-dark">
|
<div class="col-6 h-50 square text-center <?=$linea_impresion->isColor() ? "cmyk" : "bn" ?> border border-right border-dark">
|
||||||
0:3
|
<?= $tiempo_procesamiento ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-6 h-50 square bg-primary text-center text-white border border-right border-dark">
|
<div class="col-6 h-50 square bg-primary text-center text-white border border-right border-dark">
|
||||||
EM 300
|
<?= $linea_cubierta->papel_impresion()->papel_code_ot ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-6 h-50 square bg-blue text-center text-dark bg-secondary border border-right border-dark">
|
<div class="col-6 h-50 square bg-blue text-center text-dark bg-secondary border border-right border-dark">
|
||||||
BRILLO
|
<?= isset($acabados[0]) ? $acabados[0]->tarifa()->code : "" ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -128,28 +128,28 @@ $settings = $session->get('settings');
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-2">
|
<div class="row">
|
||||||
<div class="col-8">
|
<div class="col-8">
|
||||||
<table class="h-100">
|
<table class="h-50">
|
||||||
<tr>
|
<tr>
|
||||||
<th>Cliente</th>
|
<th >Cliente</th>
|
||||||
<td class="t-cell ">
|
<td class="t-cell">
|
||||||
<?= $cliente->nombre ?>
|
<?= $cliente->nombre ?>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Titulo</th>
|
<th >Titulo</th>
|
||||||
<td class="t-cell ">
|
<td class="t-cell">
|
||||||
<?= $presupuesto->titulo ?>
|
<?= $presupuesto->titulo ?>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>ISBN</th>
|
<th >ISBN</th>
|
||||||
<td class="t-cell"><?= $presupuesto->isbn ?></td>
|
<td class="t-cell"><?= $presupuesto->isbn ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>CIF</th>
|
<th >CIF</th>
|
||||||
<td class="t-cell"><?= $cliente->cif ?></td>
|
<td class="t-cell"><?= $cliente->cif ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@ -186,8 +186,8 @@ $settings = $session->get('settings');
|
|||||||
<div class="imposicion">
|
<div class="imposicion">
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Imposicion</th>
|
<th class="w-50">Imposicion</th>
|
||||||
<td>??</td>
|
<td><?= $imposicion?->full_name ?? "" ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
@ -198,6 +198,18 @@ $settings = $session->get('settings');
|
|||||||
<div class="section-title impresion">IMP. INTERIOR</div>
|
<div class="section-title impresion">IMP. INTERIOR</div>
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<div>
|
<div>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th class="t-header" style="width: 10%;"><?=lang('Produccion.size')?></th>
|
||||||
|
<td class="t-cell text-center"> <?= $papel_formato->ancho ?>x<?= $papel_formato->alto ?> </td>
|
||||||
|
<th class="t-header" style="width: 10%;"><?=lang('Produccion.ejemplares')?></th>
|
||||||
|
<td class="t-cell text-center"> <?=$presupuesto->tirada ?> </td>
|
||||||
|
<th class="t-header" style="width: 10%;"><?=lang('Produccion.tipo')?></th>
|
||||||
|
<td class="t-cell text-center"> <?=$linea_impresion->tipo ?> </td>
|
||||||
|
<th class="t-header" style="width: 10%;"><?=lang('Produccion.lomo')?></th>
|
||||||
|
<td class="t-cell text-center"> <?=number_format($presupuesto->lomo_cubierta,2,',','.') ?> </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="3" class="row-logo-impresion"><img src="<?= site_url($linea_impresion->get_impresion_logo()) ?>" width="35px" height="35px"></td>
|
<td rowspan="3" class="row-logo-impresion"><img src="<?= site_url($linea_impresion->get_impresion_logo()) ?>" width="35px" height="35px"></td>
|
||||||
@ -282,13 +294,13 @@ $settings = $session->get('settings');
|
|||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="t-header" style="width: 10%;">Plastificado</th>
|
<th class="t-header" style="width: 10%;">Plastificado</th>
|
||||||
<td class="t-cell"><?= $acabados[0]->tarifa()->nombre ?></td>
|
<td class="t-cell text-center"><?= $acabados[0]->tarifa()->nombre ?></td>
|
||||||
<th class="t-header" style="width: 10%;">UVI</th>
|
<th class="t-header" style="width: 10%;">UVI</th>
|
||||||
<td class="t-cell"> ?? </td>
|
<td class="t-cell text-center"> ?? </td>
|
||||||
<th class="t-header" style="width: 10%;">Máquina</th>
|
<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>
|
<td class="t-cell text-center"><?= implode("/", array_map(fn($q) => $q->nombre, $acabados[0]->maquinas())) ?> </td>
|
||||||
<th class="t-header" style="width: 10%;">Operario</th>
|
<th class="t-header " style="width: 10%;">Operario</th>
|
||||||
<td class="t-cell"><?= $ot->users()->plastificado_by?->getFullName() ?? null ?> </td>
|
<td class="t-cell text-center"><?= $ot->users()?->plastificado_by?->getFullName() ?? null ?> </td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table>
|
<table>
|
||||||
@ -307,7 +319,7 @@ $settings = $session->get('settings');
|
|||||||
<td><?= $value->tarifa()->nombre ?></td>
|
<td><?= $value->tarifa()->nombre ?></td>
|
||||||
<td><?= $presupuesto->solapas ? "SI" : "NO" ?></td>
|
<td><?= $presupuesto->solapas ? "SI" : "NO" ?></td>
|
||||||
<td><?= $presupuesto->hasSobrecubierta() ? "SI" : "NO" ?></td>
|
<td><?= $presupuesto->hasSobrecubierta() ? "SI" : "NO" ?></td>
|
||||||
<td> <?= $linea_impresion->pliegos_libro?>/<?=$linea_impresion->pliegos_pedido?> </td>
|
<td>_____<?=" ".lang("Produccion.pliegos_de")." "?>_____</td>
|
||||||
<td><?= $presupuesto->guardas ? "SI" : "NO" ?></td>
|
<td><?= $presupuesto->guardas ? "SI" : "NO" ?></td>
|
||||||
<td><?= $presupuesto->retractilado ? "SI" : "NO" ?></td>
|
<td><?= $presupuesto->retractilado ? "SI" : "NO" ?></td>
|
||||||
<td><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td>
|
<td><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td>
|
||||||
@ -360,7 +372,7 @@ $settings = $session->get('settings');
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-12 d-flex justify-content-center align-items-center">
|
<div class="col-md-12 d-flex justify-content-center align-items-center">
|
||||||
<span>© 2024 SAFEKAT. Todos los derechos reservados.</span>
|
<span class="footer">© 2024 SAFEKAT. Todos los derechos reservados.</span>
|
||||||
</div>
|
</div>
|
||||||
<script src=<?= site_url("themes/vuexy/vendor/libs/html2pdf/html2pdf.bundle.min.js") ?>></script>
|
<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/jquery/jquery.js') ?>"></script>
|
||||||
|
|||||||
@ -68,7 +68,6 @@ class Chat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this.chatHistoryBody[0]) {
|
if (this.chatHistoryBody[0]) {
|
||||||
//console.log("History body");
|
|
||||||
this.scrollbarChatHistory = new PerfectScrollbar(this.chatHistoryBody[0], {
|
this.scrollbarChatHistory = new PerfectScrollbar(this.chatHistoryBody[0], {
|
||||||
wheelPropagation: false,
|
wheelPropagation: false,
|
||||||
suppressScrollX: true,
|
suppressScrollX: true,
|
||||||
@ -126,12 +125,10 @@ class Chat {
|
|||||||
<span class="item-text">${state.text}</span>
|
<span class="item-text">${state.text}</span>
|
||||||
<span class="badge text-bg-secondary">${state.desc ?? ''}</span>
|
<span class="badge text-bg-secondary">${state.desc ?? ''}</span>
|
||||||
</div>`)
|
</div>`)
|
||||||
console.log(state)
|
|
||||||
return $state;
|
return $state;
|
||||||
}
|
}
|
||||||
this.selectClientUser.init()
|
this.selectClientUser.init()
|
||||||
this.selectItem.on('change', () => {
|
this.selectItem.on('change', () => {
|
||||||
console.log(this.selectClientUser.getVal(),this.selectClientUser.getText())
|
|
||||||
if (this.selectClientUser.getVal()) {
|
if (this.selectClientUser.getVal()) {
|
||||||
this.sendBtnMessageDepartment.attr('disabled', null)
|
this.sendBtnMessageDepartment.attr('disabled', null)
|
||||||
} else {
|
} else {
|
||||||
@ -181,6 +178,15 @@ class Chat {
|
|||||||
this.initSelectClient()
|
this.initSelectClient()
|
||||||
// setInterval(this._getChatMessage.bind(this), 10000)
|
// setInterval(this._getChatMessage.bind(this), 10000)
|
||||||
}
|
}
|
||||||
|
initOrdenTrabajo() {
|
||||||
|
this.chatType = "ot"
|
||||||
|
this._handleGetChatList()
|
||||||
|
this.sendBtnMessageDepartment.on("click", this._sendMessage.bind(this))
|
||||||
|
this.sendBtnMessageDepartmentClient.on("click", this._sendMessage.bind(this))
|
||||||
|
this.messageInput.on("keypress", this._sendMessagePressKey.bind(this))
|
||||||
|
this.initSelectClient()
|
||||||
|
// setInterval(this._getChatMessage.bind(this), 10000)
|
||||||
|
}
|
||||||
initContacts() {
|
initContacts() {
|
||||||
this.chatType = "internal"
|
this.chatType = "internal"
|
||||||
|
|
||||||
|
|||||||
@ -14,11 +14,14 @@ class OrdenTrabajoDatatable {
|
|||||||
{ data: 'cliente_nombre', searchable: false, sortable: false },
|
{ data: 'cliente_nombre', searchable: false, sortable: false },
|
||||||
{ data: 'presupuesto_titulo', searchable: false, sortable: false },
|
{ data: 'presupuesto_titulo', searchable: false, sortable: false },
|
||||||
{ data: 'ubicacion_nombre', searchable: false, sortable: false },
|
{ data: 'ubicacion_nombre', searchable: false, sortable: false },
|
||||||
{ data: 'total_tirada', searchable: false, sortable: false ,render : (d) => `<span class="autonumeric">${d}</span>`},
|
{ data: 'total_tirada', searchable: false, sortable: false, render: (d) => `<span class="autonumeric">${d}</span>` },
|
||||||
{ data: 'tipo_presupuesto_impresion', searchable: false, sortable: false },
|
{ data: 'tipo_presupuesto_impresion', searchable: false, sortable: false },
|
||||||
{
|
{
|
||||||
data: 'logo', searchable: false, sortable: false, render: (d, t) => {
|
data: 'logo', searchable: false, sortable: false, render: (d, t) => {
|
||||||
return `<img src="${d}" width="30px" height="30px" alt="logo-impresion" />`
|
return `<div class="logo-container">
|
||||||
|
<img class="d-block" src="${d.logo}" width="45px" height="45px" alt="logo-impresion" />
|
||||||
|
${d.imposicion ? `<span class="imposicion-overlay-image">${d.imposicion ?? ""}</span>` : ''}
|
||||||
|
</div>`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -50,8 +53,9 @@ class OrdenTrabajoDatatable {
|
|||||||
bottomStart: 'info',
|
bottomStart: 'info',
|
||||||
bottomEnd: 'paging'
|
bottomEnd: 'paging'
|
||||||
},
|
},
|
||||||
columnDefs : [
|
columnDefs: [
|
||||||
{ className: 'dt-center', targets: '_all' },
|
{ className: 'dt-center', targets: '_all' },
|
||||||
|
|
||||||
],
|
],
|
||||||
serverSide: true,
|
serverSide: true,
|
||||||
pageLength: 25,
|
pageLength: 25,
|
||||||
@ -59,7 +63,11 @@ class OrdenTrabajoDatatable {
|
|||||||
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
||||||
},
|
},
|
||||||
columns: this.datatableColumns,
|
columns: this.datatableColumns,
|
||||||
ajax: '/produccion/ordentrabajo/datatable'
|
ajax: '/produccion/ordentrabajo/datatable',
|
||||||
|
createdRow: (row,data,dataIndex) => {
|
||||||
|
$(row).css("border-left",`10px solid ${data.logo.color}`)
|
||||||
|
$(row).css("border-right",`10px solid ${data.logo.color}`)
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
initPendientes() {
|
initPendientes() {
|
||||||
@ -71,8 +79,9 @@ class OrdenTrabajoDatatable {
|
|||||||
bottomStart: 'info',
|
bottomStart: 'info',
|
||||||
bottomEnd: 'paging'
|
bottomEnd: 'paging'
|
||||||
},
|
},
|
||||||
columnDefs : [
|
columnDefs: [
|
||||||
{ className: 'dt-center', targets: '_all' },
|
{ className: 'dt-center', targets: '_all' },
|
||||||
|
|
||||||
],
|
],
|
||||||
serverSide: true,
|
serverSide: true,
|
||||||
pageLength: 25,
|
pageLength: 25,
|
||||||
@ -80,7 +89,12 @@ class OrdenTrabajoDatatable {
|
|||||||
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
||||||
},
|
},
|
||||||
columns: this.datatableColumns,
|
columns: this.datatableColumns,
|
||||||
ajax: '/produccion/ordentrabajo/datatable_pendientes'
|
ajax: '/produccion/ordentrabajo/datatable_pendientes',
|
||||||
|
createdRow: (row,data,dataIndex) => {
|
||||||
|
$(row).css("border-left",`20px solid ${data.logo.color}`)
|
||||||
|
$(row).css("border-right",`20px solid ${data.logo.color}`)
|
||||||
|
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
initFerroPendiente() {
|
initFerroPendiente() {
|
||||||
@ -94,11 +108,19 @@ class OrdenTrabajoDatatable {
|
|||||||
},
|
},
|
||||||
serverSide: true,
|
serverSide: true,
|
||||||
pageLength: 25,
|
pageLength: 25,
|
||||||
|
columnDefs: [
|
||||||
|
{ className: 'dt-center', targets: '_all' },
|
||||||
|
|
||||||
|
],
|
||||||
language: {
|
language: {
|
||||||
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
||||||
},
|
},
|
||||||
columns: this.datatableColumns,
|
columns: this.datatableColumns,
|
||||||
ajax: '/produccion/ordentrabajo/datatable_ferro_pendiente'
|
ajax: '/produccion/ordentrabajo/datatable_ferro_pendiente',
|
||||||
|
createdRow: (row,data,dataIndex) => {
|
||||||
|
$(row).css("border-left",`20px solid ${data.logo.color}`)
|
||||||
|
$(row).css("border-right",`20px solid ${data.logo.color}`)
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
initFerroOk() {
|
initFerroOk() {
|
||||||
@ -111,12 +133,20 @@ class OrdenTrabajoDatatable {
|
|||||||
bottomEnd: 'paging'
|
bottomEnd: 'paging'
|
||||||
},
|
},
|
||||||
serverSide: true,
|
serverSide: true,
|
||||||
|
columnDefs: [
|
||||||
|
{ className: 'dt-center', targets: '_all' },
|
||||||
|
|
||||||
|
],
|
||||||
pageLength: 25,
|
pageLength: 25,
|
||||||
language: {
|
language: {
|
||||||
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
||||||
},
|
},
|
||||||
columns: this.datatableColumns,
|
columns: this.datatableColumns,
|
||||||
ajax: '/produccion/ordentrabajo/datatable_ferro_ok'
|
ajax: '/produccion/ordentrabajo/datatable_ferro_ok',
|
||||||
|
createdRow: (row,data,dataIndex) => {
|
||||||
|
$(row).css("border-left",`20px solid ${data.logo.color}`)
|
||||||
|
$(row).css("border-right",`20px solid ${data.logo.color}`)
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
12
httpdocs/assets/js/safekat/pages/chatOrdenTrabajo.js
Normal file
12
httpdocs/assets/js/safekat/pages/chatOrdenTrabajo.js
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import Chat from '../components/chat.js'
|
||||||
|
import InternalMessages from "../components/internalMessagesSection.js"
|
||||||
|
$(function () {
|
||||||
|
let chat = new Chat($("#chat-orden-trabajo"))
|
||||||
|
chat.init()
|
||||||
|
chat.initOrdenTrabajo()
|
||||||
|
if ($("#internal_messages_chat").length > 0) {
|
||||||
|
let internalMessages = new InternalMessages($("#internal_messages_chat"))
|
||||||
|
internalMessages.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
@ -4,7 +4,7 @@ $(() => {
|
|||||||
margin: 2,
|
margin: 2,
|
||||||
filename: "PDF_OrdenTrabajo_" + $(".pdf-wrapper").data("id") + ".pdf",
|
filename: "PDF_OrdenTrabajo_" + $(".pdf-wrapper").data("id") + ".pdf",
|
||||||
image: { type: 'jpeg', quality: 1 },
|
image: { type: 'jpeg', quality: 1 },
|
||||||
html2canvas: { scale: 3 },
|
html2canvas: { scale: 4 },
|
||||||
jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
|
jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
|
||||||
};
|
};
|
||||||
let elementToPdf = $('body')[0]
|
let elementToPdf = $('body')[0]
|
||||||
|
|||||||
@ -399,7 +399,9 @@ class PresupuestoAdminEdit {
|
|||||||
self.tipo_impresion.val(response.data.tipo_impresion);
|
self.tipo_impresion.val(response.data.tipo_impresion);
|
||||||
self.POD.val(response.data.POD);
|
self.POD.val(response.data.POD);
|
||||||
|
|
||||||
AutoNumeric.getAutoNumericElement($('#total_aceptado_revisado')[0]).set(response.data.total_aceptado_revisado);
|
const totalAceptadoRevisado = response.data.total_aceptado_revisado != null ?
|
||||||
|
response.data.total_aceptado_revisado : response.data.resumen.total_aceptado;
|
||||||
|
AutoNumeric.getAutoNumericElement($('#total_aceptado_revisado')[0]).set(totalAceptadoRevisado);
|
||||||
|
|
||||||
$('#aprobado_by_at').html(response.data.aprobado_by_at);
|
$('#aprobado_by_at').html(response.data.aprobado_by_at);
|
||||||
|
|
||||||
|
|||||||
@ -414,6 +414,9 @@ class Resumen {
|
|||||||
if (total_aceptado_revisado && total_aceptado_revisado != 0) {
|
if (total_aceptado_revisado && total_aceptado_revisado != 0) {
|
||||||
data.total_aceptado_revisado = total_aceptado_revisado;
|
data.total_aceptado_revisado = total_aceptado_revisado;
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
data.total_aceptado_revisado = data.total_aceptado;
|
||||||
|
}
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import Ajax from "../../components/ajax.js"
|
import Ajax from "../../components/ajax.js"
|
||||||
import ClassSelect from "../../components/select2.js";
|
import ClassSelect from "../../components/select2.js";
|
||||||
import DatePicker from "../../components/datepicker.js";
|
import DatePicker from "../../components/datepicker.js";
|
||||||
import { alertConfirmationDelete, alertSuccess } from "../../components/alerts/sweetAlert.js";
|
import { alertConfirmAction, alertConfirmationDelete, alertSuccess } from "../../components/alerts/sweetAlert.js";
|
||||||
import Modal from "../../components/modal.js"
|
import Modal from "../../components/modal.js"
|
||||||
import FileUploadDropzone from '../../components/forms/fileUploadDropzone.js';
|
import FileUploadDropzone from '../../components/forms/fileUploadDropzone.js';
|
||||||
class OrdenTrabajo {
|
class OrdenTrabajo {
|
||||||
@ -26,7 +26,7 @@ class OrdenTrabajo {
|
|||||||
{ data: 'nombre', searchable: true, sortable: true, width: "20%" },
|
{ data: 'nombre', searchable: true, sortable: true, width: "20%" },
|
||||||
{ data: 'maquina_presupuesto_linea', searchable: true, sortable: true, width: "20%" },
|
{ data: 'maquina_presupuesto_linea', searchable: true, sortable: true, width: "20%" },
|
||||||
{ data: 'maquina_tarea', searchable: false, sortable: false, render: this._renderMaquinaSelectTable.bind(this), width: "20%" },
|
{ data: 'maquina_tarea', searchable: false, sortable: false, render: this._renderMaquinaSelectTable.bind(this), width: "20%" },
|
||||||
// { data: 'imposicion_id', searchable: false, sortable: false },
|
{ data: 'imposicion', searchable: false, sortable: false, render: this._renderImposicionSelectTable.bind(this) },
|
||||||
{ data: 'tiempo_estimado', searchable: false, sortable: false },
|
{ data: 'tiempo_estimado', searchable: false, sortable: false },
|
||||||
{ data: 'tiempo_real', searchable: false, sortable: false },
|
{ data: 'tiempo_real', searchable: false, sortable: false },
|
||||||
{
|
{
|
||||||
@ -42,13 +42,13 @@ class OrdenTrabajo {
|
|||||||
nameId: "orden_trabajo_id",
|
nameId: "orden_trabajo_id",
|
||||||
getUri: '/produccion/ordentrabajo/get_files',
|
getUri: '/produccion/ordentrabajo/get_files',
|
||||||
postUri: '/produccion/ordentrabajo/upload_files',
|
postUri: '/produccion/ordentrabajo/upload_files',
|
||||||
resourcePath : 'orden_trabajo/' + this.modelId
|
resourcePath: 'orden_trabajo/' + this.modelId
|
||||||
}
|
}
|
||||||
if ($(this.configUploadDropzone.domElement).length > 0) {
|
if ($(this.configUploadDropzone.domElement).length > 0) {
|
||||||
this.fileUploadDropzone = new FileUploadDropzone(this.configUploadDropzone)
|
this.fileUploadDropzone = new FileUploadDropzone(this.configUploadDropzone)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
initDropFiles(){
|
initDropFiles() {
|
||||||
if ($(this.configUploadDropzone.domElement).length > 0) {
|
if ($(this.configUploadDropzone.domElement).length > 0) {
|
||||||
this.fileUploadDropzone.init()
|
this.fileUploadDropzone.init()
|
||||||
}
|
}
|
||||||
@ -60,13 +60,7 @@ class OrdenTrabajo {
|
|||||||
dateFormat: "Y-m-d",
|
dateFormat: "Y-m-d",
|
||||||
allowInput: true,
|
allowInput: true,
|
||||||
}
|
}
|
||||||
this.tiempoProcesamiento = new DatePicker(this.otForm.find("#ot-tiempo-procesamiento"), {
|
this.tiempoProcesamiento = this.otForm.find("#ot-tiempo-procesamiento")
|
||||||
dateFormat: "H:i",
|
|
||||||
enableTime: true,
|
|
||||||
noCalendar: true,
|
|
||||||
time_24hr: true,
|
|
||||||
allowInput: true,
|
|
||||||
})
|
|
||||||
this.fechaImpresion = new DatePicker(this.otForm.find("#ot-fecha-impresion"), option)
|
this.fechaImpresion = new DatePicker(this.otForm.find("#ot-fecha-impresion"), option)
|
||||||
this.fechaEncuadernado = new DatePicker(this.otForm.find("#ot-fecha-encuadernado"), option)
|
this.fechaEncuadernado = new DatePicker(this.otForm.find("#ot-fecha-encuadernado"), option)
|
||||||
this.fechaEntregaExterno = new DatePicker(this.otForm.find("#ot-fecha-entrega-externo"), option)
|
this.fechaEntregaExterno = new DatePicker(this.otForm.find("#ot-fecha-entrega-externo"), option)
|
||||||
@ -78,18 +72,45 @@ class OrdenTrabajo {
|
|||||||
this.ferroOk = new DatePicker(this.otForm.find("#ot-ferro-ok"), option)
|
this.ferroOk = new DatePicker(this.otForm.find("#ot-ferro-ok"), option)
|
||||||
this.plakeneTraslucido = new DatePicker(this.otForm.find("#ot-plakene-traslucido"), option)
|
this.plakeneTraslucido = new DatePicker(this.otForm.find("#ot-plakene-traslucido"), option)
|
||||||
this.impresionColor = new DatePicker(this.otForm.find("#ot-impresion-color"), option)
|
this.impresionColor = new DatePicker(this.otForm.find("#ot-impresion-color"), option)
|
||||||
|
this.impresionBN = new DatePicker(this.otForm.find("#ot-impresion-bn"), option)
|
||||||
|
|
||||||
this.portada = new DatePicker(this.otForm.find("#ot-portada"), option)
|
this.portada = new DatePicker(this.otForm.find("#ot-portada"), option)
|
||||||
this.plastificadoMate = new DatePicker(this.otForm.find("#ot-plastificado-mate"), option)
|
this.plastificadoMate = new DatePicker(this.otForm.find("#ot-plastificado-mate"), option)
|
||||||
this.prepGuillotina = new DatePicker(this.otForm.find("#ot-prep-guillotina"), option)
|
this.prepGuillotina = new DatePicker(this.otForm.find("#ot-prep-guillotina"), option)
|
||||||
|
this.prepCosido = new DatePicker(this.otForm.find("#ot-prep-cosido"), option)
|
||||||
|
this.prepGrapado = new DatePicker(this.otForm.find("#ot-prep-grapado"), option)
|
||||||
|
this.prepSolapa = new DatePicker(this.otForm.find("#ot-prep-solapa"), option)
|
||||||
|
|
||||||
|
this.prepPrototipo = new DatePicker(this.otForm.find("#ot-prep-prototipo"), option)
|
||||||
|
this.prepMarcapaginas = new DatePicker(this.otForm.find("#ot-prep-marcapaginas"), option)
|
||||||
|
this.prepRetractilado = new DatePicker(this.otForm.find("#ot-prep-retractilado"), option)
|
||||||
|
this.prepRetractilado5 = new DatePicker(this.otForm.find("#ot-prep-retractilado5"), option)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
this.espiral = new DatePicker(this.otForm.find("#ot-espiral"), option)
|
this.espiral = new DatePicker(this.otForm.find("#ot-espiral"), option)
|
||||||
this.embalaje = new DatePicker(this.otForm.find("#ot-embalaje"), option)
|
this.embalaje = new DatePicker(this.otForm.find("#ot-embalaje"), option)
|
||||||
this.envio = new DatePicker(this.otForm.find("#ot-envio"), option)
|
this.envio = new DatePicker(this.otForm.find("#ot-envio"), option)
|
||||||
|
|
||||||
|
//REVISION PREIMPRESION
|
||||||
|
this.preFormatoAt = new DatePicker(this.otForm.find("#ot-preformato-date"), option)
|
||||||
|
this.preLomoAt = new DatePicker(this.otForm.find("#ot-prelomo-date"), option)
|
||||||
|
this.preSolapaAt = new DatePicker(this.otForm.find("#ot-presolapa-date"), option)
|
||||||
|
this.preCodBarrasAt = new DatePicker(this.otForm.find("#ot-precodbarras-date"), option)
|
||||||
|
this.preImposicionAt = new DatePicker(this.otForm.find("#ot-preimposicion-date"), option)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
eventTareas() {
|
eventTareas() {
|
||||||
this.otForm.on("change", ".select-maquina-tarea-datatable", this.handleTareaChange.bind(this))
|
this.otForm.on("change", ".select-maquina-tarea-datatable", this.handleTareaChange.bind(this))
|
||||||
this.otForm.on("change", ".orden-tarea", this.handleTareaChange.bind(this))
|
this.otForm.on("change", ".orden-tarea", this.handleTareaChange.bind(this))
|
||||||
|
this.otForm.on("change", ".select-imposicion-tarea-datatable", this.handleTareaChange.bind(this))
|
||||||
this.otForm.on("click", ".increase-order", (event) => {
|
this.otForm.on("click", ".increase-order", (event) => {
|
||||||
const input_orden_tarea = $(event.currentTarget).parent().parent().find('.orden-tarea')
|
const input_orden_tarea = $(event.currentTarget).parent().parent().find('.orden-tarea')
|
||||||
let actual_value = parseInt(input_orden_tarea.val())
|
let actual_value = parseInt(input_orden_tarea.val())
|
||||||
@ -105,6 +126,7 @@ class OrdenTrabajo {
|
|||||||
}
|
}
|
||||||
unbindEventTareas() {
|
unbindEventTareas() {
|
||||||
this.otForm.off("change", ".select-maquina-tarea-datatable")
|
this.otForm.off("change", ".select-maquina-tarea-datatable")
|
||||||
|
this.otForm.off("change", ".select-imposicion-tarea-datatable")
|
||||||
this.otForm.off("change", ".orden-tarea")
|
this.otForm.off("change", ".orden-tarea")
|
||||||
this.otForm.off("click", ".increase-order")
|
this.otForm.off("click", ".increase-order")
|
||||||
this.otForm.off("click", ".decrease-order")
|
this.otForm.off("click", ".decrease-order")
|
||||||
@ -117,7 +139,7 @@ class OrdenTrabajo {
|
|||||||
this.tareasTableItem.on("xhr.dt", this.unbindEventTareas.bind(this))
|
this.tareasTableItem.on("xhr.dt", this.unbindEventTareas.bind(this))
|
||||||
this.otForm.on("click", "#btn-upload-portada", this.handleUploadPortada.bind(this))
|
this.otForm.on("click", "#btn-upload-portada", this.handleUploadPortada.bind(this))
|
||||||
this.otForm.on("click", "#btn-delete-portada", this.handleDeletePortada.bind(this))
|
this.otForm.on("click", "#btn-delete-portada", this.handleDeletePortada.bind(this))
|
||||||
this.otForm.on("click", "#btn-finalizar-orden-pedido", this.handleFinalizarPedido.bind(this))
|
this.btnFinalizarPedido.on("click", this.handleFinalizarPedido.bind(this))
|
||||||
this.tareasTableItem.on("click", ".ot-tarea-btn-delete", this.handleTareaDeleteConfirmation.bind(this))
|
this.tareasTableItem.on("click", ".ot-tarea-btn-delete", this.handleTareaDeleteConfirmation.bind(this))
|
||||||
this.item.on("click", "#btn-reset-tareas", this.handleResetTareasDeleteConfirmation.bind(this))
|
this.item.on("click", "#btn-reset-tareas", this.handleResetTareasDeleteConfirmation.bind(this))
|
||||||
this.otForm.on("click", ".ot-tarea-comment", this.handleNoteTarea.bind(this))
|
this.otForm.on("click", ".ot-tarea-comment", this.handleNoteTarea.bind(this))
|
||||||
@ -172,6 +194,14 @@ class OrdenTrabajo {
|
|||||||
<option value="${d.maquina_id}" selected="selected">${d.maquina_name ?? ''}</option>
|
<option value="${d.maquina_id}" selected="selected">${d.maquina_name ?? ''}</option>
|
||||||
</select>`
|
</select>`
|
||||||
|
|
||||||
|
}
|
||||||
|
_renderImposicionSelectTable(d, t) {
|
||||||
|
|
||||||
|
let render = `<select id="select-imposicion-tarea-${d.id}" data-imposicion-id="${d.imposicion_id}" data-id="${d.id}" name="imposicion_id" class="select2 form-select select-imposicion-tarea-datatable ${d.imposicion_id ? '' : 'is-invalid'}">
|
||||||
|
<option value="${d.imposicion_id}" selected="selected">${d.name ?? ''}</option>
|
||||||
|
</select>`
|
||||||
|
return render
|
||||||
|
|
||||||
}
|
}
|
||||||
_renderActionCell(d, t) {
|
_renderActionCell(d, t) {
|
||||||
|
|
||||||
@ -195,7 +225,6 @@ class OrdenTrabajo {
|
|||||||
}
|
}
|
||||||
createSelectMaquinaTarea() {
|
createSelectMaquinaTarea() {
|
||||||
try {
|
try {
|
||||||
console.log("Create selects")
|
|
||||||
this.summaryData.tasks.forEach(element => {
|
this.summaryData.tasks.forEach(element => {
|
||||||
let selectItem = this.item.find("#select-maquina-tarea-" + element.id);
|
let selectItem = this.item.find("#select-maquina-tarea-" + element.id);
|
||||||
if (element.presupuesto_linea_id && element.is_corte == false) this.createSelectMaquinaImpresion(selectItem)
|
if (element.presupuesto_linea_id && element.is_corte == false) this.createSelectMaquinaImpresion(selectItem)
|
||||||
@ -204,6 +233,26 @@ class OrdenTrabajo {
|
|||||||
if (element.presupuesto_manipulado_id || element.is_corte) this.createSelectMaquinaManipulado(selectItem)
|
if (element.presupuesto_manipulado_id || element.is_corte) this.createSelectMaquinaManipulado(selectItem)
|
||||||
if (element.presupuesto_preimpresion_id) this.createSelectMaquinaAll(selectItem)
|
if (element.presupuesto_preimpresion_id) this.createSelectMaquinaAll(selectItem)
|
||||||
if (element.presupuesto_extra_id) this.createSelectMaquinaAll(selectItem)
|
if (element.presupuesto_extra_id) this.createSelectMaquinaAll(selectItem)
|
||||||
|
if (this.summaryData.impresion_interior_bn) {
|
||||||
|
let isTareaImpresionInteriorBN = this.summaryData.impresion_interior_bn?.presupuesto_linea_id == element.presupuesto_linea_id && element.is_corte == false
|
||||||
|
if (isTareaImpresionInteriorBN) {
|
||||||
|
let selectItemImposicion = this.item.find("#select-imposicion-tarea-" + element.id);
|
||||||
|
this.createSelectImposicion(selectItemImposicion)
|
||||||
|
} else {
|
||||||
|
let selectItemImposicion = this.item.find("#select-imposicion-tarea-" + element.id);
|
||||||
|
selectItemImposicion.addClass("d-none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.summaryData.impresion_interior_color) {
|
||||||
|
let isTareaImpresionInteriorColor = this.summaryData.impresion_interior_color?.presupuesto_linea_id == element.presupuesto_linea_id && element.is_corte == false
|
||||||
|
if (isTareaImpresionInteriorColor) {
|
||||||
|
let selectItemImposicion = this.item.find("#select-imposicion-tarea-" + element.id);
|
||||||
|
this.createSelectImposicion(selectItemImposicion)
|
||||||
|
} else {
|
||||||
|
let selectItemImposicion = this.item.find("#select-imposicion-tarea-" + element.id);
|
||||||
|
selectItemImposicion.addClass("d-none");
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
} finally {
|
} finally {
|
||||||
@ -262,6 +311,25 @@ class OrdenTrabajo {
|
|||||||
maquinaSelects.reset()
|
maquinaSelects.reset()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
createSelectImposicion(selectItem) {
|
||||||
|
let imposicionId = selectItem.data("imposicion-id")
|
||||||
|
let imposicionSelect = new ClassSelect(selectItem, `/imposiciones/select`, "Seleccione una imposición", true);
|
||||||
|
|
||||||
|
imposicionSelect.config.templateResult = (state) => {
|
||||||
|
let $state = $(`
|
||||||
|
<div class="d-flex flex-column justify-content-start align-items-start gap-1">
|
||||||
|
<span class="item-text">${state.text}</span>
|
||||||
|
<span class="badge text-bg-secondary">${state.desc ?? ''}</span>
|
||||||
|
</div>`)
|
||||||
|
return $state;
|
||||||
|
}
|
||||||
|
imposicionSelect.init();
|
||||||
|
if (imposicionId) {
|
||||||
|
imposicionSelect.setVal(imposicionId)
|
||||||
|
} else {
|
||||||
|
imposicionSelect.reset()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -277,15 +345,19 @@ class OrdenTrabajo {
|
|||||||
try {
|
try {
|
||||||
this.summaryData = data
|
this.summaryData = data
|
||||||
this.otForm.off("change", ".ot-date")
|
this.otForm.off("change", ".ot-date")
|
||||||
|
this.otForm.off("change", ".ot-pedido")
|
||||||
|
this.otForm.off("change", ".ot-pedido-check")
|
||||||
this.otForm.off("change", ".ot-preview")
|
this.otForm.off("change", ".ot-preview")
|
||||||
this.fillOtDetails()
|
this.fillOtDetails()
|
||||||
this.fillOtDates()
|
this.fillOtDates()
|
||||||
this.fillPreimpresionReview()
|
this.fillPreimpresionReview()
|
||||||
this.datatableTareas.ajax.reload()
|
this.datatableTareas.ajax.reload()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
console.error(error)
|
||||||
} finally {
|
} finally {
|
||||||
this.otForm.on("change", ".ot-date", this.handleDateChange.bind(this))
|
this.otForm.on("change", ".ot-date", this.handleDateChange.bind(this))
|
||||||
|
this.otForm.on("change", ".ot-pedido", this.handlePedidoChange.bind(this))
|
||||||
|
this.otForm.on("change", ".ot-pedido-check", this.handlePedidoCheckChange.bind(this))
|
||||||
this.otForm.on("change", ".ot-preview", this.handlePreimpresionReviewChange.bind(this))
|
this.otForm.on("change", ".ot-preview", this.handlePreimpresionReviewChange.bind(this))
|
||||||
Notiflix.Block.remove('.section-block');
|
Notiflix.Block.remove('.section-block');
|
||||||
|
|
||||||
@ -294,7 +366,7 @@ class OrdenTrabajo {
|
|||||||
}
|
}
|
||||||
handleSummaryError(error) {
|
handleSummaryError(error) {
|
||||||
Notiflix.Block.remove('.section-block');
|
Notiflix.Block.remove('.section-block');
|
||||||
}
|
}
|
||||||
fillPreimpresionReview() {
|
fillPreimpresionReview() {
|
||||||
this.otForm.find("[name=fecha_entrega_warning]").prop("checked", this.summaryData.ot.fecha_entrega_warning)
|
this.otForm.find("[name=fecha_entrega_warning]").prop("checked", this.summaryData.ot.fecha_entrega_warning)
|
||||||
this.otForm.find("[name=fecha_entrega_warning_revised]").prop("checked", this.summaryData.ot.fecha_entrega_warning_revised)
|
this.otForm.find("[name=fecha_entrega_warning_revised]").prop("checked", this.summaryData.ot.fecha_entrega_warning_revised)
|
||||||
@ -305,41 +377,57 @@ class OrdenTrabajo {
|
|||||||
this.otForm.find("[name=revisar_codigo_barras]").prop("checked", this.summaryData.ot.revisar_codigo_barras)
|
this.otForm.find("[name=revisar_codigo_barras]").prop("checked", this.summaryData.ot.revisar_codigo_barras)
|
||||||
this.otForm.find("[name=realizar_imposicion]").prop("checked", this.summaryData.ot.realizar_imposicion)
|
this.otForm.find("[name=realizar_imposicion]").prop("checked", this.summaryData.ot.realizar_imposicion)
|
||||||
this.otForm.find("[name=enviar_impresion]").prop("checked", this.summaryData.ot.enviar_impresion)
|
this.otForm.find("[name=enviar_impresion]").prop("checked", this.summaryData.ot.enviar_impresion)
|
||||||
|
this.otForm.find("[name=inaplazable]").prop("checked", this.summaryData.pedido.inaplazable)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
fillOtDetails() {
|
fillOtDetails() {
|
||||||
const progreso = this.summaryData.ot.progreso
|
const progreso = this.summaryData.ot.progreso
|
||||||
// this.otForm.find("#ot-progress-bar").attr('aria-valuenow', progreso).text(progreso + "%").css("width", progreso + "%")
|
this.otForm.find("#ot-progress-bar").attr('aria-valuenow', progreso).text(progreso + "%").css("width", progreso + "%")
|
||||||
// this.otForm.find("#ot-paginas").text(this.summaryData.presupuesto.paginas)
|
|
||||||
// this.otForm.find("#ot-tirada").text(this.summaryData.presupuesto.tirada)
|
|
||||||
// this.otForm.find("#ot-merma").text(this.summaryData.presupuesto.merma)
|
|
||||||
}
|
}
|
||||||
fillOtDates() {
|
fillOtDates() {
|
||||||
this.fechaImpresion.setDate(this.summaryData.dates.fecha_impresion_at)
|
this.fechaImpresion.setDate(this.summaryData.pedido.fecha_impresion)
|
||||||
this.fechaEncuadernado.setDate(this.summaryData.dates.fecha_encuadernado_at)
|
this.fechaEncuadernado.setDate(this.summaryData.pedido.fecha_encuadernado)
|
||||||
// this.fechaEntregaExterno.setDate(this.summaryData.dates.fecha_entrega_externo_)
|
this.fechaEntregaExterno.setDate(this.summaryData.pedido.fecha_entrega_externo)
|
||||||
this.fechaEntregaReal.setDate(this.summaryData.dates.fecha_entrega_real_at)
|
this.fechaEntregaReal.setDate(this.summaryData.pedido.fecha_entrega_real)
|
||||||
this.fechaEntregaEstimada.setDate(this.summaryData.dates.fecha_entrega_at)
|
// this.fechaEntregaEstimada.setDate(this.summaryData.pedido.fecha_entrega_at)
|
||||||
|
|
||||||
this.pendienteFerro.setDate(this.summaryData.dates.pendiente_ferro_at)
|
this.pendienteFerro.setDate(this.summaryData.dates.pendiente_ferro_at)
|
||||||
this.ferroCliente.setDate(this.summaryData.dates.ferro_en_cliente_at)
|
this.ferroCliente.setDate(this.summaryData.dates.ferro_en_cliente_at)
|
||||||
this.ferroOk.setDate(this.summaryData.dates.ferro_ok_at)
|
this.ferroOk.setDate(this.summaryData.dates.ferro_ok_at)
|
||||||
// this.plakeneTraslucido.setDate(this.summaryData.dates.fecha_impresion_at)
|
// this.plakeneTraslucido.setDate(this.summaryData.dates.fecha_impresion_at)
|
||||||
this.impresionColor.setDate(this.summaryData.dates.interior_color_at)
|
this.impresionColor.setDate(this.summaryData.dates.interior_color_at)
|
||||||
|
this.impresionBN.setDate(this.summaryData.dates.interior_bn_at)
|
||||||
this.portada.setDate(this.summaryData.dates.cubierta_at)
|
this.portada.setDate(this.summaryData.dates.cubierta_at)
|
||||||
this.plastificadoMate.setDate(this.summaryData.dates.plastificado_at)
|
this.plastificadoMate.setDate(this.summaryData.dates.plastificado_at)
|
||||||
this.prepGuillotina.setDate(this.summaryData.dates.corte_at)
|
this.prepGuillotina.setDate(this.summaryData.dates.corte_at)
|
||||||
|
this.prepCosido.setDate(this.summaryData.dates.cosido_at)
|
||||||
|
this.prepSolapa.setDate(this.summaryData.dates.solapa_at)
|
||||||
|
this.prepGrapado.setDate(this.summaryData.dates.grapado_at)
|
||||||
|
|
||||||
|
this.prepPrototipo.setDate(this.summaryData.dates.prototipo_at)
|
||||||
|
this.prepMarcapaginas.setDate(this.summaryData.dates.marcapaginas_at)
|
||||||
|
this.prepRetractilado.setDate(this.summaryData.dates.retractilado_at)
|
||||||
|
this.prepRetractilado5.setDate(this.summaryData.dates.retractilado5_at)
|
||||||
|
|
||||||
this.espiral.setDate(this.summaryData.dates.fecha_impresion_at)
|
this.espiral.setDate(this.summaryData.dates.fecha_impresion_at)
|
||||||
this.embalaje.setDate(this.summaryData.dates.embalaje_at)
|
this.embalaje.setDate(this.summaryData.dates.embalaje_at)
|
||||||
this.envio.setDate(this.summaryData.dates.envio_at)
|
this.envio.setDate(this.summaryData.dates.envio_at)
|
||||||
this.pedidoEnEsperaCheck.prop("checked",this.summaryData.ot.is_pedido_espera);
|
this.pedidoEnEsperaCheck.prop("checked", this.summaryData.ot.is_pedido_espera);
|
||||||
if(this.summaryData.ot.pedido_espera_by){
|
this.tiempoProcesamiento.val(this.summaryData.tiempo_procesamiento);
|
||||||
this.pedidoEnEsperaBy.text([this.summaryData.ot.pedido_espera_by.first_name,this.summaryData.ot.pedido_espera_by.last_name].join(" "))
|
if (this.summaryData.ot.pedido_espera_by) {
|
||||||
}else{
|
this.pedidoEnEsperaBy.text([this.summaryData.ot.pedido_espera_by.first_name, this.summaryData.ot.pedido_espera_by.last_name].join(" "))
|
||||||
|
} else {
|
||||||
this.pedidoEnEsperaBy.text("");
|
this.pedidoEnEsperaBy.text("");
|
||||||
}
|
}
|
||||||
this.otEstado.val(this.summaryData.ot.estado)
|
this.otEstado.val(this.summaryData.ot.estado)
|
||||||
|
this.preFormatoAt.setDate(this.summaryData.dates.pre_formato_at)
|
||||||
|
this.preLomoAt.setDate(this.summaryData.dates.pre_lomo_at)
|
||||||
|
this.preSolapaAt.setDate(this.summaryData.dates.pre_solapa_at)
|
||||||
|
this.preCodBarrasAt.setDate(this.summaryData.dates.pre_codbarras_at)
|
||||||
|
this.preImposicionAt.setDate(this.summaryData.dates.pre_imposicion_at)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -349,7 +437,6 @@ class OrdenTrabajo {
|
|||||||
const data = {}
|
const data = {}
|
||||||
data[key] = $(event.currentTarget).val()
|
data[key] = $(event.currentTarget).val()
|
||||||
data["orden_trabajo_tarea_id"] = $(event.currentTarget).data("id")
|
data["orden_trabajo_tarea_id"] = $(event.currentTarget).data("id")
|
||||||
console.log(data);
|
|
||||||
const ajax = new Ajax(
|
const ajax = new Ajax(
|
||||||
"/produccion/ordentrabajo/update/tarea",
|
"/produccion/ordentrabajo/update/tarea",
|
||||||
data,
|
data,
|
||||||
@ -379,7 +466,6 @@ class OrdenTrabajo {
|
|||||||
}
|
}
|
||||||
handleTareaChangeError(error) { }
|
handleTareaChangeError(error) { }
|
||||||
handleOtComment(event) {
|
handleOtComment(event) {
|
||||||
console.log($(event.currentTarget).val())
|
|
||||||
const ajax = new Ajax(
|
const ajax = new Ajax(
|
||||||
"/produccion/ordentrabajo/update",
|
"/produccion/ordentrabajo/update",
|
||||||
{
|
{
|
||||||
@ -405,7 +491,6 @@ class OrdenTrabajo {
|
|||||||
data[key] = $(event.currentTarget).val()
|
data[key] = $(event.currentTarget).val()
|
||||||
data["orden_trabajo_id"] = this.modelId
|
data["orden_trabajo_id"] = this.modelId
|
||||||
data["name"] = key;
|
data["name"] = key;
|
||||||
console.log(data)
|
|
||||||
const ajax = new Ajax(
|
const ajax = new Ajax(
|
||||||
"/produccion/ordentrabajo/update/date",
|
"/produccion/ordentrabajo/update/date",
|
||||||
data,
|
data,
|
||||||
@ -426,6 +511,36 @@ class OrdenTrabajo {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
handleDateChangeError(errors) { }
|
handleDateChangeError(errors) { }
|
||||||
|
handlePedidoChange(event) {
|
||||||
|
const key = $(event.currentTarget).attr("name")
|
||||||
|
const data = {}
|
||||||
|
const element = $(event.currentTarget);
|
||||||
|
data[key] = $(event.currentTarget).val()
|
||||||
|
data["orden_trabajo_id"] = this.modelId
|
||||||
|
data["name"] = key;
|
||||||
|
const ajax = new Ajax(
|
||||||
|
"/produccion/ordentrabajo/update/pedido/date",
|
||||||
|
data,
|
||||||
|
null,
|
||||||
|
this.handleDateChangeSuccess.bind(this, element),
|
||||||
|
this.handleDateChangeError.bind(this)
|
||||||
|
)
|
||||||
|
ajax.post();
|
||||||
|
}
|
||||||
|
handlePedidoCheckChange(event) {
|
||||||
|
const key = $(event.currentTarget).attr("name")
|
||||||
|
const data = {}
|
||||||
|
data[key] = $(event.currentTarget).is(":checked") ? 1 : 0
|
||||||
|
data["orden_trabajo_id"] = this.modelId
|
||||||
|
const ajax = new Ajax(
|
||||||
|
"/produccion/ordentrabajo/update/pedido",
|
||||||
|
data,
|
||||||
|
null,
|
||||||
|
this.handlePreimpresionReviewChangeSuccess.bind(this),
|
||||||
|
this.handlePreimpresionReviewChangeError.bind(this)
|
||||||
|
)
|
||||||
|
ajax.post();
|
||||||
|
}
|
||||||
handlePreimpresionReviewChange(event) {
|
handlePreimpresionReviewChange(event) {
|
||||||
const key = $(event.currentTarget).attr("name")
|
const key = $(event.currentTarget).attr("name")
|
||||||
const data = {}
|
const data = {}
|
||||||
@ -534,7 +649,12 @@ class OrdenTrabajo {
|
|||||||
this.handleEstadoChangeSuccess.bind(this),
|
this.handleEstadoChangeSuccess.bind(this),
|
||||||
this.handleEstadoChangeError.bind(this)
|
this.handleEstadoChangeError.bind(this)
|
||||||
);
|
);
|
||||||
ajax.post()
|
alertConfirmAction("Esta acción marcará la orden de trabjao como FINALIZADA")
|
||||||
|
.then(result => {
|
||||||
|
if (result.isConfirmed) {
|
||||||
|
ajax.post()
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
handleEstadoChangeSuccess(response) {
|
handleEstadoChangeSuccess(response) {
|
||||||
popSuccessAlert(response.message)
|
popSuccessAlert(response.message)
|
||||||
|
|||||||
@ -151,6 +151,9 @@ class PlanningRotativa {
|
|||||||
language: {
|
language: {
|
||||||
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
||||||
},
|
},
|
||||||
|
createdRow: (row,data,dataIndex) => {
|
||||||
|
this.getColorOtStatus(row,data)
|
||||||
|
},
|
||||||
columns: this.datatableColumns,
|
columns: this.datatableColumns,
|
||||||
ajax: '/produccion/ordentrabajo/planning/rotativa/datatable'
|
ajax: '/produccion/ordentrabajo/planning/rotativa/datatable'
|
||||||
});
|
});
|
||||||
@ -165,7 +168,9 @@ class PlanningRotativa {
|
|||||||
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
||||||
},
|
},
|
||||||
columns: this.datatablePlanaColumns,
|
columns: this.datatablePlanaColumns,
|
||||||
|
createdRow: (row,data,dataIndex) => {
|
||||||
|
this.getColorOtStatus(row,data)
|
||||||
|
},
|
||||||
ajax: {
|
ajax: {
|
||||||
url : '/produccion/ordentrabajo/planning/plana/datatable',
|
url : '/produccion/ordentrabajo/planning/plana/datatable',
|
||||||
data : d => {
|
data : d => {
|
||||||
@ -245,7 +250,7 @@ class PlanningRotativa {
|
|||||||
this.tablePlanningPlana.on('change', ".pliegos-check", this.calcPliegosCheck.bind(this))
|
this.tablePlanningPlana.on('change', ".pliegos-check", this.calcPliegosCheck.bind(this))
|
||||||
}
|
}
|
||||||
_renderBtnAction(d) {
|
_renderBtnAction(d) {
|
||||||
return `<a href="/produccion/ordentrabajo/edit/${d.otId}" class="ot-tarea-comment" data-id="${d.otId}"><i class="ti ti-eye"></i></a>`
|
return `<a href="/produccion/ordentrabajo/edit/${d.data.otId}" class="ot-tarea-comment" data-id="${d.data.otId}"><i class="ti ti-eye"></i></a>`
|
||||||
}
|
}
|
||||||
_columnFiltering() {
|
_columnFiltering() {
|
||||||
this.api().columns()
|
this.api().columns()
|
||||||
@ -362,7 +367,15 @@ class PlanningRotativa {
|
|||||||
}
|
}
|
||||||
toggleCorteError(){
|
toggleCorteError(){
|
||||||
}
|
}
|
||||||
|
getColorOtStatus(row,data){
|
||||||
|
let ajax = new Ajax("/produccion/ordentrabajo/color/"+data.otId,null,null,
|
||||||
|
(response) => {
|
||||||
|
$(row).css("border-left",`10px solid ${response.color}`)
|
||||||
|
$(row).css("border-right",`10px solid ${response.color}`)
|
||||||
|
},null
|
||||||
|
)
|
||||||
|
ajax.get()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
17
httpdocs/themes/vuexy/css/ot.css
Normal file
17
httpdocs/themes/vuexy/css/ot.css
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
.imposicion-overlay-image
|
||||||
|
{
|
||||||
|
position: absolute;
|
||||||
|
top: 75%;
|
||||||
|
left: 25%;
|
||||||
|
transform: translate(-10%, -10%);
|
||||||
|
background-color:rgb(255, 255, 255);
|
||||||
|
color: black;
|
||||||
|
font-size: 11px;
|
||||||
|
text-align: center;
|
||||||
|
border : 1px solid;
|
||||||
|
|
||||||
|
}
|
||||||
|
.logo-container{
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
@ -1,348 +0,0 @@
|
|||||||
@page {
|
|
||||||
size: A4;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
@media print {
|
|
||||||
body,html {
|
|
||||||
width: 210mm;
|
|
||||||
height: 297mm;
|
|
||||||
max-width: 210mm;
|
|
||||||
max-height: 297mm;
|
|
||||||
print-color-adjust: exact;
|
|
||||||
}
|
|
||||||
/* ... the rest of the rules ... */
|
|
||||||
}
|
|
||||||
html {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
width: 210mm;
|
|
||||||
height: 297mm;
|
|
||||||
max-width: 210mm;
|
|
||||||
font-size : 11px;
|
|
||||||
max-height: 297mm;
|
|
||||||
background-color: #f9f9f9;
|
|
||||||
}
|
|
||||||
body{
|
|
||||||
border: 0px solid;
|
|
||||||
padding: 20px;
|
|
||||||
max-width: 210mm;
|
|
||||||
max-height: 297mm;
|
|
||||||
|
|
||||||
}
|
|
||||||
.cubierta{
|
|
||||||
color: #007bff;
|
|
||||||
}
|
|
||||||
.encuadernacion{
|
|
||||||
color: green;
|
|
||||||
}
|
|
||||||
.impresion{
|
|
||||||
color: #ff4000;
|
|
||||||
}
|
|
||||||
.container {
|
|
||||||
width: 100%;
|
|
||||||
width: 210mm;
|
|
||||||
height: 297mm;
|
|
||||||
background: #fff;
|
|
||||||
padding: 20px;
|
|
||||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
|
||||||
border: 2px solid;
|
|
||||||
|
|
||||||
}
|
|
||||||
.header {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
.cover{
|
|
||||||
display: flex;
|
|
||||||
justify-content: start;
|
|
||||||
align-items: center;
|
|
||||||
gap: 10px;
|
|
||||||
margin-top: 10px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
.portada-info{
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.impresion-tipo-row{
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-items: center;
|
|
||||||
justify-content: end;
|
|
||||||
width: 100%;
|
|
||||||
height: 5mm;
|
|
||||||
margin: 2px;
|
|
||||||
}
|
|
||||||
.portada-row{
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
background-color: #4ba0fccc;
|
|
||||||
width: 100%;
|
|
||||||
height: 5mm;
|
|
||||||
border: solid 2px;
|
|
||||||
margin: 2px;
|
|
||||||
border-color: black;
|
|
||||||
|
|
||||||
}
|
|
||||||
.portada-row-2{
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-items: center;
|
|
||||||
width: 100%;
|
|
||||||
height: 35mm;
|
|
||||||
margin: 2px;
|
|
||||||
border: 2px solid;
|
|
||||||
border-color: black;
|
|
||||||
|
|
||||||
}
|
|
||||||
.portada{
|
|
||||||
height: 40mm;
|
|
||||||
}
|
|
||||||
.presupuesto-title{
|
|
||||||
color: #007bff;
|
|
||||||
font-size: medium;
|
|
||||||
line-height: 0;
|
|
||||||
}
|
|
||||||
.pl-2{
|
|
||||||
padding-left: 0.5rem;
|
|
||||||
}
|
|
||||||
.pr-2{
|
|
||||||
padding-right: 0.5rem;
|
|
||||||
}
|
|
||||||
.pt-2{
|
|
||||||
padding-top: 0.5rem;
|
|
||||||
}
|
|
||||||
.flex-row{
|
|
||||||
display: flex;
|
|
||||||
width: 100%;
|
|
||||||
justify-content: start;
|
|
||||||
align-items: flex-start;
|
|
||||||
}
|
|
||||||
.date{
|
|
||||||
padding-left: 0.5rem;
|
|
||||||
padding-top: 0px;
|
|
||||||
width: 100%;
|
|
||||||
line-height: 0px;
|
|
||||||
stroke-width: 5px;
|
|
||||||
font-size: medium;
|
|
||||||
}
|
|
||||||
#presupuesto-section{
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.flex-col{
|
|
||||||
display: flex;
|
|
||||||
padding: 0;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
.cliente-title{
|
|
||||||
color: red;
|
|
||||||
font-size: medium;
|
|
||||||
stroke-width: 10px;
|
|
||||||
line-height: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header .title {
|
|
||||||
font-size: 24px;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section {
|
|
||||||
margin-top: 0.5rem;
|
|
||||||
border-top: 1px solid #ddd;
|
|
||||||
padding-top: 0.2rem;
|
|
||||||
}
|
|
||||||
.section-title {
|
|
||||||
font-weight: bold;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
table {
|
|
||||||
width: 100%;
|
|
||||||
border-collapse: collapse;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
table th, table td {
|
|
||||||
border: 2px solid #000000;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
table th {
|
|
||||||
background-color: #f4f4f4;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
table td{
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.comments {
|
|
||||||
color: #555;
|
|
||||||
font-style: italic;
|
|
||||||
margin-top: 0.2rem;
|
|
||||||
}
|
|
||||||
.comment-content {
|
|
||||||
line-height: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 50px;
|
|
||||||
border: solid;
|
|
||||||
border-width: 1px;
|
|
||||||
}
|
|
||||||
.footer {
|
|
||||||
text-align: center;
|
|
||||||
margin-top: 0.5rem;
|
|
||||||
|
|
||||||
font-size: 14px;
|
|
||||||
color: #777;
|
|
||||||
}
|
|
||||||
.row-logo-impresion{
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.portada-img{
|
|
||||||
border: black;
|
|
||||||
border-style: solid;
|
|
||||||
border-width: 2px;
|
|
||||||
height: 40mm;
|
|
||||||
width: 100px;
|
|
||||||
max-width: 30mm;
|
|
||||||
border: 2px solid;
|
|
||||||
border-color: black;
|
|
||||||
border-radius: 5%;
|
|
||||||
}
|
|
||||||
.portada-text{
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.t-header{
|
|
||||||
color: black;
|
|
||||||
width: 25%;
|
|
||||||
}
|
|
||||||
.t-cell{
|
|
||||||
background-color: white;
|
|
||||||
color: black;
|
|
||||||
text-align: start;
|
|
||||||
padding-left: 0.2rem;
|
|
||||||
}
|
|
||||||
.t-row{
|
|
||||||
font-size: 10px;
|
|
||||||
}
|
|
||||||
.esquema{
|
|
||||||
display: flex;
|
|
||||||
justify-content:flex-end;
|
|
||||||
width: 100%;
|
|
||||||
justify-items: flex-end;
|
|
||||||
|
|
||||||
}
|
|
||||||
.pagina-imposicion-outer-start{
|
|
||||||
border-top: 2px solid;
|
|
||||||
border-left: 2px solid;
|
|
||||||
border-bottom: 2px solid;
|
|
||||||
width: 50px;
|
|
||||||
height: 100px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
.pagina-imposicion-outer-end{
|
|
||||||
border-top: 2px solid;
|
|
||||||
border-right: 2px solid;
|
|
||||||
border-bottom: 2px solid;
|
|
||||||
width: 50px;
|
|
||||||
height: 100px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
.pagina-imposicion-outer{
|
|
||||||
border-top: 2px solid;
|
|
||||||
border-bottom: 2px solid;
|
|
||||||
width: 50px;
|
|
||||||
height: 100px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
.pagina-imposicion-inner{
|
|
||||||
border: 2px solid;
|
|
||||||
font-size: 25px;
|
|
||||||
width: 40px;
|
|
||||||
height: 90px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
|
|
||||||
}
|
|
||||||
.square-wrapper{
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(2,1fr);
|
|
||||||
margin-left: 5px;
|
|
||||||
|
|
||||||
}
|
|
||||||
.square{
|
|
||||||
width: 100px;
|
|
||||||
height: 50px;
|
|
||||||
font-size: 14px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.cod{
|
|
||||||
width: 150px;
|
|
||||||
height: 100px;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
background-color: orange;
|
|
||||||
margin-left : 20px;
|
|
||||||
color: white;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.cod-code{
|
|
||||||
font-weight: bold;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
.esquema-imposicion-wrapper{
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
margin-left: 2rem;
|
|
||||||
gap: 10px;
|
|
||||||
}
|
|
||||||
.imposicion{
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
width: 200px;
|
|
||||||
}
|
|
||||||
.imposicion td{
|
|
||||||
font-size: large;
|
|
||||||
}
|
|
||||||
.cod-barras{
|
|
||||||
width: 150px;
|
|
||||||
height: 80px;
|
|
||||||
text-align : center;
|
|
||||||
background-color: white;
|
|
||||||
align-content: center;
|
|
||||||
}
|
|
||||||
.cod-barras img {
|
|
||||||
padding : 1px;
|
|
||||||
}
|
|
||||||
.bg-white{
|
|
||||||
background-color: white;
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
.bg-red{
|
|
||||||
background-color: red;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
.bg-gray{
|
|
||||||
background-color: gray;
|
|
||||||
color:white
|
|
||||||
}
|
|
||||||
.bg-blue{
|
|
||||||
background-color: blue;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
@ -35,11 +35,12 @@ body{
|
|||||||
border: 2px solid;
|
border: 2px solid;
|
||||||
}
|
}
|
||||||
.square{
|
.square{
|
||||||
font-size: 14px;
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
align-content : center;
|
align-content : center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
font-size : 20px;
|
||||||
|
|
||||||
}
|
}
|
||||||
.esquema{
|
.esquema{
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -126,18 +127,24 @@ body{
|
|||||||
|
|
||||||
table {
|
table {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border-collapse: collapse;
|
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
font-size: 12px;
|
font-size: 10px;
|
||||||
}
|
}
|
||||||
table th, table td {
|
|
||||||
border: 2px solid #000000;
|
table td {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
table,th,td{
|
||||||
|
border: 0.1px solid rgb(0, 0, 0);
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
table th {
|
table th {
|
||||||
background-color: #f4f4f4;
|
background-color: #f4f4f4;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color : black;
|
color : black;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
}
|
}
|
||||||
table td{
|
table td{
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
@ -158,6 +165,23 @@ table td{
|
|||||||
padding-left: 0.2rem;
|
padding-left: 0.2rem;
|
||||||
}
|
}
|
||||||
.t-row{
|
.t-row{
|
||||||
font-size: 10px;
|
font-size: 8px;
|
||||||
width : 100%;
|
width : 100%;
|
||||||
}
|
}
|
||||||
|
.bicolor{
|
||||||
|
background: linear-gradient( to right, #00b5fc 0%, #00b5fc 45%, #000000 55%, #000000 100%);
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
.cmyk{
|
||||||
|
background-image: url('/themes/vuexy/img/safekat/presupuestos/cmyk.png')
|
||||||
|
background-size: 110px;
|
||||||
|
text-shadow: 0px 0px 1px black;
|
||||||
|
stroke:black;
|
||||||
|
}
|
||||||
|
.bn{
|
||||||
|
background : black;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
.footer{
|
||||||
|
font-size : 10px
|
||||||
|
}
|
||||||
BIN
httpdocs/themes/vuexy/img/safekat/presupuestos/cmyk.png
Normal file
BIN
httpdocs/themes/vuexy/img/safekat/presupuestos/cmyk.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.0 KiB |
Reference in New Issue
Block a user