Merge branch 'main' into maquinista-change-user

This commit is contained in:
amazuecos
2025-04-27 12:25:09 +02:00
48 changed files with 1350 additions and 485 deletions

View File

@ -65,7 +65,7 @@ class OrdenTrabajo extends BaseConfig
["bg" => "yellow", "color" => "black"], ["bg" => "yellow", "color" => "black"],
["bg" => "purple", "color" => "white"], ["bg" => "purple", "color" => "white"],
["bg" => "orange", "color" => "white"], ["bg" => "orange", "color" => "white"],
["bg" => "blue", "color" => "black"], ["bg" => "blue", "color" => "white"],
["bg" => "pink", "color" => "black"], ["bg" => "pink", "color" => "black"],
["bg" => "#FFFFFF", "color" => "black"], ["bg" => "#FFFFFF", "color" => "black"],
]; ];

View File

@ -749,8 +749,8 @@ $routes->group('produccion', ['namespace' => 'App\Controllers\Produccion'], func
$routes->get('datatable_ferro_pendiente', 'Ordentrabajo::datatable_ferro_pendiente'); $routes->get('datatable_ferro_pendiente', 'Ordentrabajo::datatable_ferro_pendiente');
$routes->get('datatable_ferro_ok', 'Ordentrabajo::datatable_ferro_ok'); $routes->get('datatable_ferro_ok', 'Ordentrabajo::datatable_ferro_ok');
$routes->get('tareas/datatable/(:num)', 'Ordentrabajo::tareas_datatable/$1', ['as' => 'datatableTareasOrdenTrabajo']); $routes->get('tareas/datatable/(:num)', 'Ordentrabajo::tareas_datatable/$1', ['as' => 'datatableTareasOrdenTrabajo']);
$routes->get("tarea/progress/(:num)","Ordentrabajo::get_orden_trabajo_progress_date/$1"); $routes->get("tarea/progress/(:num)", "Ordentrabajo::get_orden_trabajo_progress_date/$1");
$routes->get('tarea/(:num)', 'Ordentrabajo::find_tarea/$1');
/**====================== /**======================
* UPDATES * UPDATES
*========================**/ *========================**/
@ -765,15 +765,16 @@ $routes->group('produccion', ['namespace' => 'App\Controllers\Produccion'], func
$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'); $routes->get("color/(:num)", 'Ordentrabajo::get_orden_trabajo_color_status/$1');
$routes->post("update/tarea/progress","Ordentrabajo::store_orden_trabajo_progress_date"); $routes->post("update/tarea/progress", "Ordentrabajo::store_orden_trabajo_progress_date");
$routes->delete("tarea/progress/(:num)","Ordentrabajo::delete_orden_trabajo_progress_date/$1"); $routes->post("update/tarea/pliegos", "Ordentrabajo::update_orden_trabajo_pliegos");
$routes->delete("tarea/progress/(:num)", "Ordentrabajo::delete_orden_trabajo_progress_date/$1");
/**====================== /**======================
* FILES * FILES
*========================**/ *========================**/
$routes->post('get_files', 'Ordentrabajo::get_files'); $routes->post('get_files', 'Ordentrabajo::get_files');
$routes->post('upload_files', 'Ordentrabajo::upload_files'); $routes->post('upload_files', 'Ordentrabajo::upload_files');
$routes->get('barcode/(:num)', 'Ordentrabajo::imprimir_codigo_safekat/$1',['as' => "getOrdenTrabajoBarCode"]); $routes->get('barcode/(:num)', 'Ordentrabajo::imprimir_codigo_safekat/$1', ['as' => "getOrdenTrabajoBarCode"]);
/**====================== /**======================
* PDF * PDF
*========================**/ *========================**/
@ -808,6 +809,7 @@ $routes->group('logistica', ['namespace' => 'App\Controllers\Logistica'], functi
$routes->get('print/label/test', 'LogisticaController::print_test_label'); $routes->get('print/label/test', 'LogisticaController::print_test_label');
$routes->get('panel', 'LogisticaController::panel', ['as' => 'LogisticaPanel']); $routes->get('panel', 'LogisticaController::panel', ['as' => 'LogisticaPanel']);
$routes->get('envios', 'LogisticaController::gestionEnvios', ['as' => 'gestionEnvios']); $routes->get('envios', 'LogisticaController::gestionEnvios', ['as' => 'gestionEnvios']);
$routes->get('enviosFerros', 'LogisticaController::gestionEnviosFerros', ['as' => 'gestionEnviosFerros']);
$routes->get('datatableEnvios', 'LogisticaController::datatable_envios'); $routes->get('datatableEnvios', 'LogisticaController::datatable_envios');
$routes->get('datatableLineasEnvios/(:num)', 'LogisticaController::datatable_enviosEdit/$1'); $routes->get('datatableLineasEnvios/(:num)', 'LogisticaController::datatable_enviosEdit/$1');
$routes->get('envio/(:num)', 'LogisticaController::editEnvio/$1'); $routes->get('envio/(:num)', 'LogisticaController::editEnvio/$1');
@ -822,8 +824,9 @@ $routes->group('logistica', ['namespace' => 'App\Controllers\Logistica'], functi
$routes->post('updateProveedorEnvio', 'LogisticaController::updateProveedorEnvio'); $routes->post('updateProveedorEnvio', 'LogisticaController::updateProveedorEnvio');
$routes->post('finalizarEnvio', 'LogisticaController::finalizarEnvio'); $routes->post('finalizarEnvio', 'LogisticaController::finalizarEnvio');
$routes->post('generateEnvio', 'LogisticaController::generarEnvio'); $routes->post('generateEnvio', 'LogisticaController::generarEnvio');
$routes->post('generateEnvioFerro', 'LogisticaController::generarEnvioFerro');
$routes->get('selectForNewEnvio', 'LogisticaController::findForNewEnvio'); $routes->get('selectForNewEnvio', 'LogisticaController::findForNewEnvio');
$routes->get('selectDireccionForEnvio', 'LogisticaController::selectDireccionForEnvio'); $routes->get('selectDireccionForEnvio', 'LogisticaController::selectDireccionForEnvio');
$routes->post('imprimirEtiquetas', 'LogisticaController::imprimirEtiquetas'); $routes->post('imprimirEtiquetas', 'LogisticaController::imprimirEtiquetas');
$routes->get('listAlbaranes', 'LogisticaController::listAlbaranes', ['as' => 'albaranesList']); $routes->get('listAlbaranes', 'LogisticaController::listAlbaranes', ['as' => 'albaranesList']);

View File

@ -62,6 +62,22 @@ class LogisticaController extends BaseController
'currentModule' => static::$controllerSlug, 'currentModule' => static::$controllerSlug,
'boxTitle' => lang('Logistica.gestionEnvios'), 'boxTitle' => lang('Logistica.gestionEnvios'),
'usingServerSideDataTable' => true, 'usingServerSideDataTable' => true,
'tipo_envio' => 'estandar',
];
$viewData = array_merge($this->viewData, $viewData); // merge any possible values from the parent controller class
return view(static::$viewPath . 'viewLogisticaSelectEnvios', $viewData);
}
public function gestionEnviosFerros()
{
$viewData = [
'currentModule' => static::$controllerSlug,
'boxTitle' => lang('Logistica.envioFerros'),
'usingServerSideDataTable' => true,
'tipo_envio' => 'ferro_prototipo',
]; ];
$viewData = array_merge($this->viewData, $viewData); // merge any possible values from the parent controller class $viewData = array_merge($this->viewData, $viewData); // merge any possible values from the parent controller class
@ -85,7 +101,14 @@ class LogisticaController extends BaseController
{ {
if ($this->request->isAJAX()) { if ($this->request->isAJAX()) {
$query = LogisticaService::findForNewEnvio();
$tipo_envio = $this->request->getGet('tipo_envio') ?? 'estandar';
if($tipo_envio == 'ferro_prototipo'){
$query = LogisticaService::findForNewEnvioFerro();
} else {
$query = LogisticaService::findForNewEnvio();
}
if ($this->request->getGet("q")) { if ($this->request->getGet("q")) {
$query->groupStart() $query->groupStart()
->orLike("id", $this->request->getGet("q")) ->orLike("id", $this->request->getGet("q"))
@ -105,12 +128,12 @@ class LogisticaController extends BaseController
public function selectDireccionForEnvio(){ public function selectDireccionForEnvio(){
if ($this->request->isAJAX()) { if ($this->request->isAJAX()) {
$pedido_id = $this->request->getGet('pedido_id'); $ot = $this->request->getGet('ot_id');
if($pedido_id == null || $pedido_id == 0){ if($ot == null || $ot == 0){
return []; return [];
} }
$searchVal = $this->request->getGet("q") ?? ""; $searchVal = $this->request->getGet("q") ?? "";
$result = LogisticaService::findDireccionesNewEnvio($pedido_id, $searchVal); $result = LogisticaService::findDireccionesNewEnvio($ot, $searchVal);
return $this->response->setJSON($result); return $this->response->setJSON($result);
} else { } else {
@ -124,9 +147,22 @@ class LogisticaController extends BaseController
{ {
if ($this->request->isAJAX()) { if ($this->request->isAJAX()) {
$pedido_id = $this->request->getPost('pedido_id'); $ot_id = $this->request->getPost('ot_id');
$direccion = $this->request->getPost('direccion'); $direccion = $this->request->getPost('direccion') ?? "";
$result = LogisticaService::generateEnvio($pedido_id, $direccion); $result = LogisticaService::generateEnvio($ot_id, $direccion);
return $this->response->setJSON($result);
} else {
return $this->failUnauthorized('Invalid request', 403);
}
}
public function generarEnvioFerro()
{
if ($this->request->isAJAX()) {
$ot_id = $this->request->getPost('ot_id');
$result = LogisticaService::generateEnvioFerro($ot_id);
return $this->response->setJSON($result); return $this->response->setJSON($result);
} else { } else {
return $this->failUnauthorized('Invalid request', 403); return $this->failUnauthorized('Invalid request', 403);
@ -233,9 +269,10 @@ class LogisticaController extends BaseController
{ {
$otsFilter = $this->request->getGetPost('otsFilter'); $otsFilter = $this->request->getGetPost('otsFilter');
$tipo_envio = $this->request->getGetPost('tipo_envio') ?? 'estandar';
$model = model('App\Models\Logistica\EnvioModel'); $model = model('App\Models\Logistica\EnvioModel');
$q = $model->getDatatableQuery(); $q = $model->getDatatableQuery($tipo_envio);
if (!empty($otsFilter)) { if (!empty($otsFilter)) {
$q->groupStart(); $q->groupStart();
@ -370,7 +407,7 @@ class LogisticaController extends BaseController
)->edit( )->edit(
"unidadesEnvio", "unidadesEnvio",
function ($row, $meta) { function ($row, $meta) {
if($row->finalizado == 1){ if($row->finalizado == 1 || $row->tipo_envio == 'ferro_prototipo'){
return $row->unidadesEnvio; return $row->unidadesEnvio;
} }
return '<input type="number" class="form-control input-lineas input-unidades text-center" return '<input type="number" class="form-control input-lineas input-unidades text-center"

View File

@ -54,6 +54,7 @@ class Presupuestodirecciones extends \App\Controllers\BaseResourceController
$proveedor = $reqData['proveedor'] ?? ""; $proveedor = $reqData['proveedor'] ?? "";
$proveedor_id = $reqData['proveedor_id'] ?? ""; $proveedor_id = $reqData['proveedor_id'] ?? "";
$entregaPieCalle = $reqData['entregaPieCalle'] ?? 0; $entregaPieCalle = $reqData['entregaPieCalle'] ?? 0;
$is_ferro_prototipo = $reqData['is_ferro_prototipo'] ?? 0;
$data = [ $data = [
"presupuesto_id" => $presupuesto_id, "presupuesto_id" => $presupuesto_id,
@ -73,6 +74,7 @@ class Presupuestodirecciones extends \App\Controllers\BaseResourceController
"proveedor" => $proveedor, "proveedor" => $proveedor,
"proveedor_id" => $proveedor_id, "proveedor_id" => $proveedor_id,
"entregaPieCalle" => $entregaPieCalle, "entregaPieCalle" => $entregaPieCalle,
"is_ferro_prototipo" => $is_ferro_prototipo
]; ];
$response = $this->model->insert($data); $response = $this->model->insert($data);

View File

@ -70,6 +70,11 @@ class Ordentrabajo extends BaseController
} }
public function find_tarea($orden_trabajo_tarea_id)
{
$t = $this->otTarea->find($orden_trabajo_tarea_id);
return $this->response->setJSON($t);
}
public function get_orden_trabajo_summary($orden_trabajo_id) public function get_orden_trabajo_summary($orden_trabajo_id)
{ {
try { try {
@ -100,7 +105,7 @@ class Ordentrabajo extends BaseController
public function update_orden_trabajo_tarea() public function update_orden_trabajo_tarea()
{ {
$bodyData = $this->request->getPost(); $bodyData = $this->request->getPost();
// return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "data" => $bodyData]); return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "data" => $bodyData]);
$validated = $this->validation->run($bodyData, "orden_trabajo_tarea"); $validated = $this->validation->run($bodyData, "orden_trabajo_tarea");
if ($validated) { if ($validated) {
$r = $this->produccionService->updateOrdenTrabajoTarea($bodyData["orden_trabajo_tarea_id"], $bodyData); $r = $this->produccionService->updateOrdenTrabajoTarea($bodyData["orden_trabajo_tarea_id"], $bodyData);
@ -109,6 +114,18 @@ 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_pliegos()
{
$bodyData = $this->request->getPost();
// return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "data" => $bodyData]);
$validated = $this->validation->run($bodyData, "orden_trabajo");
if ($validated) {
$r = $this->produccionService->init($bodyData["orden_trabajo_id"])->updateOrdenTrabajoTareaPliegos($bodyData);
return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "status" => $r, "data" => $bodyData]);
} else {
return $this->response->setJSON(["errors" => $this->validation->getErrors()])->setStatusCode(400);
}
}
public function update_orden_trabajo_date() public function update_orden_trabajo_date()
{ {
$bodyData = $this->request->getPost(); $bodyData = $this->request->getPost();
@ -128,7 +145,7 @@ class Ordentrabajo extends BaseController
$validated = $this->validation->run($bodyData, "orden_trabajo_date"); $validated = $this->validation->run($bodyData, "orden_trabajo_date");
if ($validated) { if ($validated) {
$validatedData = $bodyData; $validatedData = $bodyData;
$r = $this->produccionService->emptyOrdenTrabajoDate($validatedData['orden_trabajo_id'],$validatedData['name']); $r = $this->produccionService->emptyOrdenTrabajoDate($validatedData['orden_trabajo_id'], $validatedData['name']);
return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "status" => $r, "user" => auth()->user(), "data" => $bodyData]); return $this->response->setJSON(["message" => lang("App.global_alert_save_success"), "status" => $r, "user" => auth()->user(), "data" => $bodyData]);
} else { } else {
return $this->response->setJSON(["errors" => $this->validation->getErrors()])->setStatusCode(400); return $this->response->setJSON(["errors" => $this->validation->getErrors()])->setStatusCode(400);
@ -524,10 +541,10 @@ class Ordentrabajo extends BaseController
{ {
return view(static::$viewPath . '/maquinista/viewMaquinistaPlanningList', $this->viewData); return view(static::$viewPath . '/maquinista/viewMaquinistaPlanningList', $this->viewData);
} }
public function maquinista_maquina_tareas_datatable(string $content , int $maquina_id) public function maquinista_maquina_tareas_datatable(string $content, int $maquina_id)
{ {
$pm = $this->produccionService->getMaquinaImpresionTareasList($maquina_id); $pm = $this->produccionService->getMaquinaImpresionTareasList($maquina_id);
if($content == 'today'){ if ($content == 'today') {
$pm->like('pedidos.fecha_impresion', Time::now()->format('Y-m-d')); $pm->like('pedidos.fecha_impresion', Time::now()->format('Y-m-d'));
} }
return DataTable::of($pm) return DataTable::of($pm)

View File

@ -80,7 +80,7 @@ class CreateCatalogoLibros extends Migration
$this->forge->addUniqueKey('isk'); $this->forge->addUniqueKey('isk');
$this->forge->addForeignKey('cliente_id', 'clientes', 'id'); $this->forge->addForeignKey('cliente_id', 'clientes', 'id');
$this->forge->createTable('catalogo_libros'); $this->forge->createTable('catalogo_libros',true);
$this->db->query('SET foreign_key_checks = 1'); $this->db->query('SET foreign_key_checks = 1');
} }

View File

@ -7,30 +7,24 @@ use CodeIgniter\Database\Migration;
use CodeIgniter\Database\RawSql; use CodeIgniter\Database\RawSql;
use CodeIgniter\I18n\Time; use CodeIgniter\I18n\Time;
class AddClickColumnOrdenTrabajoTarea extends Migration class AddFerroProtoPresupuestoDirecciones extends Migration
{ {
protected array $COLUMNS = [ protected array $COLUMNS = [
"click_init" => [ "is_ferro_prototipo" => [
"type" => "INT", "type" => "TINYINT",
"unsigned" => true, "unsigned" => true,
"default" => 0, "default" => 0,
"comment" => "Click iniciales de una tarea de impresion" "comment" => "Indica si es una direccion para el prototipo o ferro",
],
"click_end" => [
"type" => "INT",
"unsigned" => true,
"default" => 0,
"comment" => "Click finales de una tarea de impresion"
], ],
]; ];
public function up() public function up()
{ {
$this->forge->addColumn('orden_trabajo_tareas', $this->COLUMNS); $this->forge->addColumn('presupuesto_direcciones', $this->COLUMNS);
} }
public function down() public function down()
{ {
$this->forge->dropColumn('orden_trabajo_tareas', array_keys($this->COLUMNS)); $this->forge->dropColumn('presupuesto_direcciones', array_keys($this->COLUMNS));
} }
} }

View File

@ -0,0 +1,30 @@
<?php
namespace App\Database\Migrations;
use App\Models\OrdenTrabajo\OrdenTrabajoTarea;
use CodeIgniter\Database\Migration;
use CodeIgniter\Database\RawSql;
use CodeIgniter\I18n\Time;
class AddTipoEnvioEnvios extends Migration
{
protected array $COLUMNS = [
"tipo_envio" => [
"type" => "enum",
"constraint" => ['estandar', 'ferro_prototipo'],
"default" => 'estandar',
"comment" => "Indica el tipo de envio",
],
];
public function up()
{
$this->forge->addColumn('envios', $this->COLUMNS);
}
public function down()
{
$this->forge->dropColumn('envios', array_keys($this->COLUMNS));
}
}

View File

@ -0,0 +1,41 @@
<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class AddPliegoColumnOrdenTrabajoTarea extends Migration
{
protected array $COLUMNS = [
"pliego_1" => [
"type" => "INT",
"unsigned" => true,
"default" => 0,
],
"pliego_1_total" => [
"type" => "INT",
"unsigned" => true,
"default" => 0,
],
"pliego_2" => [
"type" => "INT",
"unsigned" => true,
"default" => 0,
],
"pliego_2_total" => [
"type" => "INT",
"unsigned" => true,
"default" => 0,
],
];
public function up()
{
$this->forge->addColumn('orden_trabajo_tareas', $this->COLUMNS);
}
public function down()
{
$this->forge->dropColumn('orden_trabajo_tareas', array_keys($this->COLUMNS));
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class AlterFkOrdenTrabajoTareaProgressDates extends Migration
{
public function up()
{
$this->forge->dropForeignKey('orden_trabajo_tarea_progress_dates','orden_trabajo_tarea_progress_dates_ot_tarea_id_foreign');
$this->forge->addForeignKey("ot_tarea_id","orden_trabajo_tareas","id",'CASCADE','CASCADE');
$this->forge->processIndexes('orden_trabajo_tarea_progress_dates');
}
public function down()
{
$this->forge->dropForeignKey('orden_trabajo_tarea_progress_dates','orden_trabajo_tarea_progress_dates_ot_tarea_id_foreign');
$this->forge->addForeignKey("ot_tarea_id","orden_trabajo_tareas","id");
$this->forge->processIndexes('orden_trabajo_tarea_progress_dates');
}
}

View File

@ -31,5 +31,6 @@ class EnvioEntity extends Entity
'created_at' => 'datetime', 'created_at' => 'datetime',
'updated_at' => 'datetime', 'updated_at' => 'datetime',
'cajas' => 'int', 'cajas' => 'int',
'tipo_envio' => 'string',
]; ];
} }

View File

@ -25,6 +25,7 @@ class PresupuestoDireccionesEntity extends \CodeIgniter\Entity\Entity
"proveedor_id" => null, "proveedor_id" => null,
"margen" => null, "margen" => null,
"entregaPieCalle" => null, "entregaPieCalle" => null,
"is_ferro_prototipo" => null,
]; ];
protected $casts = [ protected $casts = [
"presupuesto_id" => "int", "presupuesto_id" => "int",
@ -38,6 +39,7 @@ class PresupuestoDireccionesEntity extends \CodeIgniter\Entity\Entity
"margen" => "float", "margen" => "float",
"proveedor_id" => "int", "proveedor_id" => "int",
"entregaPieCalle" => "int", "entregaPieCalle" => "int",
"is_ferro_prototipo" => "int",
]; ];
} }

View File

@ -194,39 +194,75 @@ class PresupuestoLineaEntity extends \CodeIgniter\Entity\Entity
return $m->find($this->attributes['tarifa_impresion_id']); return $m->find($this->attributes['tarifa_impresion_id']);
} }
public function get_impresion_logo(){ public function get_impresion_logo()
{
$logo = config(LogoImpresion::class); $logo = config(LogoImpresion::class);
return $logo->get_logo_path($this->attributes["tipo"]); return $logo->get_logo_path($this->attributes["tipo"]);
} }
public function get_nombre_tarea() : ?string public function get_nombre_tarea(): ?string
{ {
$nombre = null; $nombre = null;
$impresion_bn = ["lp_bn","lp_bnhq","lp_rot_bn"]; $impresion_bn = ["lp_bn", "lp_bnhq", "lp_rot_bn"];
$impresion_color = ["lp_color","lp_colorhq","lp_rot_color"]; $impresion_color = ["lp_color", "lp_colorhq", "lp_rot_color"];
$impresion_cubierta = ["lp_cubierta"]; $impresion_cubierta = ["lp_cubierta"];
$impresion_guardas = ["lp_guardas"]; $impresion_guardas = ["lp_guardas"];
$impresion_sobrecubierta = ["lp_sobrecubierta"]; $impresion_sobrecubierta = ["lp_sobrecubierta"];
$is_bn = in_array($this->attributes["tipo"],$impresion_bn); $is_bn = in_array($this->attributes["tipo"], $impresion_bn);
$is_color = in_array($this->attributes["tipo"],$impresion_color); $is_color = in_array($this->attributes["tipo"], $impresion_color);
$is_impresion_cubierta = in_array($this->attributes["tipo"],$impresion_cubierta); $is_impresion_cubierta = in_array($this->attributes["tipo"], $impresion_cubierta);
$is_impresion_guarda = in_array($this->attributes["tipo"],$impresion_guardas); $is_impresion_guarda = in_array($this->attributes["tipo"], $impresion_guardas);
$is_impresion_sobrecubierta = in_array($this->attributes["tipo"],$impresion_sobrecubierta); $is_impresion_sobrecubierta = in_array($this->attributes["tipo"], $impresion_sobrecubierta);
if($is_bn) $nombre ="Impresión B/N"; if ($is_bn) $nombre = "Impresión B/N";
if($is_color) $nombre ="Impresión color"; if ($is_color) $nombre = "Impresión color";
if($is_impresion_cubierta) $nombre ="Impresión cubierta"; if ($is_impresion_cubierta) $nombre = "Impresión cubierta";
if($is_impresion_guarda) $nombre ="Impresión guarda"; if ($is_impresion_guarda) $nombre = "Impresión guarda";
if($is_impresion_sobrecubierta) $nombre ="Impresión sobrecubierta"; if ($is_impresion_sobrecubierta) $nombre = "Impresión sobrecubierta";
return $nombre; return $nombre;
} }
public function isRotativa() : bool public function isGuarda(): bool
{ {
return in_array($this->attributes['tipo'],['lp_rot_color','lp_rot_bn']); return in_array($this->attributes["tipo"], ["lp_guardas"]);
} }
public function isColor():bool { public function isCubierta(): bool
return in_array($this->attributes['tipo'],['lp_color','lp_colorhq','lp_rot_color']); {
return in_array($this->attributes["tipo"], ["lp_cubierta"]);
}
public function isSobreCubierta(): bool
{
return in_array($this->attributes["tipo"], ["lp_sobrecubierta"]);
}
public function isRotativa(): bool
{
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']);
}
public function isBN(): bool
{
return in_array($this->attributes['tipo'], ["lp_bn", "lp_bnhq", "lp_rot_bn"]);
}
public function tinta(): string
{
$tinta = "";
if ($this->isCubierta()) {
$paginas = $this->attributes['paginas'];
if ($paginas / 2 == 1) {
$tinta = '4/0';
}
if ($paginas / 2 == 2) {
$tinta = '4/4';
}
} elseif ($this->isColor()) {
$tinta = '4/4';
} elseif ($this->isBN()) {
$tinta = '4/0';
}
return $tinta;
} }
} }

View File

@ -68,7 +68,7 @@ class OrdenTrabajoEntity extends Entity
/** /**
* Devuelve las tareas de la orden de trabajo. * Devuelve las tareas de la orden de trabajo.
* *
* @return array<OrdenTrabajoTarea> * @return array<OrdenTrabajoTareaEntity>
*/ */
public function tareas(): array public function tareas(): array
{ {

View File

@ -34,8 +34,11 @@ class OrdenTrabajoTareaEntity extends Entity
"comment" => null, "comment" => null,
"click_init" => null, "click_init" => null,
"click_end" => null, "click_end" => null,
"pliego_1" => null,
"pliego_1_total" => null,
"pliego_2" => null,
"pliego_2_total" => null,
]; ];
protected $datamap = [];
protected $dates = ['created_at', 'updated_at', 'deleted_at']; protected $dates = ['created_at', 'updated_at', 'deleted_at'];
protected $casts = [ protected $casts = [
"id" => "integer", "id" => "integer",
@ -52,6 +55,10 @@ class OrdenTrabajoTareaEntity extends Entity
"comment" => "?string", "comment" => "?string",
"click_init" => "integer", "click_init" => "integer",
"click_end" => "integer", "click_end" => "integer",
"pliego_1" => "integer",
"pliego_1_total" => "integer",
"pliego_2" => "integer",
"pliego_2_total" => "integer",
]; ];
/** /**
@ -113,6 +120,20 @@ 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"]);
} }
/**
* Devuelve el presupuesto acabado origen de esta tarea
*
* @return ?PresupuestoManipuladosEntity
*/
public function presupuesto_manipulado(): ?PresupuestoManipuladosEntity
{
$m = model(PresupuestoManipuladosModel::class);
$p = null;
if ($this->attributes['presupuesto_manipulado_id']) {
$p = $m->find($this->attributes["presupuesto_manipulado_id"]);
}
return $p;
}
public function imposicion(): ?Imposicion public function imposicion(): ?Imposicion
{ {
$m = model(ImposicionModel::class); $m = model(ImposicionModel::class);
@ -152,5 +173,13 @@ class OrdenTrabajoTareaEntity extends Entity
{ {
return $this->attributes['click_end'] - $this->attributes['click_init']; return $this->attributes['click_end'] - $this->attributes['click_init'];
} }
public function isCosido(): bool
{
$isTareaCosido = false;
$pm = $this->presupuesto_manipulado();
if ($pm) {
$isTareaCosido = $pm->tarifa()->isCosido();
}
return $isTareaCosido;
}
} }

View File

@ -33,4 +33,9 @@ class TarifaManipuladoEntity extends \CodeIgniter\Entity\Entity
"user_updated_id" => "int", "user_updated_id" => "int",
"is_deleted" => "int", "is_deleted" => "int",
]; ];
public function isCosido(): bool
{
return in_array($this->attributes['id'], [3, 17]);
}
} }

View File

@ -50,6 +50,7 @@ return [
"pendientes" => "Pendientes", "pendientes" => "Pendientes",
"ferro_ok" => "Ferro ok", "ferro_ok" => "Ferro ok",
"envio" => "Envío", "envio" => "Envío",
"ferro" => "Ferro",
"ot" => "Orden trabajo", "ot" => "Orden trabajo",
"ots" => "Órdenes trabajo", "ots" => "Órdenes trabajo",
"tiempo_procesamiento" => "Tiempo procesamiento", "tiempo_procesamiento" => "Tiempo procesamiento",
@ -121,8 +122,9 @@ return [
], ],
"progress_ferro" => "Ferro",
"progress_preimpresion" => "Preimpresión", "progress_preimpresion" => "Preimpresión",
"progress_logistica" => "Ferro/Logística", "progress_logistica" => "Logística",
"progress_impresion" => "Impresión", "progress_impresion" => "Impresión",
"progress_manipulado" => "Manipulado/Acabado", "progress_manipulado" => "Manipulado/Acabado",

View File

@ -37,7 +37,7 @@ class EnvioLineaModel extends Model
->select( ->select(
"t1.id, t1.pedido_id as pedido, t3.id as presupuesto, "t1.id, t1.pedido_id as pedido, t3.id as presupuesto,
t3.titulo as titulo, t1.unidades_envio as unidadesEnvio, t1.unidades_envio as unidadesEnvioRaw, t3.titulo as titulo, t1.unidades_envio as unidadesEnvio, t1.unidades_envio as unidadesEnvioRaw,
t1.unidades_total as unidadesTotal, t1.unidades_total as unidadesTotal, t2.tipo_envio as tipo_envio,
IFNULL(( IFNULL((
SELECT SUM(t_sub.unidades_envio) SELECT SUM(t_sub.unidades_envio)
FROM envios_lineas t_sub FROM envios_lineas t_sub

View File

@ -32,13 +32,14 @@ class EnvioModel extends Model
'created_at', 'created_at',
'updated_at', 'updated_at',
'cajas', 'cajas',
'tipo_envio',
]; ];
protected $useTimestamps = true; protected $useTimestamps = true;
protected $createdField = 'created_at'; protected $createdField = 'created_at';
protected $updatedField = 'updated_at'; protected $updatedField = 'updated_at';
public function getDatatableQuery(): BaseBuilder public function getDatatableQuery($tipo_envio = "estandar"): BaseBuilder
{ {
$builder = $this->db $builder = $this->db
->table($this->table . " t1") ->table($this->table . " t1")
@ -51,6 +52,24 @@ class EnvioModel extends Model
$builder->join("lg_paises t3", "t3.id = t1.pais_id", "left"); $builder->join("lg_paises t3", "t3.id = t1.pais_id", "left");
$builder->join("pedidos t4", "t4.id = t2.pedido_id", "left"); $builder->join("pedidos t4", "t4.id = t2.pedido_id", "left");
$builder->join('ordenes_trabajo t5', 't5.pedido_id = t4.id'); $builder->join('ordenes_trabajo t5', 't5.pedido_id = t4.id');
$builder->where("t1.tipo_envio", $tipo_envio);
$builder->groupBy("t1.id");
return $builder;
}
public function getDatatableQueryFerroPrototipo(): BaseBuilder
{
$builder = $this->db
->table($this->table . " t1")
->select(
"t1.id, GROUP_CONCAT(DISTINCT t5.id) AS ots,
t1.att, t1.direccion, t1.ciudad, t3.nombre as pais, t1.cp, t1.email, t1.telefono, t1.finalizado"
);
$builder->join("lg_paises t3", "t3.id = t1.pais_id", "left");
$builder->join("pedidos t4", "t4.id = t2.pedido_id", "left");
$builder->join('ordenes_trabajo t5', 't5.pedido_id = t4.id');
$builder->whereIn("t1.tipo_envio", ["estandar"]);
$builder->groupBy("t1.id"); $builder->groupBy("t1.id");
return $builder; return $builder;

View File

@ -32,7 +32,11 @@ class OrdenTrabajoTarea extends Model
"tipo_corte", "tipo_corte",
"comment", "comment",
"click_init", "click_init",
"click_end" "click_end",
"pliego_1",
"pliego_1_total",
"pliego_2",
"pliego_2_total"
]; ];
protected bool $allowEmptyInserts = false; protected bool $allowEmptyInserts = false;

View File

@ -45,6 +45,7 @@ class PresupuestoDireccionesModel extends \App\Models\BaseModel
"proveedor_id", "proveedor_id",
"proveedor", "proveedor",
"entregaPieCalle", "entregaPieCalle",
"is_ferro_prototipo"
]; ];
protected $returnType = "App\Entities\Presupuestos\PresupuestoDireccionesEntity"; protected $returnType = "App\Entities\Presupuestos\PresupuestoDireccionesEntity";
@ -69,7 +70,8 @@ class PresupuestoDireccionesModel extends \App\Models\BaseModel
t1.email AS email, t1.direccion AS direccion, t1.pais_id AS pais_id, t2.nombre AS pais, t1.email AS email, t1.direccion AS direccion, t1.pais_id AS pais_id, t2.nombre AS pais,
t1.municipio AS municipio, t1.provincia AS provincia, t1.cp AS cp, t1.telefono AS telefono, t1.municipio AS municipio, t1.provincia AS provincia, t1.cp AS cp, t1.telefono AS telefono,
t1.peso AS peso, t1.cantidad AS cantidad, t1.precio AS precio, t1.margen AS margen, t1.peso AS peso, t1.cantidad AS cantidad, t1.precio AS precio, t1.margen AS margen,
t1.proveedor_id AS proveedor_id, t1.proveedor AS proveedor, t1.entregaPieCalle AS entregaPieCalle" t1.proveedor_id AS proveedor_id, t1.proveedor AS proveedor, t1.entregaPieCalle AS entregaPieCalle,
t1.is_ferro_prototipo AS is_ferro_prototipo"
); );
$builder->where('t1.presupuesto_id', $presupuesto_id); $builder->where('t1.presupuesto_id', $presupuesto_id);

View File

@ -94,6 +94,7 @@ class LogisticaService
WHERE el.pedido_id = p.id WHERE el.pedido_id = p.id
AND el.presupuesto_id = pr.id AND el.presupuesto_id = pr.id
AND e.finalizado = 1 AND e.finalizado = 1
AND e.tipo_envio = 'estandar'
) AS unidades_enviadas, ) AS unidades_enviadas,
pd.cantidad AS cantidad pd.cantidad AS cantidad
") ")
@ -115,7 +116,47 @@ class LogisticaService
return $builder; return $builder;
} }
public static function findDireccionesNewEnvio($pedido_id, $searchVal = "") public static function findForNewEnvioFerro()
{
$db = \Config\Database::connect();
// 3. Subconsulta principal
$subBuilder = $db->table('pedidos_linea pl')
->select("
ot.id AS id,
CONCAT('[', ot.id, '] - ', pr.titulo) AS name,
p.id as pedido_id,
pr.id as presupuesto_id
")
->join('pedidos p', 'p.id = pl.pedido_id')
->join('presupuestos pr', 'pr.id = pl.presupuesto_id')
->join('presupuesto_direcciones pd', 'pd.presupuesto_id = pr.id')
->join('ordenes_trabajo ot', 'ot.pedido_id = p.id')
->join('orden_trabajo_dates ot_dates', 'ot_dates.orden_trabajo_id = ot.id')
->whereIn('p.estado', ['finalizado', 'produccion'])
->where('ot_dates.pendiente_ferro_at IS NOT NULL')
->where('pd.is_ferro_prototipo', 1)
->groupBy('pl.id');
// 4. Envolver y filtrar por unidades pendientes
$builder = $db->table("({$subBuilder->getCompiledSelect(false)}) AS sub");
$builder->select('id, name');
$builder->orderBy('name', 'ASC');
$builder->where("
NOT EXISTS (
SELECT 1
FROM envios e
INNER JOIN envios_lineas le ON le.envio_id = e.id
WHERE e.tipo_envio = 'ferro_prototipo'
AND (le.pedido_id = sub.pedido_id OR le.presupuesto_id = sub.presupuesto_id)
)
", null, false);
return $builder;
}
public static function findDireccionesNewEnvio($ot_id, $searchVal = "")
{ {
$direcciones = []; $direcciones = [];
@ -126,7 +167,9 @@ class LogisticaService
->join('presupuestos pr', 'pr.id=presupuesto_direcciones.presupuesto_id') ->join('presupuestos pr', 'pr.id=presupuesto_direcciones.presupuesto_id')
->join('pedidos_linea pl', 'pl.presupuesto_id = pr.id') ->join('pedidos_linea pl', 'pl.presupuesto_id = pr.id')
->join('pedidos p', 'pl.pedido_id=p.id') ->join('pedidos p', 'pl.pedido_id=p.id')
->where('p.id', $pedido_id); ->join('ordenes_trabajo ot', 'ot.pedido_id = p.id')
->where('ot.id', $ot_id)
->where("presupuesto_direcciones.is_ferro_prototipo", 0);
if ($searchVal != "") { if ($searchVal != "") {
$dirs = $dirs->groupStart() $dirs = $dirs->groupStart()
->Like("id", $searchVal) ->Like("id", $searchVal)
@ -138,10 +181,13 @@ class LogisticaService
$unidades_en_direccion = $modelEnvioLineasModel->select('SUM(envios_lineas.unidades_envio) as unidades_enviadas, $unidades_en_direccion = $modelEnvioLineasModel->select('SUM(envios_lineas.unidades_envio) as unidades_enviadas,
envios_lineas.unidades_total') envios_lineas.unidades_total')
->join('envios', 'envios.id = envios_lineas.envio_id') ->join('envios', 'envios.id = envios_lineas.envio_id')
->where('pedido_id', $pedido_id) ->join('pedidos_linea', 'pedidos_linea.pedido_id = envios_lineas.pedido_id')
->join('pedidos', 'pedidos.id = pedidos_linea.pedido_id')
->join('ordenes_trabajo', 'ordenes_trabajo.pedido_id = pedidos.id')
->where('ordenes_trabajo.id', $ot_id)
->where('envios.direccion', $direccion->direccion) ->where('envios.direccion', $direccion->direccion)
->where('envios.finalizado', 1) ->where('envios.finalizado', 1)
->groupBy('pedido_id')->get()->getResult(); ->groupBy('ordenes_trabajo.pedido_id')->get()->getResult();
if (count($unidades_en_direccion) == 0 || $unidades_en_direccion[0]->unidades_enviadas < $unidades_en_direccion[0]->unidades_total) { if (count($unidades_en_direccion) == 0 || $unidades_en_direccion[0]->unidades_enviadas < $unidades_en_direccion[0]->unidades_total) {
array_push( array_push(
$direcciones, $direcciones,
@ -196,6 +242,7 @@ class LogisticaService
->join('pedidos p', 'p.id = pl.pedido_id') ->join('pedidos p', 'p.id = pl.pedido_id')
->join('presupuestos pr', 'pr.id = pl.presupuesto_id') ->join('presupuestos pr', 'pr.id = pl.presupuesto_id')
->join('presupuesto_direcciones pd', 'pd.presupuesto_id = pr.id') ->join('presupuesto_direcciones pd', 'pd.presupuesto_id = pr.id')
->where('pd.is_ferro_prototipo', 0)
->where('p.id', $pedido_id) ->where('p.id', $pedido_id)
->whereIn('p.estado', ['finalizado', 'produccion']) ->whereIn('p.estado', ['finalizado', 'produccion'])
->where("TRIM(LOWER(pd.direccion)) = '$direccionNormalizada'", null, false) ->where("TRIM(LOWER(pd.direccion)) = '$direccionNormalizada'", null, false)
@ -242,7 +289,7 @@ class LogisticaService
public static function generateEnvio($pedido_id, $direccion = null) public static function generateEnvio($ot_id, $direccion = null)
{ {
$presupuestoDireccionesModel = model('App\Models\Presupuestos\PresupuestoDireccionesModel'); $presupuestoDireccionesModel = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
$direccionNormalizada = strtolower(trim($direccion)); $direccionNormalizada = strtolower(trim($direccion));
@ -259,6 +306,7 @@ class LogisticaService
presupuesto_direcciones.pais_id, presupuesto_direcciones.pais_id,
presupuesto_direcciones.cantidad as cantidad_total, presupuesto_direcciones.cantidad as cantidad_total,
presupuestos.cliente_id as cliente_id, presupuestos.cliente_id as cliente_id,
ordenes_trabajo.pedido_id as pedido_id,
( (
presupuesto_direcciones.cantidad - IFNULL(( presupuesto_direcciones.cantidad - IFNULL((
@ -275,7 +323,9 @@ class LogisticaService
->join('pedidos_linea', 'pedidos_linea.presupuesto_id = presupuesto_direcciones.presupuesto_id') ->join('pedidos_linea', 'pedidos_linea.presupuesto_id = presupuesto_direcciones.presupuesto_id')
->join('pedidos', 'pedidos.id = pedidos_linea.pedido_id') ->join('pedidos', 'pedidos.id = pedidos_linea.pedido_id')
->join('presupuestos', 'pedidos_linea.presupuesto_id = presupuestos.id') ->join('presupuestos', 'pedidos_linea.presupuesto_id = presupuestos.id')
->where('pedidos.id', $pedido_id) ->join('ordenes_trabajo', 'ordenes_trabajo.pedido_id = pedidos.id')
->where('ordenes_trabajo.id', $ot_id)
->where('presupuesto_direcciones.is_ferro_prototipo', 0)
->like('presupuesto_direcciones.direccion', $direccion) ->like('presupuesto_direcciones.direccion', $direccion)
->groupBy('presupuesto_direcciones.id') ->groupBy('presupuesto_direcciones.id')
->first(); ->first();
@ -311,7 +361,7 @@ class LogisticaService
$EnvioLineasModel = model('App\Models\Logistica\EnvioLineaModel'); $EnvioLineasModel = model('App\Models\Logistica\EnvioLineaModel');
$EnvioLineasModel->save([ $EnvioLineasModel->save([
'envio_id' => $idEnvio, 'envio_id' => $idEnvio,
'pedido_id' => $pedido_id, 'pedido_id' => $datosEnvio->pedido_id,
'unidades_envio' => $datosEnvio->cantidad, 'unidades_envio' => $datosEnvio->cantidad,
'unidades_total' => $datosEnvio->cantidad_total, 'unidades_total' => $datosEnvio->cantidad_total,
'cajas' => 1, 'cajas' => 1,
@ -332,6 +382,96 @@ class LogisticaService
} }
public static function generateEnvioFerro($ot_id)
{
$presupuestoDireccionesModel = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
$datosEnvio = $presupuestoDireccionesModel
->select("
presupuestos.id as presupuesto_id,
presupuesto_direcciones.att,
presupuesto_direcciones.direccion,
presupuesto_direcciones.provincia as ciudad,
presupuesto_direcciones.cp,
presupuesto_direcciones.telefono,
presupuesto_direcciones.email,
presupuesto_direcciones.pais_id,
presupuesto_direcciones.cantidad as cantidad_total,
presupuestos.cliente_id as cliente_id,
ordenes_trabajo.pedido_id as pedido_id,
")
->join('pedidos_linea', 'pedidos_linea.presupuesto_id = presupuesto_direcciones.presupuesto_id')
->join('pedidos', 'pedidos.id = pedidos_linea.pedido_id')
->join('presupuestos', 'pedidos_linea.presupuesto_id = presupuestos.id')
->join('ordenes_trabajo', 'ordenes_trabajo.pedido_id = pedidos.id')
->where('ordenes_trabajo.id', $ot_id)
->where('presupuesto_direcciones.is_ferro_prototipo', 1)
->where("
NOT EXISTS (
SELECT 1
FROM envios e
INNER JOIN envios_lineas el ON el.envio_id = e.id
WHERE e.tipo_envio = 'ferro_prototipo'
AND (el.pedido_id = pedidos.id OR el.presupuesto_id = presupuestos.id)
)
", null, false) // <= Esta es la parte nueva, importante
->groupBy('presupuesto_direcciones.id')
->first();
// Validación si no hay datos o no quedan unidades
if (empty($datosEnvio)) {
return [
'status' => false,
'message' => lang('Logistica.errors.noAddresses')
];
}
// Crear envío
$EnvioModel = model('App\Models\Logistica\EnvioModel');
$EnvioModel->set([
'cliente_id' => $datosEnvio->cliente_id,
'att' => $datosEnvio->att,
'direccion' => $datosEnvio->direccion,
'ciudad' => $datosEnvio->ciudad,
'cp' => $datosEnvio->cp,
'telefono' => $datosEnvio->telefono,
'email' => $datosEnvio->email,
'pais_id' => $datosEnvio->pais_id,
'cantidad' => 1,
'cajas' => 1,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
'tipo_envio' => 'ferro_prototipo',
]);
$EnvioModel->insert();
$idEnvio = $EnvioModel->insertID();
// Crear línea de envío
$EnvioLineasModel = model('App\Models\Logistica\EnvioLineaModel');
$EnvioLineasModel->save([
'envio_id' => $idEnvio,
'pedido_id' => $datosEnvio->pedido_id,
'unidades_envio' => 1,
'unidades_total' => 1,
'cajas' => 1,
'unidades_cajas' => 1,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
'created_by' => auth()->user()->id,
'updated_by' => auth()->user()->id,
'presupuesto_id' => (int) $datosEnvio->presupuesto_id
]);
return [
'status' => true,
'data' => [
'id_envio' => $idEnvio,
],
];
}
public static function finalizarEnvio($envio_id, $finalizar_ot = false) public static function finalizarEnvio($envio_id, $finalizar_ot = false)
{ {
// hay que comprobar que para todas las lineas de envio de este envio // hay que comprobar que para todas las lineas de envio de este envio
@ -383,24 +523,36 @@ class LogisticaService
$cantidad_enviada = $cantidad_enviada[0]->unidades_enviadas; $cantidad_enviada = $cantidad_enviada[0]->unidades_enviadas;
} }
if ($cantidad_enviada + $linea->unidades_envio == $pedido->total_tirada) { if ($envio->tipo_envio == 'ferro_prototipo') {
$otModel = model('App\Models\OrdenTrabajo\OrdenTrabajoModel'); $otModel = model('App\Models\OrdenTrabajo\OrdenTrabajoModel');
$ot = $otModel->where('pedido_id', $linea->pedido_id) $ot = $otModel->where('pedido_id', $linea->pedido_id)
->first(); ->first();
$ps = (new ProductionService())->init($ot->id); $ps = (new ProductionService())->init($ot->id);
$ps->updateOrdenTrabajoDate([ $ps->updateOrdenTrabajoDate([
"name" => "envio_at", "name" => "ferro_en_cliente_at",
"envio_at" => date('Y-m-d H:i:s') "ferro_en_cliente_at" => date('Y-m-d H:i:s')
]); ]);
if ($finalizar_ot) { } else {
$ps->updateOrdenTrabajo( if ($cantidad_enviada + $linea->unidades_envio == $pedido->total_tirada) {
[ $otModel = model('App\Models\OrdenTrabajo\OrdenTrabajoModel');
"estado" => 'F' $ot = $otModel->where('pedido_id', $linea->pedido_id)
] ->first();
); $ps = (new ProductionService())->init($ot->id);
array_push($ots, $ot->id); $ps->updateOrdenTrabajoDate([
"name" => "envio_at",
"envio_at" => date('Y-m-d H:i:s')
]);
if ($finalizar_ot) {
$ps->updateOrdenTrabajo(
[
"estado" => 'F'
]
);
array_push($ots, $ot->id);
}
} }
} }
} }
$EnvioModel->update($envio_id, ['finalizado' => 1]); $EnvioModel->update($envio_id, ['finalizado' => 1]);
@ -424,19 +576,19 @@ class LogisticaService
$data = [ $data = [
"printer" => $printer->name, "printer" => $printer->name,
"header" => [ "header" => [
"_FORMAT" => "E:PEDIDO.ZPL", "_FORMAT" => "E:PEDIDO.ZPL",
"_QUANTITY" => 1, "_QUANTITY" => 1,
"_PRINBTERNAME" => $printer->name, "_PRINBTERNAME" => $printer->name,
"_JOBNAME" => "LBL101" "_JOBNAME" => "LBL101"
], ],
]; ];
foreach ($lineas as $linea) { foreach ($lineas as $linea) {
$data["labels"][] = [ $data["labels"][] = [
"cliente" => $envio->cliente, "cliente" => $envio->cliente,
"titulo" => "[" . $linea->pedido_id . "] - " . $linea->titulo, "titulo" => "[" . $linea->pedido_id . "] - " . $linea->titulo,
"cantidad" => $linea->unidades_envio, "cantidad" => $linea->unidades_envio,
"tirada" => $linea->unidades_total, "tirada" => $linea->unidades_total,
"cajas" => $cajas, "cajas" => $cajas,
"ean" => null, "ean" => null,
"nombre" => $envio->att, "nombre" => $envio->att,
@ -449,15 +601,15 @@ class LogisticaService
$servicioImpresora = new ImpresoraEtiquetaService(); $servicioImpresora = new ImpresoraEtiquetaService();
$xml = $servicioImpresora->createEtiqueta($data); $xml = $servicioImpresora->createEtiqueta($data);
if($xml == null){ if ($xml == null) {
return [ return [
'status' => false, 'status' => false,
'message' => lang('Logistica.errors.noEtiquetas'), 'message' => lang('Logistica.errors.noEtiquetas'),
]; ];
} }
$sk_environment = getenv('SK_ENVIRONMENT'); $sk_environment = getenv('SK_ENVIRONMENT');
if($sk_environment == 'production'){ if ($sk_environment == 'production') {
$status = $servicioImpresora->sendToImpresoraEtiqueta("ETIQUETA", $xml, $printer); $status = $servicioImpresora->sendToImpresoraEtiqueta("ETIQUETA", $xml, $printer);
if ($status) { if ($status) {
return [ return [
@ -472,7 +624,7 @@ class LogisticaService
]; ];
} }
}else{ } else {
return [ return [
'status' => true, 'status' => true,
'message' => lang('Logistica.success.imprimirEtiquetas'), 'message' => lang('Logistica.success.imprimirEtiquetas'),

View File

@ -98,6 +98,13 @@ class ProductionService extends BaseService
* @var boolean * @var boolean
*/ */
public bool $isGofrado = false; //* CHECK DONE public bool $isGofrado = false; //* CHECK DONE
/**
* Indica si la orden de trabajo contiene cosido
* Se usa para mostrar la fecha correspondiente en la vista y pliegos
* @var boolean
*/
public bool $isCosido = false; //* CHECK DONE
/** /**
* Indica si la orden de trabajo contiene gofrado * Indica si la orden de trabajo contiene gofrado
* Se usa para mostrar la fecha correspondiente en la vista * Se usa para mostrar la fecha correspondiente en la vista
@ -222,7 +229,6 @@ class ProductionService extends BaseService
{ {
return $this->ot; return $this->ot;
} }
/** /**
* Crea una instancia de la orden de trabajo * Crea una instancia de la orden de trabajo
* *
@ -814,6 +820,7 @@ class ProductionService extends BaseService
"tareas_impresion" => $this->tareas_impresion(), "tareas_impresion" => $this->tareas_impresion(),
"tiempo_procesamiento" => $this->getTiempoProcesamientoHHMM(), "tiempo_procesamiento" => $this->getTiempoProcesamientoHHMM(),
"statusColor" => $this->getOtColorStatus(), "statusColor" => $this->getOtColorStatus(),
"tareaCosido" => $this->getTareaCosido(),
]; ];
return $summary; return $summary;
} }
@ -842,8 +849,8 @@ class ProductionService extends BaseService
"tiempo_impresion" => $this->getTiempoTareasImpresionHHMM(), "tiempo_impresion" => $this->getTiempoTareasImpresionHHMM(),
"colors" => $this->getPdfColors(), "colors" => $this->getPdfColors(),
"isPOD" => $this->isPOD, "isPOD" => $this->isPOD,
"uvi" => $this->getUVI() "uvi" => $this->getUVI(),
"tareaCosido" => $this->getTareaCosido(),
]; ];
} }
public function getImposicionTareaImpresion(): ?Imposicion public function getImposicionTareaImpresion(): ?Imposicion
@ -894,27 +901,27 @@ class ProductionService extends BaseService
public function getPresupuestoLineaImpresion() {} public function getPresupuestoLineaImpresion() {}
public function tareas_acabado(): array public function tareas_acabado(): array
{ {
$q = $this->otTarea->where("presupuesto_acabado_id IS NOT NULL", NULL, FALSE)->findAll(); $q = $this->otTarea->where('orden_trabajo_id', $this->ot->id)->where("presupuesto_acabado_id IS NOT NULL", NULL, FALSE)->findAll();
return $q; return $q;
} }
public function tareas_impresion(): array public function tareas_impresion(): array
{ {
$q = $this->otTarea->where("presupuesto_linea_id IS NOT NULL", NULL, FALSE)->findAll(); $q = $this->otTarea->where('orden_trabajo_id', $this->ot->id)->where("presupuesto_linea_id IS NOT NULL", NULL, FALSE)->findAll();
return $q; return $q;
} }
public function tareas_encuadernacion(): array public function tareas_encuadernacion(): array
{ {
$q = $this->otTarea->where("presupuesto_encuadernado_id IS NOT NULL", NULL, FALSE)->findAll(); $q = $this->otTarea->where('orden_trabajo_id', $this->ot->id)->where("presupuesto_encuadernado_id IS NOT NULL", NULL, FALSE)->findAll();
return $q; return $q;
} }
public function tareas_preimpresion(): array public function tareas_preimpresion(): array
{ {
$q = $this->otTarea->where("presupuesto_preimpresion_id IS NOT NULL", NULL, FALSE)->findAll(); $q = $this->otTarea->where('orden_trabajo_id', $this->ot->id)->where("presupuesto_preimpresion_id IS NOT NULL", NULL, FALSE)->findAll();
return $q; return $q;
} }
public function tareas_manipulado(): array public function tareas_manipulado(): array
{ {
$q = $this->otTarea->where("presupuesto_manipulado_id IS NOT NULL", NULL, FALSE)->findAll(); $q = $this->otTarea->where('orden_trabajo_id', $this->ot->id)->where("presupuesto_manipulado_id IS NOT NULL", NULL, FALSE)->findAll();
return $q; return $q;
} }
/**======================================================================== /**========================================================================
@ -929,6 +936,18 @@ class ProductionService extends BaseService
} }
return $this->otTarea->update($tarea_id, $data); return $this->otTarea->update($tarea_id, $data);
} }
public function updateOrdenTrabajoTareaPliegos($data_pliegos): bool
{
$flag = false;
$tareas = $this->ot->tareas();
foreach ($tareas as $key => $tarea) {
if ($tarea->isCosido()) {
$flag = $this->otTarea->update($tarea->id, $data_pliegos);
break;
}
}
return $flag;
}
public function storeOrdenTrabajoTareaProgressDate($data): bool public function storeOrdenTrabajoTareaProgressDate($data): bool
{ {
$data["action_at"] = Time::now()->format('Y-m-d H:i:s'); $data["action_at"] = Time::now()->format('Y-m-d H:i:s');
@ -1618,7 +1637,8 @@ class ProductionService extends BaseService
"isColor" => $this->isColor, "isColor" => $this->isColor,
"isBN" => $this->isBN, "isBN" => $this->isBN,
"isCorte" => $this->corte(), "isCorte" => $this->corte(),
"isGrapado" => $this->isGrapado "isGrapado" => $this->isGrapado,
"isCosido" => $this->cosido(),
]; ];
} }
public function gofrado(): bool public function gofrado(): bool
@ -1638,6 +1658,20 @@ class ProductionService extends BaseService
$this->isGofrado = $flag; $this->isGofrado = $flag;
return $this->isGofrado; return $this->isGofrado;
} }
public function cosido(): bool
{
$flag = false;
$manipulados = $this->presupuesto->manipulados();
foreach ($manipulados as $key => $manipulado) {
$tarifa_manipulado = $manipulado->tarifa();
if ($tarifa_manipulado->isCosido()) {
$flag = true;
break;
}
}
$this->isCosido = $flag;
return $this->isCosido;
}
public function uvi(): bool public function uvi(): bool
{ {
$flag = false; $flag = false;
@ -1737,4 +1771,16 @@ class ProductionService extends BaseService
$url = route_to("viewProduccionMaquinistaTareaView", $id); $url = route_to("viewProduccionMaquinistaTareaView", $id);
return "<a type='button' href='$url' class='maquina-btn btn btn-primary btn-md'><span class='ti ti-arrow-big-right'></span></a>"; return "<a type='button' href='$url' class='maquina-btn btn btn-primary btn-md'><span class='ti ti-arrow-big-right'></span></a>";
} }
public function getTareaCosido(): ?OrdenTrabajoTareaEntity
{
$tareaCosido = null;
$tareas = $this->ot->tareas();
foreach ($tareas as $key => $tarea) {
if ($tarea->isCosido()) {
$tareaCosido = $tarea;
break;
}
}
return $tareaCosido;
}
} }

View File

@ -10,6 +10,7 @@
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
<h4><?= $boxTitle ?> <h4><?= $boxTitle ?>
<?= ($envioEntity->tipo_envio == 'ferro_prototipo') ? '<span class="badge text-bg-warning fw-lg">FERRO</span>':'' ?>
<?= ($envioEntity->finalizado == 0) ? '' : '<span class="badge text-bg-success fw-lg">FINALIZADO</span>' ?> <?= ($envioEntity->finalizado == 0) ? '' : '<span class="badge text-bg-success fw-lg">FINALIZADO</span>' ?>
</h4> </h4>
</div> </div>
@ -18,7 +19,6 @@
<?= view("themes/_commonPartialsBs/_alertBoxes") ?> <?= view("themes/_commonPartialsBs/_alertBoxes") ?>
<input type="hidden" id="id" name="id" value="<?= $envioEntity->id ?>"> <input type="hidden" id="id" name="id" value="<?= $envioEntity->id ?>">
<input type="hidden" id="nextCaja" name="next_caja" value="<?= $envioEntity->nextCaja ?>">
<div class="accordion accordion-bordered"> <div class="accordion accordion-bordered">
<div class="card accordion-item active mb-5"> <div class="card accordion-item active mb-5">
@ -114,7 +114,7 @@
</div> </div>
</div> </div>
<?php if ($envioEntity->finalizado == 0): ?> <?php if ($envioEntity->finalizado == 0 && $envioEntity->tipo_envio=='estandar'): ?>
<div class="accordion accordion-bordered"> <div class="accordion accordion-bordered">
<div class="card accordion-item active mb-5"> <div class="card accordion-item active mb-5">
<h4 class="accordion-header px-4 py-3"> <h4 class="accordion-header px-4 py-3">
@ -172,7 +172,7 @@
<i class="ti ti-select"></i> <i class="ti ti-select"></i>
</button> </button>
</div> </div>
<?php if ($envioEntity->finalizado == 0): ?> <?php if ($envioEntity->finalizado == 0 && $envioEntity->tipo_envio=='estandar'): ?>
<div class="col-sm-2 px-3"> <div class="col-sm-2 px-3">
<button id="btnEliminarLineas" name="btnEliminarLineas" tabindex="1" <button id="btnEliminarLineas" name="btnEliminarLineas" tabindex="1"
class="btn btn-danger w-100"> class="btn btn-danger w-100">
@ -336,6 +336,7 @@
<ti class="ti ti-check"></ti> <ti class="ti ti-check"></ti>
</button> </button>
</div> </div>
<?php if ($envioEntity->tipo_envio=='estandar'): ?>
<div class="col-sm-3 px-3"> <div class="col-sm-3 px-3">
<button id="finalizarEnvioYOTs" name="finalizar_envio_ots" tabindex="1" <button id="finalizarEnvioYOTs" name="finalizar_envio_ots" tabindex="1"
class="btn btn-primary mt-4 w-100 btn-finalizar"> class="btn btn-primary mt-4 w-100 btn-finalizar">
@ -343,6 +344,7 @@
<ti class="ti ti-checks"></ti> <ti class="ti ti-checks"></ti>
</button> </button>
</div> </div>
<?php endif; ?>
<?php endif; ?> <?php endif; ?>
</div> </div>
</div> </div>

View File

@ -1,97 +0,0 @@
<?= $this->include("themes/_commonPartialsBs/sweetalert") ?>
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h4><?= $boxTitle ?></h4>
</div>
<div class="card-body">
<?= view("themes/_commonPartialsBs/_alertBoxes") ?>
<div class="card accordion-item active mb-5">
<h4 class="accordion-header px-4 py-3">
<?= lang("Logistica.nuevoEnvio") ?>
</h4>
<div id="accordionNuevoEnvioTip" class="accordion-collapse collapse show">
<div class="accordion-body px-4 py-3">
<div class="row">
<div class="mb-1 col-sm-4">
<label for="buscadorPedidos" class="form-label">
<?= lang("Logistica.buscadorPedidosTitle") ?>
</label>
<input id="buscadorPedidos" name="buscador_pedidos" tabindex="1" maxlength="50"
class="form-control" value="">
</div>
</div>
</div>
</div>
</div>
<div class="card accordion-item active">
<h4 class="accordion-header px-4 py-3">
<?= lang("Logistica.listadoEnvios") ?>
</h4>
<div id="accordionListadoEnviosTip" class="accordion-collapse collapse show">
<div class="accordion-body px-4 py-3">
<div class="row">
<table id="tableOfEnvios" class="table table-striped table-hover w-100">
<thead>
<tr>
<th><?= lang('Logistica.idEnvio') ?? 'ID Envío' ?></th>
<th><?= lang('Logistica.numeroOts') ?? 'Nº OTs' ?></th>
<th><?= lang('Logistica.numeroLineas') ?? 'Nº Líneas' ?></th>
<th><?= lang('Logistica.att') ?? 'Att' ?></th>
<th><?= lang('Logistica.direccion') ?? 'Dirección' ?></th>
<th><?= lang('Logistica.ciudad') ?? 'Ciudad' ?></th>
<th><?= lang('Logistica.pais') ?? 'País' ?></th>
<th><?= lang('Logistica.cp') ?? 'CP' ?></th>
<th><?= lang('Logistica.email') ?? 'Email' ?></th>
<th><?= lang('Logistica.telefono') ?? 'Teléfono' ?></th>
<th><?= lang('Logistica.finalizado') ?? 'Finalizado' ?></th>
<th><?= lang('Logistica.acciones') ?? 'Acciones' ?></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="mt-3">
<button type="button" class="btn btn-secondary" id="btnImprimirEtiquetas"
onclick="window.location.href='<?= route_to('LogisticaPanel') ?>'">
<?= lang('Logistica.backToPanel') ?>
</button>
</div>
</div>
</div>
</div>
</div>
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.css') ?>" />
<?= $this->endSection() ?>
<?= $this->section('additionalExternalJs') ?>
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<script type="module" src="<?= site_url("assets/js/safekat/pages/logistica/envio.js") ?>"></script>
<?= $this->endSection() ?>

View File

@ -12,6 +12,8 @@
</div> </div>
<div class="card-body"> <div class="card-body">
<input type="hidden" id="tipo_envio" value="<?= $tipo_envio ?>" />
<?= view("themes/_commonPartialsBs/_alertBoxes") ?> <?= view("themes/_commonPartialsBs/_alertBoxes") ?>
<div class="card accordion-item active mb-5"> <div class="card accordion-item active mb-5">

View File

@ -17,7 +17,7 @@
<img src="<?= site_url("assets/img/logistica/envios.jpg") ?>" alt="Envíos"> <img src="<?= site_url("assets/img/logistica/envios.jpg") ?>" alt="Envíos">
<div><span><?= lang("Logistica.gestionEnvios"); ?></span></div> <div><span><?= lang("Logistica.gestionEnvios"); ?></span></div>
</div> </div>
<div class="item"> <div class="item" onclick="location.href='<?= route_to('gestionEnviosFerros') ?>'">
<img src="<?= site_url("assets/img/logistica/envios_ferros.png") ?>" alt="Envío de Ferros/Prototipos"> <img src="<?= site_url("assets/img/logistica/envios_ferros.png") ?>" alt="Envío de Ferros/Prototipos">
<div><span><?= lang("Logistica.envioFerros"); ?></span></div> <div><span><?= lang("Logistica.envioFerros"); ?></span></div>
</div> </div>

View File

@ -39,6 +39,7 @@
<th class="lp-header"><?= lang('PresupuestosDirecciones.costePrecio') ?></th> <th class="lp-header"><?= lang('PresupuestosDirecciones.costePrecio') ?></th>
<th class="lp-header"><?= lang('Tarifaacabado.margen') ?></th> <th class="lp-header"><?= lang('Tarifaacabado.margen') ?></th>
<th class="lp-header">Pallets?</th> <th class="lp-header">Pallets?</th>
<th class="lp-header">Ferro o Prototipo?</th>
<th style="min-width:120px !important;" class="lp-header"><?= lang('Basic.global.Action') ?></th> <th style="min-width:120px !important;" class="lp-header"><?= lang('Basic.global.Action') ?></th>
</tr> </tr>
</thead> </thead>
@ -60,6 +61,7 @@
<button id="insertar_direccion" type="button" class="btn btn-secondary waves-effect waves-light float-start"><?= lang("Presupuestos.insertar")?></button> <button id="insertar_direccion" type="button" class="btn btn-secondary waves-effect waves-light float-start"><?= lang("Presupuestos.insertar")?></button>
</div> </div>
</div> </div>
</div> <!-- //.accordion-body --> </div> <!-- //.accordion-body -->
</div> <!-- //.accordion-collapse --> </div> <!-- //.accordion-collapse -->
</div> <!-- //.accordion-item --> </div> <!-- //.accordion-item -->

View File

@ -8,6 +8,15 @@
<div class="modal-body"> <div class="modal-body">
<div id='error-tarifa'></div> <div id='error-tarifa'></div>
<div class="mb-3" id="direccionFerroProto">
<label for="dirFerroProto" class="form-label">
Dirección Ferro o Prototipo
</label>
<input type="checkbox" id="dirFerroProto" class="form-check-input">
</div><!--//.mb-3 -->
<div class="mb-3"> <div class="mb-3">
<label for="add_clientedAdd" class="form-label"> <label for="add_clientedAdd" class="form-label">
<?= lang('PresupuestosDirecciones.clientedAdd') ?>* <?= lang('PresupuestosDirecciones.clientedAdd') ?>*

View File

@ -21,7 +21,95 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-3 <?= $user_dates["pre_formato_at"]||$user_dates["pre_lomo_at"]||$user_dates["pre_solapa_at"]||$user_dates["pre_codbarras_at"]||$user_dates["pre_imposicion_at"] ? "" : "d-none" ?>">
<!-- PREIMPRESION -->
<!-- Preformato -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
<h4><?= lang("Produccion.progress_preimpresion") ?></h4>
</div>
<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>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_formato_at" id="ot-preformato-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_formato_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></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>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_lomo_at" id="ot-prelomo-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_lomo_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></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>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_solapa_at" id="ot-presolapa-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_solapa_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></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>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_codbarras_at" id="ot-precodbarras-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_codbarras_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></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>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_imposicion_at" id="ot-preimposicion-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_imposicion_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
</div>
<div class="col-md-3 <?= $presupuesto->ferro ? "" : "d-none" ?>">
<!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
<h4><?= lang("Produccion.progress_ferro") ?></h4>
</div>
<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>
<div class="input-group">
<input type="text" class="form-control ot-date" name="pendiente_ferro_at" placeholder="DD/MM/YYYY" id="ot-pendiente-ferro" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pendiente_ferro_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></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>
<div class="input-group">
<input type="text" class="form-control ot-date" name="ferro_en_cliente_at" placeholder="DD/MM/YYYY" id="ot-ferro-cliente" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["ferro_en_cliente_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></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>
<div class="input-group">
<input type="text" class="form-control ot-date" name="ferro_ok_at" placeholder="DD/MM/YYYY" id="ot-ferro-ok" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["ferro_ok_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
</div>
<div class="col-md-3"> <div class="col-md-3">
<!-- Progress --> <!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
@ -164,34 +252,7 @@
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100">
<h4><?= lang("Produccion.progress_logistica") ?></h4> <h4><?= lang("Produccion.progress_logistica") ?></h4>
</div> </div>
<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>
<div class="input-group">
<input type="text" class="form-control ot-date" name="pendiente_ferro_at" placeholder="DD/MM/YYYY" id="ot-pendiente-ferro" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pendiente_ferro_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></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>
<div class="input-group">
<input type="text" class="form-control ot-date" name="ferro_en_cliente_at" placeholder="DD/MM/YYYY" id="ot-ferro-cliente" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["ferro_en_cliente_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></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>
<div class="input-group">
<input type="text" class="form-control ot-date" name="ferro_ok_at" placeholder="DD/MM/YYYY" id="ot-ferro-ok" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["ferro_ok_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
<!-- Progress --> <!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2 w-100"> <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> <label for="ot-embalaje" class="form-label"><?= @lang("Produccion.embalaje") ?></label>
@ -214,61 +275,7 @@
</div> </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">
<h4><?= lang("Produccion.progress_preimpresion") ?></h4>
</div>
<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>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_formato_at" id="ot-preformato-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_formato_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></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>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_lomo_at" id="ot-prelomo-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_lomo_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></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>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_solapa_at" id="ot-presolapa-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_solapa_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></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>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_codbarras_at" id="ot-precodbarras-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_codbarras_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></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>
<div class="input-group">
<input type="text" class="form-control ot-date" placeholder="DD/MM/YYYY" name="pre_imposicion_at" id="ot-preimposicion-date" data-input <?= $is_finalizada ? "disabled" : "" ?>>
<button class="btn btn-outline-danger btn-erase-date" type="button"><i class="ti-eraser ti"></i></button>
</div>
<div class="form-text"><?= $user_dates["pre_imposicion_at"] ?? "<span class='ti-sm ti ti-alert-triangle me-1'></span>" ?></div>
</div>
</div>
</div> </div>
<div class="row"> <div class="row">
<div class="row"> <div class="row">

View File

@ -34,7 +34,23 @@
<div class="tab-content p-0"> <div class="tab-content p-0">
<!-- TAREAS --> <!-- TAREAS -->
<div class="tab-pane fade show active" id="nav-ot-task-general" role="tabpanel"> <div class="tab-pane fade show active" id="nav-ot-task-general" role="tabpanel">
<div class="row text-start"> <div class="row justify-content-end">
<div class="col-md-4">
<?php if ($flags["isCosido"] && $tareaCosido): ?>
<div class="form-group text-start">
<label for="">Pliegos</label>
<div class="d-flex flex-row justify-content-start align-items-center gap-2">
<input type="text" id="pliegos-1" class="form-control ot-pliegos" name="pliego_1" value="<?= $tareaCosido->pliego_1 ?>">
<span>de</span>
<input type="text" id="pliegos-1-total" class="form-control ot-pliegos" name="pliego_1_total" value="<?= $tareaCosido->pliego_1_total ?>">
<input type="text" id="pliegos-2" class="form-control ot-pliegos" name="pliego_2" value="<?= $tareaCosido->pliego_2 ?>">
<span>de</span>
<input type="text" id="pliegos-2-total" class="form-control ot-pliegos" name="pliego_2_total" value="<?= $tareaCosido->pliego_2_total ?>">
<button type="button" id="btn-update-pliegos" class="btn btn-primary"><span class="ti ti-device-floppy"></span></button>
</div>
</div>
<?php endif; ?>
</div>
<div class="col-md-12"> <div class="col-md-12">
<?= view("themes/vuexy/components/tables/ot_task_table", ["id" => "ot-task-table"]) ?> <?= view("themes/vuexy/components/tables/ot_task_table", ["id" => "ot-task-table"]) ?>
@ -43,6 +59,7 @@
<div class="row d-flex flex-row justify-content-between align-items-center mt-2 gap-2"> <div class="row d-flex flex-row justify-content-between align-items-center mt-2 gap-2">
<div class="col-md-3 text-start"> <div class="col-md-3 text-start">
<!-- <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> --> <!-- <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>
<div class="col-md-3 gap-2 text-end"> <div class="col-md-3 gap-2 text-end">

View File

@ -8,7 +8,7 @@ if (auth()->user()->can('catalogo.menu')) {
<li class="menu-item"> <li class="menu-item">
<a href="javascript:void(0);" class="menu-link menu-toggle"> <a href="javascript:void(0);" class="menu-link menu-toggle">
<i class="menu-icon tf-icons ti ti-book"></i> <i class="menu-icon tf-icons ti ti-book"></i>
<?= lang("App.menu_catalogo") ?> <div><?= lang("App.menu_catalogo") ?></div>
</a> </a>
<ul class="menu-sub"> <ul class="menu-sub">
<?php if (auth()->user()->can('catalogo.menu')) { ?> <?php if (auth()->user()->can('catalogo.menu')) { ?>

View File

@ -0,0 +1,30 @@
<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"></th>
<th class="cell-50"></th>
<th class="cell-50">Retractilado</th>
<th class="cell-50">Marcapáginas</th>
</tr>
<?php if (count($encuadernaciones) > 0): ?>
<?php foreach ($encuadernaciones as $key => $value): ?>
<tr style="color: red;">
<td><?= $value->tarifa()->nombre ?></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><?= $presupuesto->retractilado ? "SI" : "NO" ?></td>
<td><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td>
</tr>
<?php endforeach; ?>
<?php else: ?>
<tr style="color: red;">
<td colspan="7">Sin encuadernación</td>
</tr>
<?php endif; ?>
</table>

View File

@ -0,0 +1,30 @@
<table>
<tr class="encuadernacion">
<th >Encuadernacion</th>
<th class="cell-50">Solapas</th>
<th class="cell-50"></th>
<th class="cell-50"></th>
<th class="cell-50"></th>
<th class="cell-50"></th>
<th class="cell-50">Retractilado</th>
<th class="cell-50">Marcapáginas</th>
</tr>
<?php if (count($encuadernaciones) > 0): ?>
<?php foreach ($encuadernaciones as $key => $value): ?>
<tr style="color: red;">
<td><?= $value->tarifa()->nombre ?></td>
<td><?= $presupuesto->solapas ? "SI ($presupuesto->solapas_ancho mm.)" : "NO" ?></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><?= $presupuesto->retractilado ? "SI" : "NO" ?></td>
<td><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td>
</tr>
<?php endforeach; ?>
<?php else: ?>
<tr style="color: red;">
<td colspan="7">Sin encuadernación</td>
</tr>
<?php endif; ?>
</table>

View File

@ -0,0 +1,28 @@
<table>
<tr class="encuadernacion">
<th class="cell-50">Encuadernacion</th>
<th class="cell-50">Tipo</th>
<th class="cell-50">Color</th>
<th class="cell-50">Plakenes</th>
<th class="cell-50">Plakene</th>
<th class="cell-50">Externo</th>
<th class="cell-50">Retractilado</th>
</tr>
<?php if (count($encuadernaciones) > 0): ?>
<?php foreach ($encuadernaciones as $key => $value): ?>
<tr style="color: red;">
<td><?= $value->tarifa()->nombre ?></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><?= $presupuesto->retractilado ? "SI" : "NO" ?></td>
</tr>
<?php endforeach; ?>
<?php else: ?>
<tr style="color: red;">
<td colspan="7">Sin encuadernación</td>
</tr>
<?php endif; ?>
</table>

View File

@ -0,0 +1,30 @@
<table>
<tr class="encuadernacion">
<th>Encuadernacion</th>
<th class="cell-50">Pliegos</th>
<th class="cell-50">Pliegos</th>
<th class="cell-50"></th>
<th class="cell-50">Sobrecubierta</th>
<th class="cell-50">Guardas</th>
<th class="cell-50">Retractilado</th>
<th class="cell-50">Marcapáginas</th>
</tr>
<?php if (count($encuadernaciones) > 0): ?>
<?php foreach ($encuadernaciones as $key => $value): ?>
<tr style="color: red;">
<td><?= $value->tarifa()->nombre ?></td>
<td><?=$tareaCosido->pliego_1." de ".$tareaCosido->pliego_1_total?></td>
<td><?=$tareaCosido->pliego_2." de ".$tareaCosido->pliego_2_total?></td>
<td></td>
<td><?= $presupuesto->hasSobrecubierta() ? "SI" : "NO" ?></td>
<td><?= $presupuesto->guardas ? "SI" : "NO" ?></td>
<td><?= $presupuesto->retractilado ? "SI" : "NO" ?></td>
<td><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td>
</tr>
<?php endforeach; ?>
<?php else: ?>
<tr style="color: red;">
<td colspan="7">Sin encuadernación</td>
</tr>
<?php endif; ?>
</table>

View File

@ -0,0 +1,30 @@
<table>
<tr class="encuadernacion">
<th>Encuadernacion</th>
<th class="cell-50">Pliegos</th>
<th class="cell-50">Pliegos</th>
<th class="cell-50">Solapas</th>
<th class="cell-50">Sobrecubierta</th>
<th class="cell-50">Guardas</th>
<th class="cell-50">Retractilado</th>
<th class="cell-50">Marcapáginas</th>
</tr>
<?php if (count($encuadernaciones) > 0): ?>
<?php foreach ($encuadernaciones as $key => $value): ?>
<tr style="color: red;">
<td><?= $value->tarifa()->nombre ?></td>
<td><?=$tareaCosido->pliego_1." de ".$tareaCosido->pliego_1_total?></td>
<td><?=$tareaCosido->pliego_2." de ".$tareaCosido->pliego_2_total?></td>
<td><?= $presupuesto->solapas ? "SI ($presupuesto->solapas_ancho mm.)" : "NO" ?></td>
<td><?= $presupuesto->hasSobrecubierta() ? "SI" : "NO" ?></td>
<td><?= $presupuesto->guardas ? "SI" : "NO" ?></td>
<td><?= $presupuesto->retractilado ? "SI" : "NO" ?></td>
<td><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td>
</tr>
<?php endforeach; ?>
<?php else: ?>
<tr style="color: red;">
<td colspan="7">Sin encuadernación</td>
</tr>
<?php endif; ?>
</table>

View File

@ -0,0 +1,30 @@
<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>
<th class="cell-50">Marcapáginas</th>
</tr>
<?php if (count($encuadernaciones) > 0): ?>
<?php foreach ($encuadernaciones as $key => $value): ?>
<tr style="color: red;">
<td><?= $value->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>
<td><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td>
</tr>
<?php endforeach; ?>
<?php else: ?>
<tr style="color: red;">
<td colspan="7">Sin encuadernación</td>
</tr>
<?php endif; ?>
</table>

View File

@ -0,0 +1,30 @@
<table>
<tr class="encuadernacion">
<th >Encuadernacion</th>
<th class="cell-50">Solapas</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>
<th class="cell-50">Marcapáginas</th>
</tr>
<?php if (count($encuadernaciones) > 0): ?>
<?php foreach ($encuadernaciones as $key => $value): ?>
<tr style="color: red;">
<td><?= $value->tarifa()->nombre ?></td>
<td><?= $presupuesto->solapas ? "SI ($presupuesto->solapas_ancho mm.)" : "NO" ?></td>
<td></td>
<td></td>
<td><?= $presupuesto->hasSobrecubierta() ? "SI" : "NO" ?></td>
<td><?= $presupuesto->guardas ? "SI" : "NO" ?></td>
<td><?= $presupuesto->retractilado ? "SI" : "NO" ?></td>
<td><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td>
</tr>
<?php endforeach; ?>
<?php else: ?>
<tr style="color: red;">
<td colspan="7">Sin encuadernación</td>
</tr>
<?php endif; ?>
</table>

View File

@ -0,0 +1,36 @@
<table>
<tr>
<th class="encuadernacion">Encuadernacion</th>
<th class="cell-50">Pliegos</th>
<th class="cell-50">Pliegos</th>
<th class="cell-50">Guardas</th>
<th class="cell-50">Guardas Impresion</th>
<th class="cell-50">Cabezada</th>
<th class="cell-50">Lomo</th>
</tr>
<?php if (count($encuadernaciones) > 0): ?>
<?php foreach ($encuadernaciones as $key => $value): ?>
<tr style="color: red;">
<td><?= $value->tarifa()->nombre ?></td>
<td><?=$tareaCosido->pliego_1." de ".$tareaCosido->pliego_1_total?></td>
<td><?=$tareaCosido->pliego_2." de ".$tareaCosido->pliego_2_total?></td>
<td></td>
<td></td>
<td>Color/NO</td>
<td>Recto/Redondo</td>
</tr>
<tr>
<td class="encuadernacion" colspan="1">Sobrecubierta</td>
<td style="color:red" colspan="2"><?= $linea_impresion->isSobreCubierta() ? "SI" : "NO" ?></td>
<td class="encuadernacion">Retractilado</td>
<td style="color:red"><?= $presupuesto->retractilado ? "SI" : "NO" ?></td>
<td class="encuadernacion">Marcapáginas</td>
<td style="color:red"><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td>
</tr>
<?php endforeach; ?>
<?php else: ?>
<tr style="color: red;">
<td colspan="7">Sin encuadernación</td>
</tr>
<?php endif; ?>
</table>

View File

@ -0,0 +1,30 @@
<table>
<tr class="encuadernacion">
<th >Encuadernacion</th>
<th class="cell-50">Guardas</th>
<th class="cell-50">Guardas Imp.</th>
<th class="cell-50">Cabezada</th>
<th class="cell-50">Lomo</th>
<th class="cell-50">Sobrecubierta</th>
<th class="cell-50">Retractilado</th>
<th class="cell-50">Marcapáginas</th>
</tr>
<?php if (count($encuadernaciones) > 0): ?>
<?php foreach ($encuadernaciones as $key => $value): ?>
<tr style="color: red;">
<td><?= $value->tarifa()->nombre ?></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<?php endforeach; ?>
<?php else: ?>
<tr style="color: red;">
<td colspan="7">Sin encuadernación</td>
</tr>
<?php endif; ?>
</table>

View File

@ -0,0 +1,29 @@
<table>
<caption>
WIO
</caption>
<tr class="encuadernacion">
<th class="cell-50">Encuadernacion</th>
<th class="cell-50">Color</th>
<th class="cell-50">Plakenes</th>
<th class="cell-50">Plakene</th>
<th class="cell-50">Externo</th>
<th class="cell-50">Retractilado</th>
</tr>
<?php if (count($encuadernaciones) > 0): ?>
<?php foreach ($encuadernaciones as $key => $value): ?>
<tr style="color: red;">
<td><?= $value->tarifa()->nombre ?></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><?= $presupuesto->retractilado ? "SI" : "NO" ?></td>
</tr>
<?php endforeach; ?>
<?php else: ?>
<tr style="color: red;">
<td colspan="7">Sin encuadernación</td>
</tr>
<?php endif; ?>
</table>

View File

@ -156,6 +156,12 @@ $settings = $session->get('settings');
<div class="row"> <div class="row">
<div class="col-8"> <div class="col-8">
<table class="h-50"> <table class="h-50">
<tr>
<th>IDSK</th>
<td class="t-cell">
</td>
</tr>
<tr> <tr>
<th>CLIENTE</th> <th>CLIENTE</th>
<td class="t-cell"> <td class="t-cell">
@ -229,9 +235,9 @@ $settings = $session->get('settings');
<th>Tiempo</th> <th>Tiempo</th>
</tr> </tr>
<tr> <tr>
<td><?= $presupuesto->paginas * $presupuesto->tirada ?></td> <td><?= $presupuesto->paginas ?></td> <!-- Páginas libro -->
<td><?= $presupuesto->tirada ?> </td> <td><?= $presupuesto->tirada ?> </td>
<td>??</td> <td><?= $linea_impresion->tinta() ?></td>
<td><?= json_decode($linea_impresion->formas)->formas ?></td> <td><?= json_decode($linea_impresion->formas)->formas ?></td>
<td><strong><?= $linea_impresion->maquina()->nombre ?></strong></td> <td><strong><?= $linea_impresion->maquina()->nombre ?></strong></td>
<td><?= $linea_impresion->rotativa_clicks_total ?></td> <td><?= $linea_impresion->rotativa_clicks_total ?></td>
@ -275,7 +281,7 @@ $settings = $session->get('settings');
<th>Tiempo</th> <th>Tiempo</th>
</tr> </tr>
<tr> <tr>
<td>??</td> <td><?= $linea_cubierta->tinta() ?></td>
<td><?= $presupuesto->tirada ?></td> <td><?= $presupuesto->tirada ?></td>
<td><strong><?= $linea_cubierta->maquina()->nombre ?></strong></td> <td><strong><?= $linea_cubierta->maquina()->nombre ?></strong></td>
<td><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td> <td><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td>
@ -302,46 +308,41 @@ $settings = $session->get('settings');
<div class="row mb-2"> <div class="row mb-2">
<div class="section-title encuadernacion">ENCUADERNACIÓN</div> <div class="section-title encuadernacion">ENCUADERNACIÓN</div>
<div class="col-12"> <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"><?= isset($encuadernaciones[0]) ? $encuadernaciones[0]->tarifa()->code ?? "?" : "?" ?></span>
</div>
<table> <table>
<tr> <tr>
<th class="t-header" style="width: 10%;">Plastificado</th> <td class="w-10 encuadernacion">Plastificado</td>
<td class="t-cell text-center"><?= $acabados[0]->tarifa()->nombre ?></td> <td><?= $acabados[0]->tarifa()->nombre ?></td>
<th class="t-header" style="width: 10%;">UVI</th> <td class="encuadernacion bg-encuadernacion" style="width: 100px;">UVI</td>
<td class="t-cell text-center"> <?= $uvi ? $uvi->code : "" ?> </td> <td style="color:red;width:100px" class="bg-encuadernacion"> <?= $uvi ? 'SI' : "NO" ?> </td>
<th class="t-header" style="width: 10%;">Máquina</th> <td class="encuadernacion bg-encuadernacion" style="width: 100px;">EXTERNO:</td>
<td class="t-cell text-center"><?= implode("/", array_map(fn($q) => $q->nombre, $acabados[0]->maquinas())) ?> </td> <td class="bg-encuadernacion" style="width: 100px;"></td>
<th class="t-header " style="width: 10%;">Operario</th>
<td class="t-cell text-center"><?= $ot->users()?->plastificado_by?->getFullName() ?? null ?> </td>
</tr> </tr>
</table>
<table>
<tr> <tr>
<th>Encuadernacion</th> <td class="text-start" colspan="2">Meter datos de solapas y preparación guillotina</td>
<th>Solapas</th> <td></td>
<th>Sobrecubierta</th> <td></td>
<th>Plegado</th> <td class="t-header">CORTE PIE:</td>
<th>Guardas</th> <td></td>
<th>Retractilado</th>
<th>Marcapáginas</th>
</tr> </tr>
<?php if (count($encuadernaciones) > 0): ?>
<?php foreach ($encuadernaciones as $key => $value): ?>
<tr>
<td><?= $value->tarifa()->nombre ?></td>
<td><?= $presupuesto->solapas ? "SI" : "NO" ?></td>
<td><?= $presupuesto->hasSobrecubierta() ? "SI" : "NO" ?></td>
<td>_____<?= " " . lang("Produccion.pliegos_de") . " " ?>_____</td>
<td><?= $presupuesto->guardas ? "SI" : "NO" ?></td>
<td><?= $presupuesto->retractilado ? "SI" : "NO" ?></td>
<td><?= $presupuesto->marcapaginas ? "SI" : "NO" ?></td>
</tr>
<?php endforeach; ?>
<?php else: ?>
<tr>
<td colspan="7">Sin encuadernación</td>
</tr>
<?php endif; ?>
</table> </table>
<?php
$encuadernacion_code = isset($encuadernaciones[0]) ? $encuadernaciones[0]->tarifa()->code : null;
try {
if ($encuadernacion_code) {
echo view("/themes/vuexy/pdfs/encuadernados/$encuadernacion_code.php");
} else {
throw new Exception('No existe código de encuadernación.');
}
} catch (\Throwable $th) {
$error_message = $th->getMessage();
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): ?> <?php if (count($encuadernaciones) > 0): ?>
<div class="comments"> <div class="comments">

View File

@ -4,11 +4,14 @@ import ClassSelect from '../../components/select2.js';
$(() => { $(() => {
let otsFilter = ''; let otsFilter = '';
const tipo_envio = $('#tipo_envio').val();
const selectPedidos = new ClassSelect($('#buscadorPedidos'), '/logistica/selectForNewEnvio', ""); const selectPedidos = new ClassSelect($('#buscadorPedidos'), '/logistica/selectForNewEnvio', "", true, {
tipo_envio: () => $('#tipo_envio').val()
});
selectPedidos.init(); selectPedidos.init();
const selectDirecciones = new ClassSelect($('#selectDirecciones'), '/logistica/selectDireccionForEnvio', "", true, { const selectDirecciones = new ClassSelect($('#selectDirecciones'), '/logistica/selectDireccionForEnvio', "", true, {
pedido_id: () => selectPedidos.getVal() ot_id: () => selectPedidos.getVal()
}); });
selectDirecciones.init(); selectDirecciones.init();
@ -19,7 +22,10 @@ $(() => {
}) })
selectPedidos.item.on('change', () => { selectPedidos.item.on('change', () => {
selectDirecciones.empty(); selectDirecciones.empty();
$('.select-direcciones').removeClass('d-none'); if(tipo_envio == 'ferro_prototipo')
$('.add-envio').removeClass('d-none');
else
$('.select-direcciones').removeClass('d-none');
}) })
selectDirecciones.item.on('select2:open', () => { selectDirecciones.item.on('select2:open', () => {
$('.add-envio').addClass('d-none'); $('.add-envio').addClass('d-none');
@ -31,12 +37,24 @@ $(() => {
$('#btnAddEnvio').on('click', () => { $('#btnAddEnvio').on('click', () => {
const pedido_id = selectPedidos.getVal(); let url = '';
const direccionSeleccionada = selectDirecciones.getText(); let data = {};
$.post('/logistica/generateEnvio', { if(tipo_envio == 'ferro_prototipo'){
pedido_id: pedido_id, url = '/logistica/generateEnvioFerro';
direccion: direccionSeleccionada data = {
}, function (response) { ot_id: selectPedidos.getVal()
};
}
else{
url = '/logistica/generateEnvio';
data = {
ot_id: selectPedidos.getVal(),
direccion: selectDirecciones.getText()
};
}
$.post(
url,
data, function (response) {
if (response.status) { if (response.status) {
window.open(`${window.location.origin}/logistica/envio/${response.data.id_envio}`); window.open(`${window.location.origin}/logistica/envio/${response.data.id_envio}`);
selectDirecciones.empty(); selectDirecciones.empty();
@ -51,7 +69,7 @@ $(() => {
}); });
}) })
const tableEnvios = $('#tableOfEnvios').DataTable({ const tableEnvios = $('#tableOfEnvios').DataTable({
processing: true, processing: true,
serverSide: true, serverSide: true,
@ -66,6 +84,7 @@ $(() => {
"url": "/logistica/datatableEnvios", "url": "/logistica/datatableEnvios",
"data": function (d) { "data": function (d) {
d.otsFilter = otsFilter; d.otsFilter = otsFilter;
d.tipo_envio = $('#tipo_envio').val();
} }
}, },
"columns": [ "columns": [

View File

@ -235,9 +235,35 @@ class DatosLibro {
if (this.ferro.prop('checked')) { if (this.ferro.prop('checked')) {
$(document).trigger('add-servicio-lineas', 'ferro'); $(document).trigger('add-servicio-lineas', 'ferro');
$(document).trigger('update-presupuesto', {
update_lineas: false,
update_servicios: false,
update_envios: true,
update_resumen: false,
update_tiradas_alternativas: false
});
} }
else { else {
$(document).trigger('remove-servicio-lineas', 'ferro'); $(document).trigger('remove-servicio-lineas', 'ferro');
if(!this.prototipo.prop('checked')){
const table = $('#tableOfDireccionesEnvio').DataTable();
const rows = table.rows().data();
for (let i = 0; i < rows.length; i++) {
const rowData = rows[i];
if (rowData.is_ferro_prototipo == 1) {
table.rows(i).remove();
table.draw();
break;
}
}
$(document).trigger('update-presupuesto', {
update_lineas: false,
update_servicios: false,
update_envios: true,
update_resumen: true,
update_tiradas_alternativas: true
});
}
} }
} }
@ -261,9 +287,35 @@ class DatosLibro {
if (this.prototipo.prop('checked')) { if (this.prototipo.prop('checked')) {
$(document).trigger('add-servicio-lineas', 'prototipo'); $(document).trigger('add-servicio-lineas', 'prototipo');
$(document).trigger('update-presupuesto', {
update_lineas: false,
update_servicios: false,
update_envios: true,
update_resumen: false,
update_tiradas_alternativas: false
});
} }
else { else {
$(document).trigger('remove-servicio-lineas', 'prototipo'); $(document).trigger('remove-servicio-lineas', 'prototipo');
if(!this.ferro.prop('checked')){
const table = $('#tableOfDireccionesEnvio').DataTable();
const rows = table.rows().data();
for (let i = 0; i < rows.length; i++) {
const rowData = rows[i];
if (rowData.is_ferro_prototipo == 1) {
table.rows(i).remove();
table.draw();
break;
}
}
$(document).trigger('update-presupuesto', {
update_lineas: false,
update_servicios: false,
update_envios: true,
update_resumen: true,
update_tiradas_alternativas: true
});
}
} }
} }

View File

@ -71,6 +71,7 @@ class Envios {
}, },
{ 'data': 'margen', render: function (data, type, row) { return Math.round(data) } }, { 'data': 'margen', render: function (data, type, row) { return Math.round(data) } },
{ 'data': 'entregaPieCalle' }, { 'data': 'entregaPieCalle' },
{ 'data': 'is_ferro_prototipo' },
{ {
data: function (row, type, set, meta) { data: function (row, type, set, meta) {
return ` return `
@ -87,7 +88,7 @@ class Envios {
orderable: false, orderable: false,
searchable: false, searchable: false,
// all columns // all columns
targets: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] targets: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
//targets: [$('#tableOfDireccionesEnvio').find("tr:first th").length - 1] //targets: [$('#tableOfDireccionesEnvio').find("tr:first th").length - 1]
}, },
], ],
@ -97,7 +98,7 @@ class Envios {
drawCallback: function (settings) { drawCallback: function (settings) {
const boolCols = [15]; const boolCols = [15, 16];
for (let coln of boolCols) { for (let coln of boolCols) {
self.table.column(coln, { page: 'current' }).nodes().each(function (cell, i) { self.table.column(coln, { page: 'current' }).nodes().each(function (cell, i) {
cell.innerHTML = cell.innerHTML == '1' ? '<i class="ti ti-check"></i>' : ''; cell.innerHTML = cell.innerHTML == '1' ? '<i class="ti ti-check"></i>' : '';
@ -164,6 +165,19 @@ class Envios {
$('#add_telefono').val(data.telefono) $('#add_telefono').val(data.telefono)
$('#add_cantidad').val(data.cantidad) $('#add_cantidad').val(data.cantidad)
$('#add_entregaPieCalle').prop('checked', data.entregaPieCalle == 1 ? true : false) $('#add_entregaPieCalle').prop('checked', data.entregaPieCalle == 1 ? true : false)
$('#dirFerroProto').prop('checked', data.is_ferro_prototipo == 1 ? true : false)
if (data.is_ferro_prototipo == 1) {
$('#add_cantidad').val(1);
$('#add_cantidad').attr('disabled', true);
$('#dirFerroProto').prop('disabled', true);
$('#direccionFerroProto').removeClass('d-none');
}
else {
$('#add_cantidad').attr('disabled', false);
$('#dirFerroProto').prop('disabled', false);
$('#direccionFerroProto').addClass('d-none');
}
self.direccionesClienteForm.setParams({ 'cliente_id': () => $("#clienteId").select2('data')[0].id }); self.direccionesClienteForm.setParams({ 'cliente_id': () => $("#clienteId").select2('data')[0].id });
self.direccionesClienteForm.init(); self.direccionesClienteForm.init();
@ -220,6 +234,7 @@ class Envios {
let newAddDialog = $("#addressForm"); let newAddDialog = $("#addressForm");
this.direccionesClienteForm.setParams({ 'cliente_id': () => $("#clienteId").select2('data')[0].id }); this.direccionesClienteForm.setParams({ 'cliente_id': () => $("#clienteId").select2('data')[0].id });
this.direccionesClienteForm.init(); this.direccionesClienteForm.init();
let maximaCantidad = parseInt($('#tirada').val()); let maximaCantidad = parseInt($('#tirada').val());
$("#add_cantidad").attr("max", maximaCantidad);; $("#add_cantidad").attr("max", maximaCantidad);;
$("#add_cantidad").val(maximaCantidad); $("#add_cantidad").val(maximaCantidad);
@ -228,16 +243,39 @@ class Envios {
}) })
let cantidad_total = 0; let cantidad_total = 0;
let hasFerroPrototipo = false;
$('#tableOfDireccionesEnvio').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) { $('#tableOfDireccionesEnvio').DataTable().rows().every(function (rowIdx, tableLoop, rowLoop) {
let data = this.data(); let data = this.data();
cantidad_total += parseInt(data.cantidad); if (data.is_ferro_prototipo == 0)
cantidad_total += parseInt(data.cantidad);
else
hasFerroPrototipo = true;
}); });
$('#add_cantidad').attr('max-value', parseInt($('#tirada').val()) - cantidad_total); const restante = parseInt($('#tirada').val()) - cantidad_total;
$('#add_cantidad').val(parseInt($('#tirada').val()) - cantidad_total); $('#add_cantidad').attr('max-value', restante);
$('#add_cantidad').val(restante > 0 ? restante : 0);
if (hasFerroPrototipo) {
$('#dirFerroProto').prop('checked', false);
$('#direccionFerroProto').addClass('d-none');
$('#add_cantidad').attr('disabled', false);
}
else {
if (restante == 0) {
$('#direccionFerroProto').removeClass('d-none');
$('#dirFerroProto').prop('checked', true);
$('#dirFerroProto').prop('disabled', true);
$('#add_cantidad').attr('disabled', true);
$('#add_cantidad').val(1);
}
}
newAddDialog.modal('show'); newAddDialog.modal('show');
} }
get_peso_libro() { get_peso_libro() {
var peso_total_libro = 0.0 var peso_total_libro = 0.0
@ -277,11 +315,12 @@ class Envios {
margen: data.margen, margen: data.margen,
proveedor: data.proveedor, proveedor: data.proveedor,
proveedor_id: data.proveedor_id, proveedor_id: data.proveedor_id,
entregaPieCalle: data.entregaPieCalle entregaPieCalle: data.entregaPieCalle,
is_ferro_prototipo: data.is_ferro_prototipo,
}) })
}); });
}) })
} }
@ -379,11 +418,14 @@ class Envios {
'precio': datos_tarifa.precio.toFixed(2), 'precio': datos_tarifa.precio.toFixed(2),
'margen': datos_tarifa.margen, 'margen': datos_tarifa.margen,
'entregaPieCalle': rowData.entregaPieCalle, 'entregaPieCalle': rowData.entregaPieCalle,
'is_ferro_prototipo': rowData.is_ferro_prototipo,
'actionBtns_direcciones': self.actionBtns_direcciones, 'actionBtns_direcciones': self.actionBtns_direcciones,
}) })
.draw(); .draw();
self.check_unidades_enviadas(null,null);
$(document).trigger('update-presupuesto', { $(document).trigger('update-presupuesto', {
update_lineas: false, update_lineas: false,
update_servicios: false, update_servicios: false,
@ -566,6 +608,7 @@ class Envios {
'precio': tarifa_final.precio, 'precio': tarifa_final.precio,
'margen': tarifa_final.margen, 'margen': tarifa_final.margen,
'entregaPieCalle': $('#add_entregaPieCalle').is(":checked") ? 1 : 0, 'entregaPieCalle': $('#add_entregaPieCalle').is(":checked") ? 1 : 0,
'is_ferro_prototipo': $('#dirFerroProto').is(":checked") ? 1 : 0,
'actionBtns_direcciones': ` 'actionBtns_direcciones': `
<span class="edit-add"><a href="javascript:void(0);"><i class="ti ti-pencil ti-sm btn-edit-envio mx-2"></i></a></span> <span class="edit-add"><a href="javascript:void(0);"><i class="ti ti-pencil ti-sm btn-edit-envio mx-2"></i></a></span>
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm tiradas-alternativas btn-delete-envio mx-2"></i></a> <a href="javascript:void(0);"><i class="ti ti-trash ti-sm tiradas-alternativas btn-delete-envio mx-2"></i></a>
@ -673,8 +716,12 @@ class Envios {
} }
let cantidad_total = 0 let cantidad_total = 0
let hasFerroPrototipo = false
this.table.rows().every(function (rowIdx, tableLoop, rowLoop) { this.table.rows().every(function (rowIdx, tableLoop, rowLoop) {
cantidad_total += parseInt(this.data().cantidad) if (this.data().is_ferro_prototipo == 0)
cantidad_total += parseInt(this.data().cantidad);
else
hasFerroPrototipo = true;
}); });
const tirada = parseInt($('#tirada').val()); const tirada = parseInt($('#tirada').val());
@ -695,7 +742,11 @@ class Envios {
this.insertarEnvio.removeClass('d-none'); this.insertarEnvio.removeClass('d-none');
return false; return false;
} }
this.insertarEnvio.addClass('d-none');
if (($('#ferro').is(':checked') || $('#prototipo').is(':checked')) && !hasFerroPrototipo)
this.insertarEnvio.removeClass('d-none');
else
this.insertarEnvio.addClass('d-none');
$('#alert-envios').html(htmlString); $('#alert-envios').html(htmlString);
return true; return true;
} }

View File

@ -154,6 +154,7 @@ class OrdenTrabajo {
this.otForm.on("click", ".ot-tarea-comment", this.handleNoteTarea.bind(this)) this.otForm.on("click", ".ot-tarea-comment", this.handleNoteTarea.bind(this))
$("#btn-update-tarea-comment").on("click", this.handleTareaNoteSubmit.bind(this)) $("#btn-update-tarea-comment").on("click", this.handleTareaNoteSubmit.bind(this))
this.otForm.on("change", "#ot-comment", this.handleOtComment.bind(this)) this.otForm.on("change", "#ot-comment", this.handleOtComment.bind(this))
$("#btn-update-pliegos").on('click', this.handleUpdatePliegos.bind(this))
this._handleGetData() this._handleGetData()
this.handleGetPortada() this.handleGetPortada()
@ -162,14 +163,9 @@ class OrdenTrabajo {
this.datatableTareas = this.tareasTableItem.DataTable({ this.datatableTareas = this.tareasTableItem.DataTable({
processing: true, processing: true,
paging: false, paging: false,
layout: {
topStart: 'pageLength',
topEnd: 'search',
bottomStart: 'info',
bottomEnd: 'paging'
},
serverSide: true, serverSide: true,
responsive: true, responsive: true,
bFilter: false,
createdRow: this.filterCreatedRow.bind(this), createdRow: this.filterCreatedRow.bind(this),
pageLength: 10, pageLength: 10,
language: { language: {
@ -236,7 +232,7 @@ class OrdenTrabajo {
} }
createSelectMaquinaTarea() { createSelectMaquinaTarea() {
try { try {
this.summaryData.tasks.forEach(element => { this.summaryData.tasks.forEach(async (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)
if (element.presupuesto_acabado_id) this.createSelectMaquinaAcabado(selectItem) if (element.presupuesto_acabado_id) this.createSelectMaquinaAcabado(selectItem)
@ -322,7 +318,7 @@ class OrdenTrabajo {
maquinaSelects.reset() maquinaSelects.reset()
} }
} }
createSelectImposicion(selectItem) { async createSelectImposicion(selectItem) {
let imposicionId = selectItem.data("imposicion-id") let imposicionId = selectItem.data("imposicion-id")
let imposicionSelect = new ClassSelect(selectItem, `/imposiciones/select`, "Seleccione una imposición", true); let imposicionSelect = new ClassSelect(selectItem, `/imposiciones/select`, "Seleccione una imposición", true);
@ -359,9 +355,11 @@ class OrdenTrabajo {
this.otForm.off("change", ".ot-pedido") this.otForm.off("change", ".ot-pedido")
this.otForm.off("change", ".ot-pedido-check") 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.fillPliegos()
this.isOtFinalizada = this.summaryData.ot.estado == "F"; this.isOtFinalizada = this.summaryData.ot.estado == "F";
this.datatableTareas.ajax.reload() this.datatableTareas.ajax.reload()
} catch (error) { } catch (error) {
@ -393,6 +391,15 @@ class OrdenTrabajo {
}
fillPliegos() {
// if (this.summaryData.tareaCosido) {
// const tareaCosido = this.summaryData.tareaCosido
// this.otForm.find('input[name=pliego_1]').val(tareaCosido.pliego_1)
// this.otForm.find('input[name=pliego_1_total]').val(tareaCosido.pliego_1_total)
// this.otForm.find('input[name=pliego_2]').val(tareaCosido.pliego_2)
// this.otForm.find('input[name=pliego_2_total]').val(tareaCosido.pliego_2_total)
// }
} }
fillOtDetails() { fillOtDetails() {
const progreso = this.summaryData.ot.progreso const progreso = this.summaryData.ot.progreso
@ -823,6 +830,40 @@ class OrdenTrabajo {
this._handleGetData() this._handleGetData()
} }
getTarea(tarea_id) {
return new Promise((resolve, reject) => {
let ajax = new Ajax(`/produccion/ordentrabajo/tarea/${tarea_id}`, null, null, (response) => {
resolve(response)
},
(error) => {
resolve(error)
})
ajax.get()
})
}
getDataPliegos() {
return {
orden_trabajo_id: this.modelId,
pliego_1: $("#pliegos-1").val(),
pliego_1_total: $("#pliegos-1-total").val(),
pliego_2: $("#pliegos-2").val(),
pliego_2_total: $("#pliegos-2-total").val(),
}
}
handleUpdatePliegos() {
let ajax = new Ajax(`/produccion/ordentrabajo/update/tarea/pliegos`,
this.getDataPliegos(),
null,
(response) => {
alertSuccess(response.message).fire()
},
(error) => {
alertError(error.message).fire()
})
ajax.post()
}
} }

View File

@ -1,182 +1,192 @@
@page { @page {
size: A4; size: A4;
margin: 0; margin: 0;
} }
@media print { @media print {
body,html { body,
width: 210mm; html {
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; width: 210mm;
height: 297mm; height: 297mm;
max-width: 210mm; max-width: 210mm;
font-size : 11px;
max-height: 297mm; max-height: 297mm;
background-color: white; print-color-adjust: exact;
}
/* ... the rest of the rules ... */
} }
body{ html {
border: 0px solid; font-family: Arial, sans-serif;
padding: 10px; width: 210mm;
max-width: 210mm; height: 297mm;
max-height: 297mm; max-width: 210mm;
background-color : white; font-size: 11px;
max-height: 297mm;
background-color: white;
} }
.portada-img{ body {
border-style: solid; border: 0px solid;
height: 100%; padding: 10px;
border: 2px solid; margin : 10px;
max-width: 210mm;
max-height: 297mm;
background-color: white;
} }
.square{ .portada-img {
align-items: center; border-style: solid;
align-content : center; height: 100%;
justify-content: center; border: 2px solid;
font-weight: bold;
font-size : 14px;
} }
.esquema{ .square {
align-items: center;
align-content: center;
justify-content: center;
font-weight: bold;
font-size: 14px;
} }
.pagina-imposicion-outer-start{ .esquema {
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{ .pagina-imposicion-outer-start {
border-top: 2px solid; border-top: 2px solid;
border-right: 2px solid; border-left: 2px solid;
border-bottom: 2px solid; border-bottom: 2px solid;
width: 50px; width: 50px;
height: 100px; height: 100px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.pagina-imposicion-outer{ .pagina-imposicion-outer-end {
border-top: 2px solid; border-top: 2px solid;
border-bottom: 2px solid; border-right: 2px solid;
width: 50px; border-bottom: 2px solid;
height: 100px; width: 50px;
display: flex; height: 100px;
align-items: center; display: flex;
justify-content: center; align-items: center;
justify-content: center;
} }
.pagina-imposicion-inner{ .pagina-imposicion-outer {
border: 2px solid; border-top: 2px solid;
font-size: 25px; border-bottom: 2px solid;
width: 40px; width: 50px;
height: 90px; height: 100px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.esquema-imposicion-wrapper{ .pagina-imposicion-inner {
border: 2px solid;
font-size: 25px;
width: 40px;
height: 90px;
display: flex;
align-items: center;
justify-content: center;
} }
.imposicion{ .esquema-imposicion-wrapper {
display: flex; }
align-items: center; .imposicion {
justify-content: center; display: flex;
align-items: center;
justify-content: center;
} }
.section-title { .section-title {
font-weight: bold; font-weight: bold;
margin-bottom: 10px; margin-bottom: 10px;
} }
.cubierta{ .cubierta {
color: #007bff; color: #007bff;
} }
.encuadernacion{ .encuadernacion {
color: green; color: green;
} }
.impresion{ .impresion {
color: #ff4000; color: #ff4000;
} }
.comments { .comments {
color: #555; color: #555;
font-style: italic; font-style: italic;
margin-top: 0.2rem; margin-top: 0.2rem;
} }
.comment-content { .comment-content {
line-height: 0; line-height: 0;
width: 100%; width: 100%;
height: 50px; height: 50px;
border: solid; border: solid;
border-width: 1px; border-width: 1px;
} }
table { table {
width: 100%; width: 100%;
margin-bottom: 5px; margin-bottom: 5px;
font-size: 10px; font-size: 10px;
} }
table td { table td {
text-align: center; text-align: center;
} }
table,th,td{ table,
border: 0.1px solid rgb(0, 0, 0); th,
border-collapse: collapse; td {
border: 0.1px solid rgb(0, 0, 0);
border-collapse: collapse;
} }
table th { table th {
background-color: #f4f4f4; font-weight: bold;
font-weight: bold; color: black;
color : black; text-align: center;
text-align: center;
} }
table td{ table td {
font-weight: bold; font-weight: bold;
} }
.comments { .comments {
color: #555; color: #555;
font-style: italic; font-style: italic;
margin-top: 0.2rem; margin-top: 0.2rem;
} }
.t-header{ .t-header {
color: black; color: black;
width: 25%; width: 25%;
} }
.t-cell{ .t-cell {
background-color: white; color: black;
color: black; text-align: start;
text-align: start; padding-left: 0.2rem;
padding-left: 0.2rem;
} }
.t-row{ .t-row {
font-size: 8px; font-size: 8px;
width : 100%; width: 100%;
} }
.bicolor{ .bicolor {
background: linear-gradient( to right, #00b5fc 0%, #00b5fc 45%, #000000 55%, #000000 100%); background: linear-gradient(
color: white; to right,
#00b5fc 0%,
#00b5fc 45%,
#000000 55%,
#000000 100%
);
color: white;
} }
.cmyk{ .cmyk {
background-image: url('/themes/vuexy/img/safekat/presupuestos/cmyk.png'); background-image: url("/themes/vuexy/img/safekat/presupuestos/cmyk.png");
background-size: 110px; background-size: 110px;
color : white; color: white;
text-shadow: 0px 0px 2px black; text-shadow: 0px 0px 2px black;
stroke:white; stroke: white;
} }
.bn{ .bn {
background : black; background: black;
color: white; color: white;
}
.footer {
font-size: 10px;
}
.bg-encuadernacion {
background-color: #bbd8a3;
}
.encuadernacion th {
color: green;
}
.cell-50 {
width: 50px;
} }
.footer{
font-size : 10px
}