mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Merge branch 'feat/update-ot-flow' into 'main'
Feat/update ot flow See merge request jjimenez/safekat!821
This commit is contained in:
@ -646,6 +646,8 @@ $routes->group('messages', ['namespace' => 'App\Controllers\Chat'], function ($r
|
||||
$routes->get('datatable/pedido', 'ChatController::datatable_pedido_messages', ['as' => 'getDatatablePedidoMessages']);
|
||||
$routes->get('datatable/factura', 'ChatController::datatable_factura_messages', ['as' => 'getDatatableFacturaMessages']);
|
||||
$routes->get('datatable/ots', 'ChatController::datatable_ot_messages', ['as' => 'getDatatableOtMessages']);
|
||||
$routes->get('datatable/direct', 'ChatController::datatable_direct_messages', ['as' => 'getDatatableDirectMessages']);
|
||||
|
||||
|
||||
$routes->post('direct', 'ChatController::store_new_direct_message', ['as' => 'storeNewDirectMessage']);
|
||||
$routes->post('direct/client', 'ChatController::store_new_direct_message_client', ['as' => 'storeNewDirectMessageClient']);
|
||||
|
||||
@ -363,14 +363,13 @@ class ChatController extends BaseController
|
||||
$query = $this->userModel->builder()->select(
|
||||
[
|
||||
"id",
|
||||
"CONCAT(first_name,' ',last_name,'(',username,')') as name"
|
||||
"CONCAT(first_name,' ',last_name) as name"
|
||||
]
|
||||
)
|
||||
->where("deleted_at", null)
|
||||
->whereNotIn("id", [auth()->user()->id]);
|
||||
if ($this->request->getGet("q")) {
|
||||
$query->groupStart()
|
||||
->orLike("users.username", $this->request->getGet("q"))
|
||||
->orLike("CONCAT(first_name,' ',last_name)", $this->request->getGet("q"))
|
||||
->groupEnd();
|
||||
}
|
||||
@ -538,6 +537,23 @@ class ChatController extends BaseController
|
||||
|
||||
->toJson(true);
|
||||
}
|
||||
public function datatable_direct_messages()
|
||||
{
|
||||
$auth_user_id = auth()->user()->id;
|
||||
$isAdmin = auth()->user()->inGroup('admin');
|
||||
$query = $this->chatModel->getQueryDatatableDirectMessages($auth_user_id);
|
||||
return DataTable::of($query)
|
||||
->edit('created_at', fn($q) => $q->created_at ? Time::createFromFormat('Y-m-d H:i:s', $q->created_at)->format("d/m/Y H:i") : "")
|
||||
->edit('updated_at', fn($q) => $q->updated_at ? Time::createFromFormat('Y-m-d H:i:s', $q->updated_at)->format("d/m/Y H:i") : "")
|
||||
->edit("creator",fn($q) => $q->userId == $auth_user_id ? '<span class="badge text-bg-success w-100">'.lang("App.me").'</span>' : $q->creator)
|
||||
->add("viewed", fn($q) => $this->chatModel->isMessageChatViewed($q->chatMessageId))
|
||||
->add("action", fn($q) => ["type" => "direct", "modelId" => $q->id, "isAdmin" => $isAdmin,"chatMessageId" => $q->chatMessageId, "lang" => [
|
||||
"view_chat" => lang('Chat.view_chat'),
|
||||
"view_by_alt_message" => lang('Chat.view_by_alt_message')
|
||||
]])
|
||||
|
||||
->toJson(true);
|
||||
}
|
||||
public function get_notifications_not_viewed_from_message(int $chat_message_id)
|
||||
{
|
||||
$unviewedNotifications = $this->chatModel->getUsersNotificationNotViewedFromChat($chat_message_id);
|
||||
@ -605,14 +621,13 @@ class ChatController extends BaseController
|
||||
$query = $this->userModel->builder()->select(
|
||||
[
|
||||
"id",
|
||||
"CONCAT(first_name,' ',last_name,'(',username,')') as name"
|
||||
"CONCAT(first_name,' ',last_name) as name"
|
||||
]
|
||||
)
|
||||
->where("deleted_at", null)
|
||||
->whereNotIn("id", $chat_users_id);
|
||||
if ($this->request->getGet("q")) {
|
||||
$query->groupStart()
|
||||
->orLike("users.username", $this->request->getGet("q"))
|
||||
->orLike("CONCAT(first_name,' ',last_name)", $this->request->getGet("q"))
|
||||
->groupEnd();
|
||||
}
|
||||
|
||||
@ -707,7 +707,7 @@ class Ordentrabajo extends BaseController
|
||||
$r = $this->produccionService->storeOrdenTrabajoTareaProgressDate($validatedData);
|
||||
$otTareaEntity = $this->otTarea->find($validatedData['ot_tarea_id']);
|
||||
$data = [
|
||||
"tiempo_trabajado" => float_seconds_to_hhmm_string($otTareaEntity->tiempo_real),
|
||||
"tiempo_trabajado" => float_seconds_to_hhmmss_string($otTareaEntity->tiempo_real),
|
||||
"tarea" => $otTareaEntity,
|
||||
"estado" => $validatedData['estado'],
|
||||
];
|
||||
@ -728,7 +728,7 @@ class Ordentrabajo extends BaseController
|
||||
{
|
||||
$otTareaEntity = $this->otTarea->find($orden_trabajo_tarea_id);
|
||||
$data = [
|
||||
"tiempo_trabajado" => float_seconds_to_hhmm_string($otTareaEntity->tiempo_trabajado()),
|
||||
"tiempo_trabajado" => float_seconds_to_hhmmss_string($otTareaEntity->tiempo_trabajado()),
|
||||
"progress_dates" => $otTareaEntity->progress_dates(),
|
||||
];
|
||||
return $this->response->setJSON($data);
|
||||
|
||||
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Database\Migrations;
|
||||
|
||||
use CodeIgniter\Database\Migration;
|
||||
|
||||
class AddAliasOtColumnMaquinasTable extends Migration
|
||||
{
|
||||
|
||||
protected array $COLUMNS = [
|
||||
"alias_ot" => [
|
||||
"type" => "VARCHAR",
|
||||
"constraint" => 255,
|
||||
"null" => true
|
||||
],
|
||||
];
|
||||
public function up()
|
||||
{
|
||||
$this->forge->addColumn('lg_maquinas', $this->COLUMNS);
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
$this->forge->dropColumn('lg_maquinas', array_keys($this->COLUMNS));
|
||||
}
|
||||
}
|
||||
@ -23,6 +23,11 @@ class DefaultConfigVariablesSeeder extends Seeder
|
||||
"value" => 6000,
|
||||
"description" => "Número de libros máximos que se puede producir al día"
|
||||
],
|
||||
[
|
||||
"name" => "maquina_guillotina_id_default",
|
||||
"value" => 20,
|
||||
"description" => "ID de máquina que se asigna a tareas de corte tras impresión"
|
||||
]
|
||||
];
|
||||
public function run()
|
||||
{
|
||||
|
||||
40
ci4/app/Database/Seeds/MaquinaAliasOtSeeder.php
Normal file
40
ci4/app/Database/Seeds/MaquinaAliasOtSeeder.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Database\Seeds;
|
||||
|
||||
use App\Models\Configuracion\MaquinaModel;
|
||||
use CodeIgniter\Database\Seeder;
|
||||
|
||||
class MaquinaAliasOtSeeder extends Seeder
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
$m = model(MaquinaModel::class);
|
||||
$data = [
|
||||
[
|
||||
"value" => "6136p",
|
||||
"alias" => "6136p"
|
||||
],
|
||||
[
|
||||
"value" => "c6100",
|
||||
"alias" => "c6100"
|
||||
],
|
||||
[
|
||||
"value" => "2250p",
|
||||
"alias" => "2250p"
|
||||
],
|
||||
[
|
||||
"value" => "C14 000",
|
||||
"alias" => "C14 000"
|
||||
],
|
||||
[
|
||||
"value" => "IX",
|
||||
"alias" => "IX"
|
||||
]
|
||||
|
||||
];
|
||||
foreach ($data as $key => $row) {
|
||||
$m->like('nombre', $row['value'])->set(['alias_ot' => $row['alias']])->update();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -42,7 +42,8 @@ class Maquina extends \CodeIgniter\Entity\Entity
|
||||
"updated_at" => null,
|
||||
"user_created_id" => 0,
|
||||
"user_updated_id" => 0,
|
||||
"etiqueta_envio" => false
|
||||
"etiqueta_envio" => false,
|
||||
"alias_ot" => null,
|
||||
];
|
||||
protected $casts = [
|
||||
"is_padre" => "boolean",
|
||||
@ -70,6 +71,7 @@ class Maquina extends \CodeIgniter\Entity\Entity
|
||||
"is_deleted" => "int",
|
||||
"user_created_id" => "int",
|
||||
"user_updated_id" => "int",
|
||||
"alias_ot" => "?string"
|
||||
];
|
||||
|
||||
public function papeles_impresion() : ?array
|
||||
|
||||
@ -248,6 +248,10 @@ class PresupuestoLineaEntity extends \CodeIgniter\Entity\Entity
|
||||
return in_array($this->attributes['tipo'], ["lp_bn", "lp_bnhq", "lp_rot_bn"]);
|
||||
}
|
||||
|
||||
public function isImpresionInteriorPlana():bool
|
||||
{
|
||||
return in_array($this->attributes['tipo'], ["lp_bn", "lp_bnhq", "lp_colorhq","lp_color"]);
|
||||
}
|
||||
public function tinta(): string
|
||||
{
|
||||
$tinta = "";
|
||||
|
||||
@ -29,6 +29,7 @@ return [
|
||||
'min' => 'Min POD',
|
||||
'moduleTitle' => 'Machines',
|
||||
'nombre' => 'Name',
|
||||
'alias_ot' => 'Alias',
|
||||
'observaciones' => 'Remarks',
|
||||
'ordenPlanning' => 'Planning order',
|
||||
'padreId' => 'Variante',
|
||||
|
||||
@ -60,6 +60,7 @@ return [
|
||||
"subscribe_admin_chat_wrong" => "Tienes que seleccionar un usuario.",
|
||||
"help_select_chat_department_user" => "Solamente son listados los usuarios que pertenecen al personal. Los clientes no son listados, para añadirlos a la conversación se realiza desde la sección de mensajería de las diferentes secciones(presupuesto,pedido,factura ...)",
|
||||
"store_department" => "Crear departamento",
|
||||
"direct_messsages" => "Mensajes directos",
|
||||
"mail" => [
|
||||
"mail_subject" => "Nuevo mensaje"
|
||||
]
|
||||
|
||||
@ -3,175 +3,179 @@
|
||||
|
||||
|
||||
return [
|
||||
'acabado' => 'acabado',
|
||||
'alto' => 'Alto',
|
||||
'altoClick' => 'Alto Click',
|
||||
'altoImpresion' => 'Alto Impresion',
|
||||
'ancho' => 'Ancho',
|
||||
'anchoImpresion' => 'Ancho Impresion',
|
||||
'createdAt' => 'Created At',
|
||||
'deletedAt' => 'Deleted At',
|
||||
'duracionJornada' => 'Duracion Jornada',
|
||||
'forzarNumFormasHorizontalesPortada' => 'Forzar Num Formas Horizontales Cubierta',
|
||||
'forzarNumFormasVerticalesPortada' => 'Forzar Num Formas Verticales Cubierta',
|
||||
'id' => 'ID',
|
||||
'impresion' => 'impresion',
|
||||
'isDeleted' => 'Is Deleted',
|
||||
'isPadre' => 'Usar para variante?',
|
||||
'isRotativa' => 'Es Rotativa?',
|
||||
'isTinta' => 'Inkjet',
|
||||
'isEtiquetaEnvio' => 'Etiqueta títulos',
|
||||
'manipulado' => 'manipulado',
|
||||
'maquina' => 'Maquina',
|
||||
'maquinaList' => 'Lista Máquinas',
|
||||
'maquinas' => 'Máquinas',
|
||||
'max' => 'POD Max',
|
||||
'metrosxminuto' => 'Metros x minuto',
|
||||
'min' => 'POD Min',
|
||||
'moduleTitle' => 'Máquinas',
|
||||
'nombre' => 'Nombre',
|
||||
'observaciones' => 'Observaciones',
|
||||
'ordenPlanning' => 'Orden Planning',
|
||||
'padreId' => 'Variante',
|
||||
'precioHoraCorte' => 'Precio Hora Corte',
|
||||
'precioTintaCG' => 'Precio Tinta CG',
|
||||
'precioTintaColor' => 'Precio Tinta Color',
|
||||
'precioTintaNegro' => 'Precio Tinta Negro',
|
||||
'tipo' => 'Tipo',
|
||||
'updatedAt' => 'Updated At',
|
||||
'userCreatedId' => 'User Created ID',
|
||||
'userUpdatedId' => 'User Updated ID',
|
||||
'velocidad' => 'Velocidad',
|
||||
'velocidadCorte' => 'Velocidad Corte',
|
||||
'maquina_tarea' => 'Máquina tarea',
|
||||
'namePlaceholderDuplicated' => "Inserte el nombre de la máquina a duplicar ...",
|
||||
'validation' => [
|
||||
'alto_menor_alto_impresion' => 'El campo \'Alto impresión\' debe ser menor que \'Alto\'',
|
||||
'ancho_menor_ancho_impresion' => '\'Ancho Impresión\' debe ser menor que \'Ancho\'',
|
||||
'alto' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'greater_than' => 'El campo {field} debe ser mayor que {param}',
|
||||
],
|
||||
'acabado' => 'acabado',
|
||||
'alto' => 'Alto',
|
||||
'altoClick' => 'Alto Click',
|
||||
'altoImpresion' => 'Alto Impresion',
|
||||
'ancho' => 'Ancho',
|
||||
'anchoImpresion' => 'Ancho Impresion',
|
||||
'createdAt' => 'Created At',
|
||||
'deletedAt' => 'Deleted At',
|
||||
'duracionJornada' => 'Duracion Jornada',
|
||||
'forzarNumFormasHorizontalesPortada' => 'Forzar Num Formas Horizontales Cubierta',
|
||||
'forzarNumFormasVerticalesPortada' => 'Forzar Num Formas Verticales Cubierta',
|
||||
'id' => 'ID',
|
||||
'impresion' => 'impresion',
|
||||
'isDeleted' => 'Is Deleted',
|
||||
'isPadre' => 'Usar para variante?',
|
||||
'isRotativa' => 'Es Rotativa?',
|
||||
'isTinta' => 'Inkjet',
|
||||
'isEtiquetaEnvio' => 'Etiqueta títulos',
|
||||
'manipulado' => 'manipulado',
|
||||
'maquina' => 'Maquina',
|
||||
'maquinaList' => 'Lista Máquinas',
|
||||
'maquinas' => 'Máquinas',
|
||||
'max' => 'POD Max',
|
||||
'metrosxminuto' => 'Metros x minuto',
|
||||
'min' => 'POD Min',
|
||||
'moduleTitle' => 'Máquinas',
|
||||
'nombre' => 'Nombre',
|
||||
'alias_ot' => 'Alias',
|
||||
'observaciones' => 'Observaciones',
|
||||
'ordenPlanning' => 'Orden Planning',
|
||||
'padreId' => 'Variante',
|
||||
'precioHoraCorte' => 'Precio Hora Corte',
|
||||
'precioTintaCG' => 'Precio Tinta CG',
|
||||
'precioTintaColor' => 'Precio Tinta Color',
|
||||
'precioTintaNegro' => 'Precio Tinta Negro',
|
||||
'tipo' => 'Tipo',
|
||||
'updatedAt' => 'Updated At',
|
||||
'userCreatedId' => 'User Created ID',
|
||||
'userUpdatedId' => 'User Updated ID',
|
||||
'velocidad' => 'Velocidad',
|
||||
'velocidadCorte' => 'Velocidad Corte',
|
||||
'maquina_tarea' => 'Máquina tarea',
|
||||
'namePlaceholderDuplicated' => "Inserte el nombre de la máquina a duplicar ...",
|
||||
'validation' => [
|
||||
'alto_menor_alto_impresion' => 'El campo \'Alto impresión\' debe ser menor que \'Alto\'',
|
||||
'ancho_menor_ancho_impresion' => '\'Ancho Impresión\' debe ser menor que \'Ancho\'',
|
||||
'alto' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'greater_than' => 'El campo {field} debe ser mayor que {param}',
|
||||
],
|
||||
|
||||
'ancho' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'greater_than' => 'El campo {field} debe ser mayor que {param}',
|
||||
],
|
||||
'ancho' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'greater_than' => 'El campo {field} debe ser mayor que {param}',
|
||||
],
|
||||
|
||||
'forzar_num_formas_horizontales_cubierta' => [
|
||||
'integer' => 'El campo {field} debe contener un número entero.',
|
||||
'forzar_num_formas_horizontales_cubierta' => [
|
||||
'integer' => 'El campo {field} debe contener un número entero.',
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
'forzar_num_formas_verticales_cubierta' => [
|
||||
'integer' => 'El campo {field} debe contener un número entero.',
|
||||
'forzar_num_formas_verticales_cubierta' => [
|
||||
'integer' => 'El campo {field} debe contener un número entero.',
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
'alto_click' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'greater_than' => 'El campo {field} debe ser mayor que {param}',
|
||||
],
|
||||
'alto_click' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'greater_than' => 'El campo {field} debe ser mayor que {param}',
|
||||
],
|
||||
|
||||
'alto_impresion' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'greater_than' => 'El campo {field} debe ser mayor que {param}',
|
||||
],
|
||||
'alto_impresion' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'greater_than' => 'El campo {field} debe ser mayor que {param}',
|
||||
],
|
||||
|
||||
'ancho_impresion' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'greater_than' => 'El campo {field} debe ser mayor que {param}',
|
||||
],
|
||||
'ancho_impresion' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'greater_than' => 'El campo {field} debe ser mayor que {param}',
|
||||
],
|
||||
|
||||
'duracion_jornada' => [
|
||||
'integer' => 'El campo {field} debe contener un número entero.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'duracion_jornada' => [
|
||||
'integer' => 'El campo {field} debe contener un número entero.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
'max' => [
|
||||
'integer' => 'El campo {field} debe contener un número entero.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'max' => [
|
||||
'integer' => 'El campo {field} debe contener un número entero.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
'metrosxminuto' => [
|
||||
'max_length' => 'El campo {field} no puede exeder de {param} caracteres de longitud.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'metrosxminuto' => [
|
||||
'max_length' => 'El campo {field} no puede exceder de {param} caracteres de longitud.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
'min' => [
|
||||
'integer' => 'El campo {field} debe contener un número entero.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'min' => [
|
||||
'integer' => 'El campo {field} debe contener un número entero.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
'nombre' => [
|
||||
'max_length' => 'El campo {field} no puede exeder de {param} caracteres de longitud.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'nombre' => [
|
||||
'max_length' => 'El campo {field} no puede exceder de {param} caracteres de longitud.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
|
||||
],
|
||||
],
|
||||
'alias' => [
|
||||
'max_length' => 'El campo {field} no puede exceder de {param} caracteres de longitud.',
|
||||
],
|
||||
|
||||
'observaciones' => [
|
||||
'max_length' => 'El campo {field} no puede exeder de {param} caracteres de longitud.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'observaciones' => [
|
||||
'max_length' => 'El campo {field} no puede exceder de {param} caracteres de longitud.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
'orden_planning' => [
|
||||
'integer' => 'El campo {field} debe contener un número entero.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'orden_planning' => [
|
||||
'integer' => 'El campo {field} debe contener un número entero.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
'precio_hora_corte' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'precio_hora_corte' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
'precio_tinta_cg' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'precio_tinta_cg' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
'precio_tinta_color' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'precio_tinta_color' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
'precio_tinta_negro' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'precio_tinta_negro' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
'tipo' => [
|
||||
'in_list' => 'El campo {field} debe ser uno uno de: {param}.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'tipo' => [
|
||||
'in_list' => 'El campo {field} debe ser uno uno de: {param}.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
'velocidad' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
'velocidad' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
|
||||
],
|
||||
|
||||
'velocidad_corte' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
'velocidad_corte' => [
|
||||
'decimal' => 'El campo {field} debe contener un número decimal.',
|
||||
'required' => 'El campo {field} es obligatorio.',
|
||||
|
||||
],
|
||||
|
||||
|
||||
];
|
||||
],
|
||||
|
||||
|
||||
];
|
||||
|
||||
@ -202,5 +202,10 @@ return [
|
||||
"tareas_finalizadas" => "Las tareas de esta OT y máquina están marcadas como finalizadas",
|
||||
"ot_not_found" => "La orden de trabajo número {ot_id} no existe"
|
||||
|
||||
]
|
||||
],
|
||||
'hunkeler' => "Corte HUNKELER",
|
||||
'tecnau' => "Corte TECNAU",
|
||||
'end_cut' => "Corte final",
|
||||
"interior_cut" => "Preparación interior",
|
||||
"cover_cut" => "Preparación cubierta"
|
||||
];
|
||||
|
||||
@ -136,7 +136,7 @@ class ChatModel extends Model
|
||||
$chatDeparmentModel = model(ChatDeparmentModel::class);
|
||||
$ot = $model->find($orden_trabajo_id);
|
||||
return $this->insert([
|
||||
"title" => "[OT]".$ot->id . "[" . $chatDeparmentModel->getDisplay($chat_department_id) . "]",
|
||||
"title" => "[OT]" . $ot->id . "[" . $chatDeparmentModel->getDisplay($chat_department_id) . "]",
|
||||
"orden_trabajo_id" => $orden_trabajo_id,
|
||||
"chat_department_id" => $chat_department_id
|
||||
]);
|
||||
@ -381,8 +381,7 @@ class ChatModel extends Model
|
||||
|
||||
$row->title = $row->facturaId;
|
||||
$rows_new[] = $row;
|
||||
}
|
||||
elseif ($row->ordenTrabajoId) {
|
||||
} elseif ($row->ordenTrabajoId) {
|
||||
// $row->model = $facturaModel->find($row->facturaId);
|
||||
$row->uri = "/chat/ot/" . $row->ordenTrabajoId . "#accordionChatOrdenTrabajo";
|
||||
$row->avatar = "OT";
|
||||
@ -439,8 +438,7 @@ class ChatModel extends Model
|
||||
$row->chatDisplay .= "[INTERNAL]";
|
||||
$row->title = $row->facturaId;
|
||||
$rows_new[] = $row;
|
||||
}
|
||||
elseif ($row->ordenTrabajoId) {
|
||||
} elseif ($row->ordenTrabajoId) {
|
||||
$row->uri = "/produccion/ordentrabajo/edit/" . $row->ordenTrabajoId . "#accordionChatOrdenTrabajo";
|
||||
$row->avatar = "OT";
|
||||
$row->chatDisplay .= "[INTERNAL]";
|
||||
@ -847,7 +845,7 @@ class ChatModel extends Model
|
||||
->join("users u", "u.id = cm.sender_id", 'left')
|
||||
->where("chats.presupuesto_id is NOT NULL", NULL, FALSE);
|
||||
|
||||
if (auth()->user()->inGroup("cliente-administrador","cliente")) {
|
||||
if (auth()->user()->inGroup("cliente-administrador", "cliente")) {
|
||||
$query->where('presupuestos.cliente_id', auth()->user()->cliente_id)
|
||||
->where("chats.chat_department_id is NOT NULL", NULL, FALSE);
|
||||
}
|
||||
@ -878,7 +876,7 @@ class ChatModel extends Model
|
||||
->join("presupuestos", "presupuestos.id = pedidos_linea.presupuesto_id", 'left')
|
||||
->where("chats.pedido_id is NOT NULL", NULL, FALSE);
|
||||
|
||||
if (auth()->user()->inGroup("cliente-administrador","cliente")) {
|
||||
if (auth()->user()->inGroup("cliente-administrador", "cliente")) {
|
||||
$query->where('presupuestos.cliente_id', auth()->user()->cliente_id)
|
||||
->where("chats.chat_department_id is NOT NULL", NULL, FALSE);
|
||||
}
|
||||
@ -908,10 +906,10 @@ class ChatModel extends Model
|
||||
->join("facturas", "facturas.id = chats.factura_id", "left")
|
||||
->where("chats.factura_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);
|
||||
}
|
||||
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 getQueryDatatableMessageOrdenTrabajo(int $user_id): BaseBuilder
|
||||
@ -938,10 +936,42 @@ class ChatModel extends Model
|
||||
->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);
|
||||
}
|
||||
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 getQueryDatatableDirectMessages(): 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 as title",
|
||||
])
|
||||
->join("chat_messages cm", "chats.id = cm.chat_id", "left")
|
||||
->join("users u", "u.id = cm.sender_id", 'left')
|
||||
->where("chats.presupuesto_id", NULL)
|
||||
->where("chats.pedido_id", NULL)
|
||||
->where("chats.factura_id", NULL)
|
||||
->where("chats.orden_trabajo_id", NULL)
|
||||
->groupStart()
|
||||
->orWhere("cm.receiver_id",auth()->user()->id)
|
||||
->orWhere("cm.sender_id",auth()->user()->id)
|
||||
->groupEnd();
|
||||
|
||||
return $query->groupBy('chatMessageId');
|
||||
}
|
||||
public function createNewDirectChat(string $title, string $message, array $users)
|
||||
|
||||
@ -54,6 +54,7 @@ class MaquinaModel extends \App\Models\BaseModel
|
||||
"user_created_id",
|
||||
"user_updated_id",
|
||||
"etiqueta_envio",
|
||||
"alias_ot",
|
||||
];
|
||||
protected $returnType = "App\Entities\Configuracion\Maquina";
|
||||
|
||||
@ -149,6 +150,10 @@ class MaquinaModel extends \App\Models\BaseModel
|
||||
"label" => "Maquinas.velocidadCorte",
|
||||
"rules" => "decimal",
|
||||
],
|
||||
"alias_ot" => [
|
||||
"label" => "Maquinas.alias_ot",
|
||||
"rules" => "trim|max_length[255]",
|
||||
],
|
||||
];
|
||||
|
||||
protected $validationMessages = [
|
||||
@ -196,6 +201,9 @@ class MaquinaModel extends \App\Models\BaseModel
|
||||
"max_length" => "Maquinas.validation.nombre.max_length",
|
||||
"required" => "Maquinas.validation.nombre.required",
|
||||
],
|
||||
"alias_ot" => [
|
||||
"max_length" => "Maquinas.validation.alias.max_length"
|
||||
],
|
||||
"observaciones" => [
|
||||
"max_length" => "Maquinas.validation.observaciones.max_length",
|
||||
//"required" => "Maquinas.validation.observaciones.required",
|
||||
|
||||
@ -84,6 +84,7 @@ class ProductionService extends BaseService
|
||||
* @var string
|
||||
*/
|
||||
public string $statusColor;
|
||||
public int $guillotinaMaquinaId;
|
||||
/**
|
||||
* Valor límite del POD
|
||||
*
|
||||
@ -212,6 +213,7 @@ class ProductionService extends BaseService
|
||||
$this->statusColor = $this->ordenTrabajoConfig->OT_COLORS["sin_imprimir"];
|
||||
$this->configVariableModel = model(ConfigVariableModel::class);
|
||||
$this->podValue = $this->configVariableModel->getVariable('POD')->value;
|
||||
$this->guillotinaMaquinaId = $this->configVariableModel->getVariable('maquina_guillotina_id_default')->value;
|
||||
$this->OT_TAREA_STATUS_TITLE = [
|
||||
"P" => lang('Produccion.tarea_estados.P'),
|
||||
"F" => lang('Produccion.tarea_estados.F'),
|
||||
@ -368,6 +370,8 @@ class ProductionService extends BaseService
|
||||
$this->storeOrdenTrabajoManipuladoTareas();
|
||||
// $this->storeOrdenTrabajoPreimpresionTareas();
|
||||
$this->storeOrdenTrabajoEncuadernacionTareas();
|
||||
$this->storeTareaCorteFinal();
|
||||
|
||||
// $this->storeOrdenTrabajoExtraTareas();
|
||||
}
|
||||
/**
|
||||
@ -408,10 +412,36 @@ class ProductionService extends BaseService
|
||||
$ot_tareas["tiempo_real"] = 0;
|
||||
$insert_query_result = $this->otTarea->insert($ot_tareas);
|
||||
$ot_tareas = [];
|
||||
$this->storeTareaCorteBloque($p_linea);
|
||||
$this->storeTareaCorte($p_linea);
|
||||
}
|
||||
return $insert_query_result;
|
||||
}
|
||||
/**
|
||||
* Inserta una tarea de corte si la impresion es en `rotativa`
|
||||
*
|
||||
* @return OrdenTrabajoTareaEntity|null
|
||||
*/
|
||||
protected function storeTareaCorteFinal(): ?OrdenTrabajoTareaEntity
|
||||
{
|
||||
|
||||
$presupuestoLineaImpresion = $this->presupuesto->presupuestoLineaImpresion();
|
||||
$data = [
|
||||
'orden_trabajo_id' => $this->ot->id,
|
||||
'presupuesto_linea_id' => $presupuestoLineaImpresion->id,
|
||||
'nombre' => lang('Produccion.end_cut'),
|
||||
'maquina_id' => $this->defaultMaquinaCorte->id,
|
||||
'orden' => $this->defaultMaquinaCorte->orden_planning,
|
||||
'tiempo_estimado' => 0,
|
||||
'tiempo_real' => 0,
|
||||
'is_corte' => true,
|
||||
'tipo_corte' => "bobina",
|
||||
];
|
||||
$tareaId = $this->otTarea->insert($data);
|
||||
$otCorte = $this->otTarea->find($tareaId);
|
||||
return $otCorte;
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserta una tarea de corte si la impresion es en `rotativa`
|
||||
*
|
||||
@ -421,23 +451,64 @@ class ProductionService extends BaseService
|
||||
protected function storeTareaCorte(PresupuestoLineaEntity $pLinea): ?OrdenTrabajoTareaEntity
|
||||
{
|
||||
$otCorte = null;
|
||||
$presupuestoTipo = $this->presupuesto->tipo_presupuesto()->codigo;
|
||||
$isRusticaFresado = str_contains($presupuestoTipo, "Fresado");
|
||||
$data = [
|
||||
'orden_trabajo_id' => $this->ot->id,
|
||||
'presupuesto_linea_id' => $pLinea->id,
|
||||
'nombre' => 'Corte',
|
||||
'maquina_id' => $this->guillotinaMaquinaId,
|
||||
'orden' => $pLinea->maquina()->orden_planning + 1,
|
||||
'tiempo_estimado' => $pLinea->rotativa_tiempo_corte * 60,
|
||||
'tiempo_real' => 0,
|
||||
'is_corte' => true,
|
||||
'tipo_corte' => "prep",
|
||||
];
|
||||
if ($pLinea->isCubierta()) {
|
||||
$data['nombre'] = lang('Produccion.cover_cut');
|
||||
$tareaId = $this->otTarea->insert($data);
|
||||
$otCorte = $this->otTarea->find($tareaId);
|
||||
}
|
||||
if ($pLinea->isImpresionInteriorPlana() || $pLinea->isRotativa()) {
|
||||
$data['nombre'] = lang('Produccion.interior_cut');
|
||||
//* Si es rustica fresado y rotativa no se añade preparación de interior en guillotina
|
||||
if (!$isRusticaFresado && !$pLinea->isRotativa()) {
|
||||
$tareaId = $this->otTarea->insert($data);
|
||||
$otCorte = $this->otTarea->find($tareaId);
|
||||
return $otCorte;
|
||||
}
|
||||
}
|
||||
return $otCorte;
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserta una tarea de corte a bloque
|
||||
* Se añade después de una tarea de impresión interior en rotativa.
|
||||
*
|
||||
*
|
||||
* @param PresupuestoLineaEntity $pLinea
|
||||
* @return OrdenTrabajoTareaEntity|null
|
||||
*/
|
||||
protected function storeTareaCorteBloque(PresupuestoLineaEntity $pLinea)
|
||||
{
|
||||
$otCorte = null;
|
||||
$name = $this->cosido() ? lang('Produccion.hunkeler') : lang('Produccion.tecnau');
|
||||
if ($pLinea->isRotativa()) {
|
||||
$tareaId = $this->otTarea->insert([
|
||||
'orden_trabajo_id' => $this->ot->id,
|
||||
'presupuesto_linea_id' => $pLinea->id,
|
||||
'nombre' => 'Corte',
|
||||
'nombre' => $name,
|
||||
'maquina_id' => $this->defaultMaquinaCorte->id,
|
||||
'orden' => $this->defaultMaquinaCorte->orden_planning,
|
||||
'orden' => $pLinea->maquina()->orden_planning + 1,
|
||||
'tiempo_estimado' => $pLinea->rotativa_tiempo_corte * 60,
|
||||
'tiempo_real' => 0,
|
||||
'is_corte' => true,
|
||||
'tipo_corte' => "bobina",
|
||||
'tipo_corte' => "bloque",
|
||||
]);
|
||||
$otCorte = $this->otTarea->find($tareaId);
|
||||
}
|
||||
return $otCorte;
|
||||
}
|
||||
|
||||
/**
|
||||
* General las tareas de acabado segun las líneas de presupuesto_acabados
|
||||
*
|
||||
@ -1329,7 +1400,7 @@ class ProductionService extends BaseService
|
||||
public function tareaUpdateMaquinaCorte($orden_trabajo_id): bool
|
||||
{
|
||||
$cvm = model(ConfigVariableModel::class);
|
||||
$otTarea = $this->otTarea->where('orden_trabajo_id', $orden_trabajo_id)->where('is_corte', true)->first();
|
||||
$otTarea = $this->otTarea->where('orden_trabajo_id', $orden_trabajo_id)->where('is_corte', true)->whereIn('tipo_corte', ['bobina', 'guillotina'])->first();
|
||||
$toggleCorte = "bobina";
|
||||
if ($otTarea->tipo_corte == "bobina") {
|
||||
$maquina_id = $cvm->where('name', "id_maquina_guillotina_corte_ot_tarea")->first()["value"];
|
||||
|
||||
@ -6,6 +6,13 @@
|
||||
</label>
|
||||
<input type="text" id="nombre" name="nombre" required maxLength="255" class="form-control"
|
||||
value="<?= old('nombre', $maquina->nombre) ?>">
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label for="alias" class="form-label">
|
||||
<?= lang('Maquinas.alias_ot') ?>*
|
||||
</label>
|
||||
<input type="text" id="alias" name="alias_ot" required maxLength="255" class="form-control"
|
||||
value="<?= old('alias_ot', $maquina->alias_ot) ?>">
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<label for="min" class="form-label">
|
||||
|
||||
@ -15,26 +15,33 @@ use Config\App;
|
||||
<div class="nav-tabs-shadow nav-align-top">
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li class="nav-item">
|
||||
<button type="button" class="nav-link active" role="tab" id="navs-top-align-all-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-all"><?=lang('App.global_all')?></button>
|
||||
<button type="button" class="nav-link active" role="tab" id="navs-top-align-all-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-all"><?= lang('App.global_all') ?></button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button type="button" class="nav-link" role="tab" id="navs-top-align-presupuestos-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-presupuestos"><?=lang('App.permisos_presupuestos')?></button>
|
||||
<button type="button" class="nav-link" role="tab" id="navs-top-align-direct-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-direct"><?= lang('Chat.direct_messsages') ?></button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button type="button" class="nav-link" role="tab" id="navs-top-align-pedidos-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-pedidos"><?=lang('App.permisos_pedidos')?></button>
|
||||
<button type="button" class="nav-link" role="tab" id="navs-top-align-presupuestos-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-presupuestos"><?= lang('App.permisos_presupuestos') ?></button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button type="button" class="nav-link" role="tab" id="navs-top-align-facturas-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-facturas"><?=lang('App.menu_facturas')?></button>
|
||||
<button type="button" class="nav-link" role="tab" id="navs-top-align-pedidos-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-pedidos"><?= lang('App.permisos_pedidos') ?></button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button type="button" class="nav-link" role="tab" id="navs-top-align-ot-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-ots"><?=lang('Produccion.ots')?></button>
|
||||
<button type="button" class="nav-link" role="tab" id="navs-top-align-facturas-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-facturas"><?= lang('App.menu_facturas') ?></button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button type="button" class="nav-link" role="tab" id="navs-top-align-ot-tab" data-bs-toggle="tab" data-bs-target="#navs-top-align-ots"><?= lang('Produccion.ots') ?></button>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<div class="tab-content" id="message-datatables-container">
|
||||
<div class="tab-pane fade show active" id="navs-top-align-all">
|
||||
<div class="tab-pane fade show active" id="navs-top-align-all">
|
||||
<?= view("themes/vuexy/components/tables/messages_table", ["id" => "tableAllMessages"]) ?>
|
||||
</div>
|
||||
<div class="tab-pane fade show" id="navs-top-align-direct">
|
||||
<button class="btn-primary btn" id="btn-new-message"><span><?= lang('Chat.modal.new_message') ?></span></button>
|
||||
<?= view("themes/vuexy/components/tables/messages_table", ["id" => "tableDirectMessages"]) ?>
|
||||
</div>
|
||||
<div class="tab-pane fade show" id="navs-top-align-presupuestos">
|
||||
<?= view("themes/vuexy/components/tables/messages_table", ["id" => "tablePresupuestoMessages"]) ?>
|
||||
</div>
|
||||
@ -70,7 +77,8 @@ use Config\App;
|
||||
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js") ?>"></script>
|
||||
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js") ?>"></script>
|
||||
<script type="module" src="<?= site_url('assets/js/safekat/pages/configuracion/messages/index.js') ?>">
|
||||
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
|
||||
< script src = "<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>" >
|
||||
</script>
|
||||
|
||||
</script>
|
||||
<?= $this->endSection() ?>
|
||||
@ -1,9 +1,7 @@
|
||||
<table>
|
||||
<tr class="encuadernacion">
|
||||
<th >Encuadernacion</th>
|
||||
<th class="cell-50"></th>
|
||||
<th class="cell-50"></th>
|
||||
<th class="cell-50"></th>
|
||||
|
||||
<th class="cell-50">Sobrecubierta</th>
|
||||
<th class="cell-50">Guardas</th>
|
||||
<th class="cell-50">Retractilado</th>
|
||||
@ -12,9 +10,7 @@
|
||||
<?php if (count($encuadernaciones) > 0): ?>
|
||||
<tr style="color: red;">
|
||||
<td><?= $encuadernacion->tarifa()->nombre ?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
|
||||
<td><?= $presupuesto->hasSobrecubierta() ? "SI" : "NO" ?></td>
|
||||
<td><?= $presupuesto->guardas ? "SI" : "NO" ?></td>
|
||||
<td><?= $presupuesto->retractilado ? "SI" : "NO" ?></td>
|
||||
|
||||
@ -56,13 +56,13 @@ $settings = $session->get('settings');
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<div class="px-2 d-flex flex justify-content-between align-items-center" style="background-color: <?= $colors["week_day"]["bg"] ?>;color:<?= $colors["week_day"]["color"] ?>;">
|
||||
<span><strong><?= $pedido->fecha_encuadernado ? week_day_humanize(Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->getDayOfWeek() - 1, true) : "" ?></strong></span>
|
||||
<span><strong>Comercial:</strong> <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </span>
|
||||
<span><?= $pedido->fecha_encuadernado ? week_day_humanize(Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->getDayOfWeek() - 1, true) : "" ?></span>
|
||||
<span>Comercial: <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="px-2 d-flex flex justify-content-center align-items-center w-100">
|
||||
<span class="w-100 text-center" style="background-color: <?= $colors["impresion_interior_ppal"]["bg"] ?>;color:<?= $colors["impresion_interior_ppal"]["color"] ?>;">
|
||||
<span class="w-100 text-center code-title" style="background-color: <?= $colors["impresion_interior_ppal"]["bg"] ?>;color:<?= $colors["impresion_interior_ppal"]["color"] ?>;">
|
||||
<?php if ($isPOD): ?>
|
||||
<strong>POD</strong>
|
||||
<?php elseif ($presupuesto->presupuestoLineaImpresion()->isRotativa()): ?>
|
||||
@ -70,18 +70,17 @@ $settings = $session->get('settings');
|
||||
<?php else: ?>
|
||||
<strong>GENERAL</strong>
|
||||
<?php endif; ?>
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row p-2">
|
||||
<div class="col-3 h-100">
|
||||
|
||||
<div class="row text-center">
|
||||
<span id="fecha_encuadernado_at" class="fs-large fw-bold" style="color:<?= $colors["general"]["color"] ?>;"><?= $pedido->fecha_encuadernado ? Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->format('d/m/Y') : "" ?></span>
|
||||
</div>
|
||||
<div class="row px-2 mt-2 h-100">
|
||||
<table class="h-100 bg-white">
|
||||
<table class="h-100 bg-white" style="font-size: small;">
|
||||
<tr>
|
||||
<th class="bg-white">IN</th>
|
||||
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
||||
@ -103,26 +102,27 @@ $settings = $session->get('settings');
|
||||
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-5">
|
||||
<div class="col-5 h-100">
|
||||
<div class="row">
|
||||
<div class="col-12 w-50 text-center" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
|
||||
<strong><?= $encuadernacionCode ?></strong>
|
||||
<div class="col-12 w-50 text-center code-title fw-bold" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
|
||||
<?= $encuadernacionCode ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row h-75">
|
||||
<div class="col-6 square text-center" style="background-color: <?= $colors["papel_interior"]["bg"] ?>;color:<?= $colors["papel_interior"]["color"] ?>;">
|
||||
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["papel_interior"]["bg"] ?>;color:<?= $colors["papel_interior"]["color"] ?>;">
|
||||
<?= $linea_impresion?->papel_impresion()->papel_code_ot ?>
|
||||
</div>
|
||||
<div class="col-6 square text-center <?= $linea_impresion->isColor() ? "cmyk" : "bn" ?>">
|
||||
<div class="col-6 square text-center code-title <?= $linea_impresion->isColor() ? "cmyk" : "bn" ?>">
|
||||
<?= $tiempo_impresion ?>
|
||||
</div>
|
||||
<div class="col-6 square text-center" style="background-color: <?= $colors["papel_cubierta"]["bg"] ?>;color:<?= $colors["papel_cubierta"]["color"] ?>;">
|
||||
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["papel_cubierta"]["bg"] ?>;color:<?= $colors["papel_cubierta"]["color"] ?>;">
|
||||
<?= $linea_cubierta?->papel_impresion()->papel_code_ot ?>
|
||||
</div>
|
||||
<div class="col-6 square text-center" style="background-color: <?= $colors["plastificado"]["bg"] ?>;color:<?= $colors["plastificado"]["color"] ?>;">
|
||||
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["plastificado"]["bg"] ?>;color:<?= $colors["plastificado"]["color"] ?>;">
|
||||
<?= isset($acabados[0]) ? $acabados[0]->tarifa()->code : "" ?>
|
||||
</div>
|
||||
<?php foreach ($acabados as $key => $acabado): ?>
|
||||
@ -137,7 +137,7 @@ $settings = $session->get('settings');
|
||||
<div class="col-4" style="background-color: <?= $colors["ot"]["bg"] ?>">
|
||||
<div class="row h-100">
|
||||
<div class="col-12 h-50 d-flex flex align-items-center justify-content-center">
|
||||
<span class="fs-large" style="color:<?= $colors["ot"]["color"] ?>;"><strong><?= $ot->id ?></strong></span>
|
||||
<span class="ot-code" style="color:<?= $colors["ot"]["color"] ?>;"><?= $ot->id ?></span>
|
||||
</div>
|
||||
<div class="col-12 h-50 d-flex flex align-items-center justify-content-center bg-white">
|
||||
<img class="img-fluid" src="data:image/png;base64,<?= $ot->bar_code ?>" alt="barcode" />
|
||||
@ -151,32 +151,30 @@ $settings = $session->get('settings');
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<table class="h-50">
|
||||
<table class="h-100">
|
||||
<tr>
|
||||
<th>IDSK</th>
|
||||
<td class="t-cell">
|
||||
|
||||
</td>
|
||||
<th class="al">IDSK</th>
|
||||
<td class="t-cell"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>CLIENTE</th>
|
||||
<th class="al">CLIENTE</th>
|
||||
<td class="t-cell">
|
||||
<?= $cliente->alias ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>TITULO</th>
|
||||
<th class="al">TITULO</th>
|
||||
<td class="t-cell">
|
||||
<?= $presupuesto->titulo ?>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<th>ISBN</th>
|
||||
<th class="al">ISBN</th>
|
||||
<td class="t-cell"><?= $presupuesto->isbn ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>PEDIDO CLIENTE</th>
|
||||
<th class="al">PEDIDO</th>
|
||||
<td class="t-cell"><?= $pedido->id ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -184,12 +182,10 @@ $settings = $session->get('settings');
|
||||
<div class="col-4">
|
||||
<div class="col-12 d-flex justify-content-center" style="width: 100%">
|
||||
<?php if ($imposicion): ?>
|
||||
|
||||
<?php if ($imposicion->imposicion_esquema()): ?>
|
||||
<?= $imposicion->imposicion_esquema()->svg_schema ?>
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="imposicion">
|
||||
@ -204,19 +200,31 @@ $settings = $session->get('settings');
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<div class="section-title impresion">IMP. INTERIOR</div>
|
||||
<div class="d-flex flex-row gap-2 justify-content-start">
|
||||
<div class="section-title impresion">IMP. INTERIOR</div>
|
||||
<?php if ($pedido->fecha_impresion): ?>
|
||||
<div class="section-title "><?= Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_impresion)->format('d/m/Y') ?></div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div>
|
||||
<table>
|
||||
<table class="">
|
||||
<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>
|
||||
<th class="t-header"><?= lang('Produccion.size') ?></th>
|
||||
<th class="t-header"><?= lang('Produccion.ejemplares') ?></th>
|
||||
<th class="t-header"><?= lang('Produccion.tipo') ?></th>
|
||||
<th class="t-header"><?= lang('Produccion.lomo') ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<?php if ($presupuesto->papel_formato_personalizado): ?>
|
||||
<td class="t-cell text-center"> <?= $presupuesto->papel_formato_ancho ?>x<?= $presupuesto->papel_formato_alto ?> </td>
|
||||
<?php else: ?>
|
||||
<td class="t-cell text-center"> <?= $papel_formato->ancho ?>x<?= $papel_formato->alto ?> </td>
|
||||
<?php endif; ?>
|
||||
<td class="t-cell text-center"> 1 </td>
|
||||
<th class="t-header" style="width: 10%;"><?= lang('Produccion.tipo') ?></th>
|
||||
<td class="t-cell text-center"> <?= $presupuesto->tipo_presupuesto()?->codigo ?? "" ?> </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>
|
||||
@ -251,7 +259,7 @@ $settings = $session->get('settings');
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="comments <?=$ot->comment_interior ? '' : 'd-none' ?>">
|
||||
<div class="comments <?= $ot->comment_interior ? '' : 'd-none' ?>">
|
||||
<div class="flex-row impresion">Comentarios impresión interior</div>
|
||||
<div class="comment-content w-100">
|
||||
<p>
|
||||
@ -262,7 +270,12 @@ $settings = $session->get('settings');
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<div class="section-title">LOGISTICA</div>
|
||||
<div class="d-flex flex-row justify-content-start w-100 gap-2">
|
||||
<div class="section-title">LOGISTICA</div>
|
||||
<?php if ($pedido->fecha_entrega_real): ?>
|
||||
<div class="section-title "><?= Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_entrega_real)->format('d/m/Y') ?></div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<table>
|
||||
<tr>
|
||||
@ -276,7 +289,7 @@ $settings = $session->get('settings');
|
||||
<td>-</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="comments <?=$ot->comment_logistica ? '' : 'd-none' ?>">
|
||||
<div class="comments <?= $ot->comment_logistica ? '' : 'd-none' ?>">
|
||||
<div class="flex-row">Comentarios logistica:</div>
|
||||
<div class="comment-content">
|
||||
<p>
|
||||
|
||||
@ -48,27 +48,25 @@ $settings = $session->get('settings');
|
||||
<img class="portada-img border-secondary img-thumbnail img-fluid" src="<?= $ot->full_path ? "data:image/png;base64," . base64_encode(file_get_contents($ot->full_path)) : '/assets/img/portada_not_found.png' ?>" />
|
||||
<?php else: ?>
|
||||
<img class="portada-img border-secondary img-thumbnail img-fluid" src="/assets/img/portada_not_found.png" />
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
</div>
|
||||
<div class="col-10 py-2 rounded border-1 border-secondary" style="background-color: <?= $colors["general"]["bg"] ?>;color:<?= $colors["general"]["color"] ?>;">
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<div class="px-2 d-flex flex justify-content-between align-items-center" style="background-color: <?= $colors["week_day"]["bg"] ?>;color:<?= $colors["week_day"]["color"] ?>;">
|
||||
<span><strong><?= $pedido->fecha_encuadernado ? week_day_humanize(Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->getDayOfWeek() - 1, true) : "" ?></strong></span>
|
||||
<span><strong>Comercial:</strong> <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </span>
|
||||
<span class="fs-large"><?= $pedido->fecha_encuadernado ? week_day_humanize(Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->getDayOfWeek() - 1, true) : "" ?></span>
|
||||
<span class="fs-large">Comercial: <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="px-2 d-flex flex justify-content-center align-items-center w-100">
|
||||
<span class="w-100 text-center" style="background-color: <?= $colors["impresion_interior_ppal"]["bg"] ?>;color:<?= $colors["impresion_interior_ppal"]["color"] ?>;">
|
||||
<span class="w-100 text-center code-title" style="background-color: <?= $colors["impresion_interior_ppal"]["bg"] ?>;color:<?= $colors["impresion_interior_ppal"]["color"] ?>;">
|
||||
<?php if ($isPOD): ?>
|
||||
<strong>POD</strong>
|
||||
<strong><?= $linea_impresion->maquina()->alias_ot ?? "POD" ?></strong>
|
||||
<?php elseif ($presupuesto->presupuestoLineaImpresion()->isRotativa()): ?>
|
||||
<strong>ROTATIVA</strong>
|
||||
<?php else: ?>
|
||||
<strong>GENERAL</strong>
|
||||
<strong><?= $linea_impresion->maquina()->alias_ot ?? "GENERAL" ?></strong>
|
||||
<?php endif; ?>
|
||||
|
||||
|
||||
@ -79,13 +77,11 @@ $settings = $session->get('settings');
|
||||
|
||||
<div class="row p-2">
|
||||
<div class="col-3 h-100">
|
||||
<div class="row px-2 d-flex flex justify-content-between align-items-center">
|
||||
<div class="col-6 w-100 text-center">
|
||||
<span id="fecha_encuadernado_at" style="color:<?= $colors["general"]["color"] ?>;"><strong><?= $pedido->fecha_encuadernado ? Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->format('d/m/Y') : "" ?></strong></span>
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<span id="fecha_encuadernado_at" class="fs-large fw-bold" style="color:<?= $colors["general"]["color"] ?>;"><?= $pedido->fecha_encuadernado ? Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->format('d/m/Y') : "" ?></span>
|
||||
</div>
|
||||
<div class="row px-2 mt-2 h-100">
|
||||
<table class="h-100 bg-white">
|
||||
<table class="h-100 bg-white" style="font-size: small;">
|
||||
<tr>
|
||||
<th class="bg-white">IN</th>
|
||||
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
||||
@ -110,23 +106,23 @@ $settings = $session->get('settings');
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-5">
|
||||
<div class="col-5 h-100">
|
||||
<div class="row">
|
||||
<div class="col-12 w-50 text-center" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
|
||||
<strong><?= $encuadernacionCode ?></strong>
|
||||
<div class="col-12 w-50 text-center code-title fw-bold" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
|
||||
<?= $encuadernacionCode ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row h-75">
|
||||
<div class="col-6 square text-center" style="background-color: <?= $colors["papel_interior"]["bg"] ?>;color:<?= $colors["papel_interior"]["color"] ?>;">
|
||||
<div class="row h-100">
|
||||
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["papel_interior"]["bg"] ?>;color:<?= $colors["papel_interior"]["color"] ?>;">
|
||||
<?= $linea_impresion?->papel_impresion()->papel_code_ot ?>
|
||||
</div>
|
||||
<div class="col-6 square text-center <?= $linea_impresion->isColor() ? "cmyk" : "bn" ?>">
|
||||
<div class="col-6 square text-center code-title <?= $linea_impresion->isColor() ? "cmyk" : "bn" ?>">
|
||||
<?= $tiempo_impresion ?>
|
||||
</div>
|
||||
<div class="col-6 square text-center" style="background-color: <?= $colors["papel_cubierta"]["bg"] ?>;color:<?= $colors["papel_cubierta"]["color"] ?>;">
|
||||
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["papel_cubierta"]["bg"] ?>;color:<?= $colors["papel_cubierta"]["color"] ?>;">
|
||||
<?= $linea_cubierta?->papel_impresion()->papel_code_ot ?>
|
||||
</div>
|
||||
<div class="col-6 square text-center" style="background-color: <?= $colors["plastificado"]["bg"] ?>;color:<?= $colors["plastificado"]["color"] ?>;">
|
||||
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["plastificado"]["bg"] ?>;color:<?= $colors["plastificado"]["color"] ?>;">
|
||||
<?= isset($acabados[0]) ? $acabados[0]->tarifa()->code : "" ?>
|
||||
</div>
|
||||
<?php foreach ($acabados as $key => $acabado): ?>
|
||||
@ -141,7 +137,7 @@ $settings = $session->get('settings');
|
||||
<div class="col-4" style="background-color: <?= $colors["ot"]["bg"] ?>">
|
||||
<div class="row h-100">
|
||||
<div class="col-12 h-50 d-flex flex align-items-center justify-content-center">
|
||||
<span class="fs-large" style="color:<?= $colors["ot"]["color"] ?>;"><strong><?= $ot->id ?></strong></span>
|
||||
<span class="ot-code" style="color:<?= $colors["ot"]["color"] ?>;"><?= $ot->id ?></span>
|
||||
</div>
|
||||
<div class="col-12 h-50 d-flex flex align-items-center justify-content-center bg-white">
|
||||
<img class="img-fluid" src="data:image/png;base64,<?= $ot->bar_code ?>" alt="barcode" />
|
||||
@ -155,32 +151,32 @@ $settings = $session->get('settings');
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<table class="h-50">
|
||||
<table class="h-100">
|
||||
<tr>
|
||||
<th>IDSK</th>
|
||||
<td class="t-cell">
|
||||
<th class="al">IDSK</th>
|
||||
<td class="t-cell w-75">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>CLIENTE</th>
|
||||
<th class="al">CLIENTE</th>
|
||||
<td class="t-cell">
|
||||
<?= $cliente->alias ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>TITULO</th>
|
||||
<th class="al">TITULO</th>
|
||||
<td class="t-cell">
|
||||
<?= $presupuesto->titulo ?>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<th>ISBN</th>
|
||||
<th class="al">ISBN</th>
|
||||
<td class="t-cell"><?= $presupuesto->isbn ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>PEDIDO CLIENTE</th>
|
||||
<th class="al">PEDIDO</th>
|
||||
<td class="t-cell"><?= $pedido->id ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -188,7 +184,6 @@ $settings = $session->get('settings');
|
||||
<div class="col-4">
|
||||
<div class="col-12 d-flex justify-content-center" style="width: 100%">
|
||||
<?php if ($imposicion): ?>
|
||||
|
||||
<?php if ($imposicion->imposicion_esquema()): ?>
|
||||
<?= $imposicion->imposicion_esquema()->svg_schema ?>
|
||||
<?php endif; ?>
|
||||
@ -208,19 +203,31 @@ $settings = $session->get('settings');
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<div class="section-title impresion">IMP. INTERIOR</div>
|
||||
<div class="d-flex flex-row gap-2 justify-content-start">
|
||||
<div class="section-title impresion">IMP. INTERIOR</div>
|
||||
<?php if ($pedido->fecha_impresion): ?>
|
||||
<div class="section-title "><?= Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_impresion)->format('d/m/Y') ?></div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div>
|
||||
<table>
|
||||
<table class="">
|
||||
<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>
|
||||
<th class="t-header"><?= lang('Produccion.size') ?></th>
|
||||
<th class="t-header"><?= lang('Produccion.ejemplares') ?></th>
|
||||
<th class="t-header"><?= lang('Produccion.tipo') ?></th>
|
||||
<th class="t-header"><?= lang('Produccion.lomo') ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<?php if ($presupuesto->papel_formato_personalizado): ?>
|
||||
<td class="t-cell text-center"> <?= $presupuesto->papel_formato_ancho ?>x<?= $presupuesto->papel_formato_alto ?> </td>
|
||||
<?php else: ?>
|
||||
<td class="t-cell text-center"> <?= $papel_formato->ancho ?>x<?= $papel_formato->alto ?> </td>
|
||||
<?php endif; ?>
|
||||
<td class="t-cell text-center"> <?= $presupuesto->tirada ?> + <?= $presupuesto->merma ?> </td>
|
||||
<th class="t-header" style="width: 10%;"><?= lang('Produccion.tipo') ?></th>
|
||||
<td class="t-cell text-center"> <?= $presupuesto->tipo_presupuesto()?->codigo ?? "" ?> </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>
|
||||
@ -235,12 +242,12 @@ $settings = $session->get('settings');
|
||||
<th>Tiempo</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?= $presupuesto->paginas ?></td> <!-- Páginas libro -->
|
||||
<td><?= $presupuesto->tirada ?> </td>
|
||||
<td><?= number_format($presupuesto->paginas, 0, ',', '.') ?></td> <!-- Páginas libro -->
|
||||
<td><?= number_format($presupuesto->tirada, 0, ',', '.') ?> </td>
|
||||
<td><?= $linea_impresion->tinta() ?></td>
|
||||
<td><?= json_decode($linea_impresion->formas)->formas ?></td>
|
||||
<td><strong><?= $linea_impresion->maquina()->nombre ?></strong></td>
|
||||
<td><?= $linea_impresion->rotativa_clicks_total ?></td>
|
||||
<td><?= number_format($linea_impresion->rotativa_clicks_total, 0, ',', '.') ?></td>
|
||||
<td><?= float_seconds_to_hhmm_string($linea_impresion->horas_maquina * 3600) ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -255,8 +262,8 @@ $settings = $session->get('settings');
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="comments <?=$ot->comment_interior ? '' : 'd-none' ?>">
|
||||
<div class="flex-row impresion"><?= lang('Produccion.comentariosImpresionInterior') ?></div>
|
||||
<div class="comments <?= $ot->comment_interior ? '' : 'd-none' ?>">
|
||||
<div class="flex-row "><?= lang('Produccion.comentariosImpresionInterior') ?></div>
|
||||
<div class=" w-100">
|
||||
<p>
|
||||
<?= $ot->comment_interior ?>
|
||||
@ -270,7 +277,7 @@ $settings = $session->get('settings');
|
||||
<div class="section-title cubierta">IMP. CUBIERTA</div>
|
||||
<div class="col-12">
|
||||
|
||||
<table>
|
||||
<table class="">
|
||||
<tr>
|
||||
<td rowspan="3" class="row-logo-impresion"><img src="<?= site_url($linea_cubierta->get_impresion_logo()) ?>" width="35px" height="35px"></td>
|
||||
<th>Tintas</th>
|
||||
@ -294,7 +301,7 @@ $settings = $session->get('settings');
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<div class="comments <?=$ot->comment_cubierta ? '' : 'd-none' ?>">
|
||||
<div class="comments <?= $ot->comment_cubierta ? '' : 'd-none' ?>">
|
||||
<div class="flex-row cubierta"><?= lang('Produccion.comentariosCubierta') ?></div>
|
||||
|
||||
<div class="">
|
||||
@ -308,12 +315,19 @@ $settings = $session->get('settings');
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<div class="row">
|
||||
<div class="section-title encuadernacion">ACABADOS/ENCUADERNACIÓN</div>
|
||||
<div class="d-flex flex-row justify-content-start w-100 gap-2">
|
||||
<div class="section-title encuadernacion">ACABADOS/ENCUADERNACIÓN</div>
|
||||
<?php if ($pedido->fecha_encuadernado): ?>
|
||||
<div class="section-title "><?= Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->format('d/m/Y') ?></div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="col-1 w-10 mb-2 text-center" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
|
||||
<span class="fs-bold"><?= $encuadernacionCode ?></span>
|
||||
<div class="row">
|
||||
<div class="col-3 mb-2 text-center code-title fw-bold" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
|
||||
<?= $encuadernacionCode ?>
|
||||
</div>
|
||||
</div>
|
||||
<table>
|
||||
<table class="">
|
||||
<?php foreach ($acabados as $key => $acabado): ?>
|
||||
<tr>
|
||||
<td class="w-10 encuadernacion">Plastificado</td>
|
||||
@ -324,7 +338,7 @@ $settings = $session->get('settings');
|
||||
<td class="bg-encuadernacion" style="width: 100px;"><?= $acabado->proveedor() ? $acabado->proveedor()->nombre : "" ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-start" colspan="2"><?=$ot->info_solapa_guillotina?></td>
|
||||
<td class="text-start" colspan="2"><?= $ot->info_solapa_guillotina ?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="t-header">CORTE PIE:</td>
|
||||
@ -345,14 +359,15 @@ $settings = $session->get('settings');
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
$error_message = $th->getMessage();
|
||||
echo "<span style='color:red'>No se ha podido renderizar la tabla de encuadernación</span>";
|
||||
// echo view("/themes/vuexy/pdfs/encuadernados/default.php", ["encuadernacion" => $encuadernacion]);
|
||||
// echo "<span style='color:red'>No se ha podido renderizar la tabla de encuadernación</span>";
|
||||
// echo "<br><span style='color:red'>$error_message</span>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
<?php if (count($encuadernaciones) > 0): ?>
|
||||
|
||||
<div class="comments <?=$ot->comment_encuadernacion ? '' : 'd-none' ?>" >
|
||||
<div class="comments <?= $ot->comment_encuadernacion ? '' : 'd-none' ?>">
|
||||
<div class="flex-row encuadernacion"><?= lang('Produccion.comentariosEncuadernacion') ?></div>
|
||||
<div class="">
|
||||
<p>
|
||||
@ -366,23 +381,26 @@ $settings = $session->get('settings');
|
||||
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<div class="section-title">LOGISTICA</div>
|
||||
<div class="d-flex flex-row justify-content-start w-100 gap-2">
|
||||
<div class="section-title">LOGISTICA</div>
|
||||
<?php if ($pedido->fecha_entrega_real): ?>
|
||||
<div class="section-title "><?= Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_entrega_real)->format('d/m/Y') ?></div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<table>
|
||||
<table class="">
|
||||
<tr>
|
||||
<th>Peso Unidad</th>
|
||||
<th>Peso Pedido</th>
|
||||
<th>Cajas</th>
|
||||
<th>Corte Pie</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?= number_format($peso_unidad, 2, ',', '.') ?> gr</td>
|
||||
<td><?= $peso_pedido > 1000 ? number_format($peso_pedido / 1000, 2, ',', '.') . " kg" : number_format($peso_pedido, 2, ',', '.') . " gr" ?> </td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="comments <?=$ot->comment_logistica ? '' : 'd-none' ?>">
|
||||
<div class="comments <?= $ot->comment_logistica ? '' : 'd-none' ?>">
|
||||
<div class="flex-row logistica"><?= lang('Produccion.comentariosLogistica') ?></div>
|
||||
|
||||
<div class="">
|
||||
|
||||
@ -56,13 +56,13 @@ $settings = $session->get('settings');
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<div class="px-2 d-flex flex justify-content-between align-items-center" style="background-color: <?= $colors["week_day"]["bg"] ?>;color:<?= $colors["week_day"]["color"] ?>;">
|
||||
<span><strong><?= $pedido->fecha_encuadernado ? week_day_humanize(Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->getDayOfWeek() - 1, true) : "" ?></strong></span>
|
||||
<span><strong>Comercial:</strong> <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </span>
|
||||
<span><?= $pedido->fecha_encuadernado ? week_day_humanize(Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->getDayOfWeek() - 1, true) : "" ?></span>
|
||||
<span>Comercial: <?= $cliente->first_name . " " . $cliente->comercial()->last_name ?> </span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="px-2 d-flex flex justify-content-center align-items-center w-100">
|
||||
<span class="w-100 text-center" style="background-color: <?= $colors["impresion_interior_ppal"]["bg"] ?>;color:<?= $colors["impresion_interior_ppal"]["color"] ?>;">
|
||||
<span class="w-100 text-center code-title" style="background-color: <?= $colors["impresion_interior_ppal"]["bg"] ?>;color:<?= $colors["impresion_interior_ppal"]["color"] ?>;">
|
||||
<?php if ($isPOD): ?>
|
||||
<strong>POD</strong>
|
||||
<?php elseif ($presupuesto->presupuestoLineaImpresion()->isRotativa()): ?>
|
||||
@ -70,22 +70,17 @@ $settings = $session->get('settings');
|
||||
<?php else: ?>
|
||||
<strong>GENERAL</strong>
|
||||
<?php endif; ?>
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row p-2">
|
||||
<div class="col-3 h-100">
|
||||
<div class="row px-2 d-flex flex justify-content-between align-items-center">
|
||||
<div class="col-6 w-100 text-center">
|
||||
<span id="fecha_encuadernado_at" style="color:<?= $colors["general"]["color"] ?>;"><strong><?= $pedido->fecha_encuadernado ? Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->format('d/m/Y') : "" ?></strong></span>
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<span id="fecha_encuadernado_at" class="fs-large fw-bold" style="color:<?= $colors["general"]["color"] ?>;"><?= $pedido->fecha_encuadernado ? Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->format('d/m/Y') : "" ?></span>
|
||||
</div>
|
||||
<div class="row px-2 mt-2 h-100">
|
||||
<table class="h-100 bg-white">
|
||||
<table class="h-100 bg-white" style="font-size: small;">
|
||||
<tr>
|
||||
<th class="bg-white">IN</th>
|
||||
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
||||
@ -107,26 +102,27 @@ $settings = $session->get('settings');
|
||||
<td class="t-cell bg-white"><?= $ubicacion ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-5">
|
||||
<div class="col-5 h-100">
|
||||
<div class="row">
|
||||
<div class="col-12 w-50 text-center" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
|
||||
<strong><?= $encuadernacionCode ?></strong>
|
||||
<div class="col-12 w-50 text-center code-title fw-bold" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
|
||||
<?= $encuadernacionCode ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row h-75">
|
||||
<div class="col-6 square text-center" style="background-color: <?= $colors["papel_interior"]["bg"] ?>;color:<?= $colors["papel_interior"]["color"] ?>;">
|
||||
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["papel_interior"]["bg"] ?>;color:<?= $colors["papel_interior"]["color"] ?>;">
|
||||
<?= $linea_impresion?->papel_impresion()->papel_code_ot ?>
|
||||
</div>
|
||||
<div class="col-6 square text-center <?= $linea_impresion->isColor() ? "cmyk" : "bn" ?>">
|
||||
<div class="col-6 square text-center code-title <?= $linea_impresion->isColor() ? "cmyk" : "bn" ?>">
|
||||
<?= $tiempo_impresion ?>
|
||||
</div>
|
||||
<div class="col-6 square text-center" style="background-color: <?= $colors["papel_cubierta"]["bg"] ?>;color:<?= $colors["papel_cubierta"]["color"] ?>;">
|
||||
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["papel_cubierta"]["bg"] ?>;color:<?= $colors["papel_cubierta"]["color"] ?>;">
|
||||
<?= $linea_cubierta?->papel_impresion()->papel_code_ot ?>
|
||||
</div>
|
||||
<div class="col-6 square text-center" style="background-color: <?= $colors["plastificado"]["bg"] ?>;color:<?= $colors["plastificado"]["color"] ?>;">
|
||||
<div class="col-6 square text-center code-title" style="background-color: <?= $colors["plastificado"]["bg"] ?>;color:<?= $colors["plastificado"]["color"] ?>;">
|
||||
<?= isset($acabados[0]) ? $acabados[0]->tarifa()->code : "" ?>
|
||||
</div>
|
||||
<?php foreach ($acabados as $key => $acabado): ?>
|
||||
@ -141,7 +137,7 @@ $settings = $session->get('settings');
|
||||
<div class="col-4" style="background-color: <?= $colors["ot"]["bg"] ?>">
|
||||
<div class="row h-100">
|
||||
<div class="col-12 h-50 d-flex flex align-items-center justify-content-center">
|
||||
<span class="fs-large" style="color:<?= $colors["ot"]["color"] ?>;"><strong><?= $ot->id ?></strong></span>
|
||||
<span class="ot-code" style="color:<?= $colors["ot"]["color"] ?>;"><?= $ot->id ?></span>
|
||||
</div>
|
||||
<div class="col-12 h-50 d-flex flex align-items-center justify-content-center bg-white">
|
||||
<img class="img-fluid" src="data:image/png;base64,<?= $ot->bar_code ?>" alt="barcode" />
|
||||
@ -155,32 +151,30 @@ $settings = $session->get('settings');
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<table class="h-50">
|
||||
<table class="h-100">
|
||||
<tr>
|
||||
<th>IDSK</th>
|
||||
<td class="t-cell">
|
||||
|
||||
</td>
|
||||
<th class="al">IDSK</th>
|
||||
<td class="t-cell"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>CLIENTE</th>
|
||||
<th class="al">CLIENTE</th>
|
||||
<td class="t-cell">
|
||||
<?= $cliente->alias ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>TITULO</th>
|
||||
<th class="al">TITULO</th>
|
||||
<td class="t-cell">
|
||||
<?= $presupuesto->titulo ?>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<th>ISBN</th>
|
||||
<th class="al">ISBN</th>
|
||||
<td class="t-cell"><?= $presupuesto->isbn ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>PEDIDO CLIENTE</th>
|
||||
<th class="al">PEDIDO</th>
|
||||
<td class="t-cell"><?= $pedido->id ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -188,12 +182,10 @@ $settings = $session->get('settings');
|
||||
<div class="col-4">
|
||||
<div class="col-12 d-flex justify-content-center" style="width: 100%">
|
||||
<?php if ($imposicion): ?>
|
||||
|
||||
<?php if ($imposicion->imposicion_esquema()): ?>
|
||||
<?= $imposicion->imposicion_esquema()->svg_schema ?>
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="imposicion">
|
||||
@ -208,19 +200,31 @@ $settings = $session->get('settings');
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<div class="section-title impresion">IMP. INTERIOR</div>
|
||||
<div class="d-flex flex-row gap-2 justify-content-start">
|
||||
<div class="section-title impresion">IMP. INTERIOR</div>
|
||||
<?php if ($pedido->fecha_impresion): ?>
|
||||
<div class="section-title "><?= Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_impresion)->format('d/m/Y') ?></div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div>
|
||||
<table>
|
||||
<table class="">
|
||||
<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/$presupuesto->tirada ?> </td>
|
||||
<th class="t-header" style="width: 10%;"><?= lang('Produccion.tipo') ?></th>
|
||||
<th class="t-header"><?= lang('Produccion.size') ?></th>
|
||||
<th class="t-header"><?= lang('Produccion.ejemplares') ?></th>
|
||||
<th class="t-header"><?= lang('Produccion.tipo') ?></th>
|
||||
<th class="t-header"><?= lang('Produccion.lomo') ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<?php if ($presupuesto->papel_formato_personalizado): ?>
|
||||
<td class="t-cell text-center"> <?= $presupuesto->papel_formato_ancho ?>x<?= $presupuesto->papel_formato_alto ?> </td>
|
||||
<?php else: ?>
|
||||
<td class="t-cell text-center"> <?= $papel_formato->ancho ?>x<?= $papel_formato->alto ?> </td>
|
||||
<?php endif; ?>
|
||||
<td class="t-cell text-center"> 1 </td>
|
||||
<td class="t-cell text-center"> <?= $presupuesto->tipo_presupuesto()?->codigo ?? "" ?> </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>
|
||||
@ -236,7 +240,7 @@ $settings = $session->get('settings');
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?= $presupuesto->paginas ?></td> <!-- Páginas libro -->
|
||||
<td><?= $presupuesto->tirada / $presupuesto->tirada ?> </td>
|
||||
<td> 1 </td>
|
||||
<td><?= $linea_impresion->tinta() ?></td>
|
||||
<td><?= json_decode($linea_impresion->formas)->formas ?></td>
|
||||
<td><strong><?= $linea_impresion->maquina()->nombre ?></strong></td>
|
||||
@ -255,8 +259,8 @@ $settings = $session->get('settings');
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="comments <?=$ot->comment_interior ? '' : 'd-none' ?>">
|
||||
<div class="flex-row impresion"><?= lang('Produccion.comentariosImpresionInterior') ?></div>
|
||||
<div class="comments <?= $ot->comment_interior ? '' : 'd-none' ?>">
|
||||
<div class="flex-row impresion">Comentarios impresión interior</div>
|
||||
<div class="comment-content w-100">
|
||||
<p>
|
||||
<?= $ot->comment_interior ?>
|
||||
@ -281,10 +285,10 @@ $settings = $session->get('settings');
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?= $linea_cubierta->tinta() ?></td>
|
||||
<td><?= $presupuesto->tirada/$presupuesto->tirada ?></td>
|
||||
<td><?= $presupuesto->tirada / $presupuesto->tirada ?></td>
|
||||
<td><strong><?= $linea_cubierta->maquina()->nombre ?></strong></td>
|
||||
<td><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td>
|
||||
<td><?= float_seconds_to_hhmm_string($linea_cubierta->horas_maquina * 3600/$presupuesto->tirada) ?></td>
|
||||
<td><?= float_seconds_to_hhmm_string($linea_cubierta->horas_maquina * 3600 / $presupuesto->tirada) ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="1"><?= json_decode($linea_cubierta->formas)->maquina_ancho ?>x<?= json_decode($linea_cubierta->formas)->maquina_alto ?></td>
|
||||
@ -294,7 +298,7 @@ $settings = $session->get('settings');
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<div class="comments <?=$ot->comment_cubierta ? '' : 'd-none' ?>">
|
||||
<div class="comments <?= $ot->comment_cubierta ? '' : 'd-none' ?>">
|
||||
<div class="flex-row cubierta"><?= lang('Produccion.comentariosCubierta') ?></div>
|
||||
|
||||
<div class="comment-content">
|
||||
@ -308,10 +312,17 @@ $settings = $session->get('settings');
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<div class="row mb-2">
|
||||
<div class="section-title encuadernacion">ACABADOS/ENCUADERNACIÓN</div>
|
||||
<div class="d-flex flex-row justify-content-start w-100 gap-2">
|
||||
<div class="section-title encuadernacion">ACABADOS/ENCUADERNACIÓN</div>
|
||||
<?php if ($pedido->fecha_encuadernado): ?>
|
||||
<div class="section-title "><?= Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_encuadernado)->format('d/m/Y') ?></div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="col-1 w-10 mb-2 text-center" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
|
||||
<span class="fs-bold"><?= $encuadernacionCode ?></span>
|
||||
<div class="row">
|
||||
<div class="col-3 mb-2 text-center code-title fw-bold" style="background-color: <?= $colors["ot"]["bg"] ?>;color:<?= $colors["ot"]["color"] ?>;">
|
||||
<?= $encuadernacionCode ?>
|
||||
</div>
|
||||
</div>
|
||||
<table>
|
||||
<?php foreach ($acabados as $key => $acabado): ?>
|
||||
@ -324,7 +335,7 @@ $settings = $session->get('settings');
|
||||
<td class="bg-encuadernacion" style="width: 100px;"><?= $acabado->proveedor() ? $acabado->proveedor()->nombre : "" ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-start" colspan="2"><?=$ot->info_solapa_guillotina?></td>
|
||||
<td class="text-start" colspan="2"><?= $ot->info_solapa_guillotina ?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="t-header">CORTE PIE:</td>
|
||||
@ -345,14 +356,15 @@ $settings = $session->get('settings');
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
$error_message = $th->getMessage();
|
||||
echo "<span style='color:red'>No se ha podido renderizar la tabla de encuadernación</span>";
|
||||
// echo view("/themes/vuexy/pdfs/encuadernados/default.php", ["encuadernacion" => $encuadernacion]);
|
||||
// echo "<span style='color:red'>No se ha podido renderizar la tabla de encuadernación</span>";
|
||||
// echo "<br><span style='color:red'>$error_message</span>";
|
||||
}
|
||||
}
|
||||
?>
|
||||
<?php if (count($encuadernaciones) > 0): ?>
|
||||
|
||||
<div class="comments <?=$ot->comment_encuadernacion ? '' : 'd-none' ?>">
|
||||
<div class="comments <?= $ot->comment_encuadernacion ? '' : 'd-none' ?>">
|
||||
<div class="flex-row encuadernacion"><?= lang('Produccion.comentariosEncuadernacion') ?></div>
|
||||
<div class="comment-content">
|
||||
<p>
|
||||
@ -366,7 +378,12 @@ $settings = $session->get('settings');
|
||||
|
||||
</div>
|
||||
<div class="row mb-2">
|
||||
<div class="section-title">LOGISTICA</div>
|
||||
<div class="d-flex flex-row justify-content-start w-100 gap-2">
|
||||
<div class="section-title">LOGISTICA</div>
|
||||
<?php if ($pedido->fecha_entrega_real): ?>
|
||||
<div class="section-title "><?= Time::createFromFormat("Y-m-d H:i:s", $pedido->fecha_entrega_real)->format('d/m/Y') ?></div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<table>
|
||||
<tr>
|
||||
@ -380,9 +397,8 @@ $settings = $session->get('settings');
|
||||
<td>-</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="comments">
|
||||
<div class="flex-row logistica"><?= lang('Produccion.comentariosLogistica') ?></div>
|
||||
|
||||
<div class="comments <?= $ot->comment_logistica ? '' : 'd-none' ?>">
|
||||
<div class="flex-row">Comentarios logistica:</div>
|
||||
<div class="comment-content">
|
||||
<p>
|
||||
<?= $ot->comment_logistica ?>
|
||||
|
||||
@ -75,7 +75,7 @@ class Chat {
|
||||
});
|
||||
}
|
||||
if (this.chatHistoryBody.length) {
|
||||
this.chatHistoryBody.scrollTop(0,this.chatHistoryBody[0].scrollHeight);
|
||||
this.chatHistoryBody.scrollTop(0, this.chatHistoryBody[0].scrollHeight);
|
||||
}
|
||||
}
|
||||
initDirectMessage() {
|
||||
@ -650,9 +650,6 @@ class Chat {
|
||||
<div class="chat-contact-info flex-grow-1 ms-2">
|
||||
<h6 class="chat-contact-name text-truncate m-0">${contact?.first_name ?? "" + " " +
|
||||
contact?.last_name ?? ""}</h6>
|
||||
<p class="chat-contact-status text-muted text-truncate mb-0">
|
||||
${contact?.cliente_id ? "[CLIENTE]" : ""}${contact.username}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
@ -8,6 +8,8 @@ class MessagesDatatable {
|
||||
this.datatablePedidoMessageItem = this.item.find("#tablePedidoMessages")
|
||||
this.datatableFacturaMessageItem = this.item.find("#tableFacturaMessages")
|
||||
this.datatableOtMessageItem = this.item.find("#tableOtMessages")
|
||||
this.datatableDirectMessageItem = this.item.find("#tableDirectMessages")
|
||||
|
||||
|
||||
this.focusTable = this.datatableItem
|
||||
this.columnDefs = [
|
||||
@ -15,7 +17,7 @@ class MessagesDatatable {
|
||||
this.datatableColumns = [
|
||||
{ data: 'created_at', searchable: true, sortable: true },
|
||||
{ data: 'updated_at', searchable: true, sortable: true },
|
||||
{ data: 'title', name:"chats.title",searchable: true, sortable: true },
|
||||
{ data: 'title', name: "chats.title", searchable: true, sortable: true },
|
||||
{ data: 'message', searchable: false, sortable: true },
|
||||
{ data: 'creator', searchable: false, sortable: false },
|
||||
{
|
||||
@ -59,8 +61,8 @@ class MessagesDatatable {
|
||||
this.datatable = this.datatableItem.DataTable({
|
||||
processing: true,
|
||||
order: [[1, 'desc']],
|
||||
columnDefs : this.columnDefs,
|
||||
orderCellsTop : true,
|
||||
columnDefs: this.columnDefs,
|
||||
orderCellsTop: true,
|
||||
layout: {
|
||||
topStart: 'pageLength',
|
||||
topEnd: 'search',
|
||||
@ -79,8 +81,8 @@ class MessagesDatatable {
|
||||
this.datatablePresupuestoMessage = this.datatablePresupuestoMessageItem.DataTable({
|
||||
processing: true,
|
||||
order: [[1, 'desc']],
|
||||
columnDefs : this.columnDefs,
|
||||
orderCellsTop : true,
|
||||
columnDefs: this.columnDefs,
|
||||
orderCellsTop: true,
|
||||
layout: {
|
||||
topStart: 'pageLength',
|
||||
topEnd: 'search',
|
||||
@ -97,8 +99,8 @@ class MessagesDatatable {
|
||||
});
|
||||
this.datatablePedidoMessage = this.datatablePedidoMessageItem.DataTable({
|
||||
processing: true,
|
||||
orderCellsTop : true,
|
||||
columnDefs : this.columnDefs,
|
||||
orderCellsTop: true,
|
||||
columnDefs: this.columnDefs,
|
||||
order: [[1, 'desc']],
|
||||
layout: {
|
||||
topStart: 'pageLength',
|
||||
@ -116,8 +118,8 @@ class MessagesDatatable {
|
||||
});
|
||||
this.datatableFacturaMessage = this.datatableFacturaMessageItem.DataTable({
|
||||
processing: true,
|
||||
orderCellsTop : true,
|
||||
columnDefs : this.columnDefs,
|
||||
orderCellsTop: true,
|
||||
columnDefs: this.columnDefs,
|
||||
order: [[1, 'desc']],
|
||||
layout: {
|
||||
topStart: 'pageLength',
|
||||
@ -136,8 +138,8 @@ class MessagesDatatable {
|
||||
this.datatableOtMessage = this.datatableOtMessageItem.DataTable({
|
||||
processing: true,
|
||||
order: [[1, 'desc']],
|
||||
columnDefs : this.columnDefs,
|
||||
orderCellsTop : true,
|
||||
columnDefs: this.columnDefs,
|
||||
orderCellsTop: true,
|
||||
layout: {
|
||||
topStart: 'pageLength',
|
||||
topEnd: 'search',
|
||||
@ -152,6 +154,25 @@ class MessagesDatatable {
|
||||
columns: this.datatableColumns,
|
||||
ajax: '/messages/datatable/ots'
|
||||
});
|
||||
this.datatableDirectMessage = this.datatableDirectMessageItem.DataTable({
|
||||
processing: true,
|
||||
order: [[1, 'desc']],
|
||||
columnDefs: this.columnDefs,
|
||||
orderCellsTop: true,
|
||||
layout: {
|
||||
topStart: 'pageLength',
|
||||
topEnd: 'search',
|
||||
bottomStart: 'info',
|
||||
bottomEnd: 'paging'
|
||||
},
|
||||
serverSide: true,
|
||||
pageLength: 10,
|
||||
language: {
|
||||
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
||||
},
|
||||
columns: this.datatableColumns,
|
||||
ajax: '/messages/datatable/direct'
|
||||
});
|
||||
this.datatablePresupuestoMessageItem.on("keyup", ".datatable-message-filter", (event) => {
|
||||
let columnIndex = this.datatableColumns.findIndex((element) => element.data == $(event.currentTarget).attr("name"))
|
||||
this.datatablePresupuestoMessage.column(columnIndex).search($(event.currentTarget).val()).draw()
|
||||
@ -166,7 +187,11 @@ class MessagesDatatable {
|
||||
})
|
||||
this.datatableOtMessageItem.on("keyup", ".datatable-message-filter", (event) => {
|
||||
let columnIndex = this.datatableColumns.findIndex((element) => element.data == $(event.currentTarget).attr("name"))
|
||||
this.datatableFacturaMessage.column(columnIndex).search($(event.currentTarget).val()).draw()
|
||||
this.datatableOtMessage.column(columnIndex).search($(event.currentTarget).val()).draw()
|
||||
})
|
||||
this.datatableDirectMessageItem.on("keyup", ".datatable-message-filter", (event) => {
|
||||
let columnIndex = this.datatableColumns.findIndex((element) => element.data == $(event.currentTarget).attr("name"))
|
||||
this.datatableDirectMessage.column(columnIndex).search($(event.currentTarget).val()).draw()
|
||||
})
|
||||
|
||||
}
|
||||
@ -197,18 +222,15 @@ class MessagesDatatable {
|
||||
}
|
||||
}
|
||||
handleDropUpError() { }
|
||||
addDropUpItem(user)
|
||||
{
|
||||
addDropUpItem(user) {
|
||||
return `
|
||||
<li >
|
||||
<a type="button" class="d-flex flex-row justify-content-between align-items-center dropdown-item px-2 gap-2" href="javascript:void(0);" >
|
||||
<span> ${user.userFullName ?? user.userName} </span>
|
||||
<span class="badge badge-center rounded-pill text-bg-${
|
||||
user.viewed == 1 ? 'success' : 'danger'
|
||||
}">
|
||||
<i class="ti ti-xs ti-${
|
||||
user.viewed == 1 ? 'eye-check' : 'eye-off'
|
||||
} "></i>
|
||||
<span class="badge badge-center rounded-pill text-bg-${user.viewed == 1 ? 'success' : 'danger'
|
||||
}">
|
||||
<i class="ti ti-xs ti-${user.viewed == 1 ? 'eye-check' : 'eye-off'
|
||||
} "></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>`;
|
||||
|
||||
@ -38,26 +38,30 @@ class MessagePage {
|
||||
this.btnSubmitNewDirectMessage.on("click", this.handleSubmitNewMessage.bind(this))
|
||||
this.btnSubmitNewDirectMessageCliente.on("click", this.handleSubmitNewMessageClient.bind(this))
|
||||
|
||||
$("#navs-top-align-all-tab").on("click",()=>{
|
||||
$("#navs-top-align-all-tab").on("click", () => {
|
||||
this.messageDatatable.datatable.ajax.reload()
|
||||
this.messageDatatable.focusTable = this.messageDatatable.datatableItem
|
||||
})
|
||||
$("#navs-top-align-presupuestos-tab").on("click",()=>{
|
||||
$("#navs-top-align-presupuestos-tab").on("click", () => {
|
||||
this.messageDatatable.datatablePresupuestoMessage.ajax.reload()
|
||||
this.messageDatatable.focusTable = this.messageDatatable.datatablePresupuestoMessageItem
|
||||
})
|
||||
$("#navs-top-align-pedidos-tab").on("click",()=>{
|
||||
$("#navs-top-align-pedidos-tab").on("click", () => {
|
||||
this.messageDatatable.datatablePedidoMessage.ajax.reload()
|
||||
this.messageDatatable.focusTable = this.messageDatatable.datatablePedidoMessageItem
|
||||
})
|
||||
$("#navs-top-align-facturas-tab").on("click",()=>{
|
||||
$("#navs-top-align-facturas-tab").on("click", () => {
|
||||
this.messageDatatable.datatableFacturaMessage.ajax.reload()
|
||||
this.messageDatatable.focusTable = this.messageDatatable.datatableFacturaMessageItem
|
||||
})
|
||||
$("#navs-top-align-ot-tab").on("click",()=>{
|
||||
$("#navs-top-align-ot-tab").on("click", () => {
|
||||
this.messageDatatable.datatableOtMessage.ajax.reload()
|
||||
this.messageDatatable.focusTable = this.messageDatatable.datatableOtMessageItem
|
||||
})
|
||||
$("#navs-top-align-direct-tab").on("click", () => {
|
||||
this.messageDatatable.datatableDirectMessage.ajax.reload()
|
||||
this.messageDatatable.focusTable = this.messageDatatable.datatableDirectMessageItem
|
||||
})
|
||||
|
||||
}
|
||||
openNewMessageModal() {
|
||||
@ -68,7 +72,7 @@ class MessagePage {
|
||||
this.modalNewMessage.toggle()
|
||||
}
|
||||
|
||||
handleSubmitNewMessage() {
|
||||
handleSubmitNewMessage() {
|
||||
this.btnNewMessage.addClass("loading")
|
||||
const ajax = new Ajax("/messages/direct",
|
||||
this.getNewMessageDataForm(),
|
||||
@ -92,7 +96,7 @@ class MessagePage {
|
||||
this.alert.setAsError()
|
||||
this.alert.setHeadingTitle(error.message)
|
||||
}
|
||||
handleSubmitNewMessageClient(){
|
||||
handleSubmitNewMessageClient() {
|
||||
this.btnNewMessage.addClass("loading")
|
||||
const ajax = new Ajax("/messages/direct/client",
|
||||
this.getNewMessageDataFormClient(),
|
||||
@ -101,11 +105,11 @@ class MessagePage {
|
||||
this.handleSubmitNewMessageError.bind(this))
|
||||
ajax.post()
|
||||
}
|
||||
handleSubmitNewMessageClientSuccess(){
|
||||
|
||||
handleSubmitNewMessageClientSuccess() {
|
||||
|
||||
}
|
||||
handleSubmitNewMessageClientError(){
|
||||
|
||||
handleSubmitNewMessageClientError() {
|
||||
|
||||
}
|
||||
getNewMessageDataForm() {
|
||||
return {
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
$(() => {
|
||||
var opt = {
|
||||
margin: 2,
|
||||
filename: $(".pdf-wrapper").data("id") + ".pdf",
|
||||
image: { type: 'jpeg', quality: 1 },
|
||||
html2canvas: { scale: 4 },
|
||||
jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
|
||||
};
|
||||
let elementToPdf = $('body')[0]
|
||||
margin: 2,
|
||||
filename: $(".pdf-wrapper").data("id") + ".pdf",
|
||||
image: { type: 'jpeg', quality: 1 },
|
||||
html2canvas: { scale: 4 },
|
||||
jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' },
|
||||
};
|
||||
let elementToPdf = $('body')[0]
|
||||
html2pdf().set(opt).from(elementToPdf).save()
|
||||
})
|
||||
@ -3,22 +3,23 @@
|
||||
margin: 0;
|
||||
}
|
||||
@media print {
|
||||
.page,
|
||||
{
|
||||
.page {
|
||||
width: 210mm;
|
||||
height: 297mm;
|
||||
max-width: 210mm;
|
||||
max-height: 297mm;
|
||||
print-color-adjust: exact;
|
||||
}
|
||||
|
||||
/* ... the rest of the rules ... */
|
||||
}
|
||||
html {
|
||||
html,body {
|
||||
font-family: Arial, sans-serif;
|
||||
width: 210mm;
|
||||
height: 297mm;
|
||||
max-width: 210mm;
|
||||
font-size: 8px;
|
||||
width: 100%;
|
||||
font-size: 14px;
|
||||
max-height: 297mm;
|
||||
background-color: white;
|
||||
}
|
||||
@ -26,7 +27,8 @@ html {
|
||||
.page {
|
||||
border: 0px solid;
|
||||
padding: 10px;
|
||||
margin : 10px;
|
||||
margin: 10px;
|
||||
width: 100%;
|
||||
max-width: 210mm;
|
||||
max-height: 297mm;
|
||||
background-color: white;
|
||||
@ -37,11 +39,11 @@ html {
|
||||
border: 2px solid;
|
||||
}
|
||||
.square {
|
||||
height : 75px;
|
||||
align-items: center;
|
||||
align-content: center;
|
||||
justify-content: center;
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
}
|
||||
.esquema {
|
||||
}
|
||||
@ -92,6 +94,7 @@ html {
|
||||
}
|
||||
.section-title {
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.cubierta {
|
||||
@ -106,37 +109,39 @@ html {
|
||||
.comments {
|
||||
color: #555;
|
||||
font-style: italic;
|
||||
font-size : 12px;
|
||||
font-size: 12px;
|
||||
margin-top: 0.2rem;
|
||||
}
|
||||
.comment-content {
|
||||
width: 100%;
|
||||
margin-left : 0.2rem;
|
||||
margin-left: 0.2rem;
|
||||
font-style: normal;
|
||||
color : black;
|
||||
color: black;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
margin-bottom: 2px;
|
||||
font-size: 10px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
th, td {
|
||||
border: 0.01px solid black;
|
||||
|
||||
th,
|
||||
td {
|
||||
border-width : 1px;
|
||||
border-color : black;
|
||||
}
|
||||
table td {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
table th {
|
||||
font-weight: bold;
|
||||
color: black;
|
||||
text-align: center;
|
||||
}
|
||||
table td {
|
||||
font-weight: bold;
|
||||
.al{
|
||||
text-align:left;
|
||||
}
|
||||
|
||||
.t-header {
|
||||
@ -149,7 +154,7 @@ table td {
|
||||
padding-left: 0.2rem;
|
||||
}
|
||||
.t-row {
|
||||
font-size: 8px;
|
||||
font-size: 14px;
|
||||
width: 100%;
|
||||
}
|
||||
.bicolor {
|
||||
@ -173,9 +178,7 @@ table td {
|
||||
background: black;
|
||||
color: white;
|
||||
}
|
||||
.footer {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.bg-encuadernacion {
|
||||
background-color: #bbd8a3;
|
||||
}
|
||||
@ -185,3 +188,9 @@ table td {
|
||||
.cell-50 {
|
||||
width: 50px;
|
||||
}
|
||||
.ot-code {
|
||||
font-size: 4em;
|
||||
}
|
||||
.code-title {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user