This commit is contained in:
amazuecos
2024-12-16 09:19:08 +01:00
parent 422ade0030
commit 43f2daea59
13 changed files with 351 additions and 109 deletions

View File

@ -853,7 +853,8 @@ $routes->group('chat', ['namespace' => 'App\Controllers\Chat'], function ($route
$routes->group('produccion', ['namespace' => 'App\Controllers\Produccion'], function ($routes) { $routes->group('produccion', ['namespace' => 'App\Controllers\Produccion'], function ($routes) {
$routes->group('ordentrabajo', ['namespace' => 'App\Controllers\Produccion'], function ($routes) { $routes->group('ordentrabajo', ['namespace' => 'App\Controllers\Produccion'], function ($routes) {
$routes->get('', 'Ordentrabajo::index', ['as' => 'viewOrdenTrabajoIndex']); $routes->get('', 'Ordentrabajo::index', ['as' => 'viewOrdenTrabajoIndex']);
$routes->get('edit/$1', 'Ordentrabajo::edit/$1', ['as' => 'viewOrdenTrabajoEdit']); $routes->get('edit/(:num)', 'Ordentrabajo::edit/$1', ['as' => 'viewOrdenTrabajoEdit']);
$routes->get('summary/(:num)', 'Ordentrabajo::get_orden_trabajo_summary/$1', ['as' => 'getOrdenTrabajoSumary']);
$routes->get('datatable', 'Ordentrabajo::datatable', ['as' => 'datatableOrdenTrabajo']); $routes->get('datatable', 'Ordentrabajo::datatable', ['as' => 'datatableOrdenTrabajo']);

View File

@ -3,6 +3,7 @@
namespace App\Controllers\Produccion; namespace App\Controllers\Produccion;
use App\Controllers\BaseController; use App\Controllers\BaseController;
use App\Models\OrdenTrabajo\OrdenTrabajoModel; use App\Models\OrdenTrabajo\OrdenTrabajoModel;
use App\Services\ProductionService;
use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface; use CodeIgniter\HTTP\ResponseInterface;
use Hermawan\DataTables\DataTable; use Hermawan\DataTables\DataTable;
@ -12,7 +13,7 @@ class Ordentrabajo extends BaseController
{ {
protected $format = 'json'; protected $format = 'json';
protected array $viewData = []; protected array $viewData = [];
protected ProductionService $produccionService;
protected OrdenTrabajoModel $otModel; protected OrdenTrabajoModel $otModel;
protected static $viewPath = 'themes/vuexy/form/produccion/'; protected static $viewPath = 'themes/vuexy/form/produccion/';
protected static $controllerSlug = "orden-trabajo"; protected static $controllerSlug = "orden-trabajo";
@ -22,6 +23,7 @@ class Ordentrabajo extends BaseController
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{ {
$this->otModel = model(OrdenTrabajoModel::class); $this->otModel = model(OrdenTrabajoModel::class);
$this->produccionService = new ProductionService();
parent::initController($request, $response, $logger); parent::initController($request, $response, $logger);
} }
@ -29,8 +31,8 @@ class Ordentrabajo extends BaseController
{ {
// Breadcrumbs // Breadcrumbs
$this->viewData['breadcrumb'] = [ $this->viewData['breadcrumb'] = [
['title' => lang("App.orden_trabajo"), 'route' => "javascript:void(0);", 'active' => false], ['title' => lang("Produccion.ot"), 'route' => "javascript:void(0);", 'active' => false],
['title' => "Table", 'route' => site_url('produccion/ordentrabajo'), 'active' => true] ['title' => lang("Produccion.ots"), 'route' => site_url('produccion/ordentrabajo'), 'active' => true]
]; ];
return view(static::$viewPath . $this->indexRoute, $this->viewData); return view(static::$viewPath . $this->indexRoute, $this->viewData);
} }
@ -40,6 +42,10 @@ class Ordentrabajo extends BaseController
} }
public function get_orden_trabajo_summary($orden_trabajo_id){
$summary = $this->produccionService->init($orden_trabajo_id)->getSummary();
return $this->response->setJSON($summary);
}
public function add() public function add()
{ {
@ -49,9 +55,14 @@ class Ordentrabajo extends BaseController
{ {
// Breadcrumbs // Breadcrumbs
$this->viewData['breadcrumb'] = [ $this->viewData['breadcrumb'] = [
['title' => lang("App.orden_trabajo"), 'route' => "javascript:void(0);", 'active' => false], ['title' => lang("Produccion.ot"), 'route' => "javascript:void(0);", 'active' => false],
['title' => "Table", 'route' => site_url('produccion/ordentrabajo'), 'active' => true] ['title' => $this->otModel->find($orden_trabajo_id)->pedido()->presupuesto()->titulo, 'route' => site_url('produccion/ordentrabajo/edit/'.$orden_trabajo_id), 'active' => true]
]; ];
$this->viewData["modelId"] = $orden_trabajo_id;
$this->produccionService->init($orden_trabajo_id);
$this->viewData["presupuesto"] = $this->produccionService->getPresupuesto();
$this->viewData["cliente"] = $this->produccionService->getCliente();
$this->viewData["ot"] = $this->produccionService->getOrdenTrabajo();
return view(static::$viewPath . $this->editRoute, $this->viewData); return view(static::$viewPath . $this->editRoute, $this->viewData);
} }

View File

@ -27,6 +27,41 @@ class OrdenTrabajoTareasTable extends Migration
"null" => true, "null" => true,
"comment" => "Presupuesto linea asociada a esta tarea. Puede ser NULL porque se podría añadir una tarea manual", "comment" => "Presupuesto linea asociada a esta tarea. Puede ser NULL porque se podría añadir una tarea manual",
], ],
"presupuesto_acabado_id" => [
"type" => "INT",
"unsigned" => true,
"constraint" => 10,
"null" => true,
"comment" => "Presupuesto linea asociada a esta tarea. Puede ser NULL porque se podría añadir una tarea manual",
],
"presupuesto_preimpresion_id" => [
"type" => "INT",
"unsigned" => true,
"constraint" => 10,
"null" => true,
"comment" => "Presupuesto linea asociada a esta tarea. Puede ser NULL porque se podría añadir una tarea manual",
],
"presupuesto_encuadernado_id" => [
"type" => "INT",
"unsigned" => true,
"constraint" => 10,
"null" => true,
"comment" => "Presupuesto linea asociada a esta tarea. Puede ser NULL porque se podría añadir una tarea manual",
],
"presupuesto_manipulado_id" => [
"type" => "INT",
"unsigned" => true,
"constraint" => 10,
"null" => true,
"comment" => "Presupuesto linea asociada a esta tarea. Puede ser NULL porque se podría añadir una tarea manual",
],
"presupuesto_extra_id" => [
"type" => "INT",
"unsigned" => true,
"constraint" => 10,
"null" => true,
"comment" => "Presupuesto linea asociada a esta tarea. Puede ser NULL porque se podría añadir una tarea manual",
],
"nombre" => [ "nombre" => [
"type" => "VARCHAR", "type" => "VARCHAR",
"constraint" => 255, "constraint" => 255,
@ -89,6 +124,12 @@ class OrdenTrabajoTareasTable extends Migration
$this->forge->addPrimaryKey("id"); $this->forge->addPrimaryKey("id");
$this->forge->addForeignKey("orden_trabajo_id","ordenes_trabajo","id","CASCADE","CASCADE"); $this->forge->addForeignKey("orden_trabajo_id","ordenes_trabajo","id","CASCADE","CASCADE");
$this->forge->addForeignKey("presupuesto_linea_id","presupuesto_linea","id"); $this->forge->addForeignKey("presupuesto_linea_id","presupuesto_linea","id");
$this->forge->addForeignKey("presupuesto_acabado_id","presupuesto_acabados","id");
$this->forge->addForeignKey("presupuesto_encuadernado_id","presupuesto_encuadernaciones","id");
$this->forge->addForeignKey("presupuesto_manipulado_id","presupuesto_manipulados","id");
$this->forge->addForeignKey("presupuesto_preimpresion_id","presupuesto_preimpresiones","id");
$this->forge->addForeignKey("presupuesto_extra_id","presupuesto_serviciosExtra","id");
$this->forge->addForeignKey("imposicion_id","lg_imposiciones","id"); $this->forge->addForeignKey("imposicion_id","lg_imposiciones","id");
$this->forge->addForeignKey("maquina_id","lg_maquinas","id"); $this->forge->addForeignKey("maquina_id","lg_maquinas","id");
$this->forge->createTable("orden_trabajo_tareas"); $this->forge->createTable("orden_trabajo_tareas");

View File

@ -2,8 +2,14 @@
namespace App\Entities\Presupuestos; namespace App\Entities\Presupuestos;
use App\Entities\Clientes\ClienteEntity;
use App\Models\Clientes\ClienteModel;
use App\Models\Presupuestos\PresupuestoAcabadosModel;
use App\Models\Presupuestos\PresupuestoEncuadernacionesModel;
use App\Models\Presupuestos\PresupuestoLineaModel; use App\Models\Presupuestos\PresupuestoLineaModel;
use App\Models\Presupuestos\PresupuestoManipuladosModel;
use App\Models\Presupuestos\PresupuestoModel; use App\Models\Presupuestos\PresupuestoModel;
use App\Models\Presupuestos\PresupuestoPreimpresionesModel;
use CodeIgniter\Entity; use CodeIgniter\Entity;
class PresupuestoEntity extends \CodeIgniter\Entity\Entity class PresupuestoEntity extends \CodeIgniter\Entity\Entity
@ -191,5 +197,30 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity
return $q; return $q;
} }
public function cliente() : ClienteEntity
{
$m = model(ClienteModel::class);
return $m->find($this->attributes["cliente_id"]);
}
public function encuadernaciones(): array
{
$m = model(PresupuestoEncuadernacionesModel::class);
return $m->where("presupuesto_id",$this->attributes["id"])->findAll();
}
public function acabados(): array
{
$m = model(PresupuestoAcabadosModel::class);
return $m->where("presupuesto_id",$this->attributes["id"])->findAll();
}
public function preimpresiones(): array
{
$m = model(PresupuestoPreimpresionesModel::class);
return $m->where("presupuesto_id",$this->attributes["id"])->findAll();
}
public function manipulados(): array
{
$m = model(PresupuestoManipuladosModel::class);
return $m->where("presupuesto_id",$this->attributes["id"])->findAll();
}
} }

View File

@ -2,8 +2,10 @@
namespace App\Entities\Produccion; namespace App\Entities\Produccion;
use App\Controllers\Produccion\Ordentrabajo;
use App\Database\Migrations\OrdenTrabajoDatesTable; use App\Database\Migrations\OrdenTrabajoDatesTable;
use App\Entities\Pedidos\PedidoEntity; use App\Entities\Pedidos\PedidoEntity;
use App\Models\OrdenTrabajo\OrdenTrabajoDate;
use App\Models\OrdenTrabajo\OrdenTrabajoTarea; use App\Models\OrdenTrabajo\OrdenTrabajoTarea;
use App\Models\Pedidos\PedidoModel; use App\Models\Pedidos\PedidoModel;
use CodeIgniter\Entity\Entity; use CodeIgniter\Entity\Entity;
@ -50,12 +52,21 @@ class OrdenTrabajoEntity extends Entity
* *
* @return PedidoEntity * @return PedidoEntity
*/ */
public function pedido(): PedidoEntity public function pedido(): ?PedidoEntity
{ {
$m = model(PedidoModel::class); $m = model(PedidoModel::class);
return $m->find($this->attributes["pedido_id"]); return $m->find($this->attributes["pedido_id"]);
} }
public function dates(): ?OrdenTrabajoDateEntity
{
$m = model(OrdenTrabajoDate::class);
return $m->find($this->attributes["id"]);
}
public function users(): ?OrdenTrabajoUserEntity
{
return null;
// return $m->find($this->attributes["id"])
}
/** /**
* Almacena en la tabla `orden_trabajo_dates` las fechas correspondientes del pedido. * Almacena en la tabla `orden_trabajo_dates` las fechas correspondientes del pedido.
* Se almacenan en una tabla externa porque puede haber modificaciones de estas fechas * Se almacenan en una tabla externa porque puede haber modificaciones de estas fechas

View File

@ -18,5 +18,31 @@ return [
"maquina_actual" => "Máquina actual", "maquina_actual" => "Máquina actual",
"tiempo_estimado" => "Tiempo estimado", "tiempo_estimado" => "Tiempo estimado",
"tiempo" => "Tiempo" "tiempo" => "Tiempo"
] ],
"ferro_ok" => "Ferro ok",
"envio" => "Envío",
"ot" => "Orden trabajo",
"ots" => "Órdenes trabajo",
"tiempo_procesamiento" => "Tiempo procesamiento",
"fecha_impresion" => "Fecha impresión",
"fecha_encuadernado" => "Fecha encuadernado",
"fecha_entrega_externo" => "Fecha entrega externo",
"fecha_entrega_real" => "Fecha entrega real",
"fecha_entrega_estimada" => "Fecha entrega estimada",
"formato" => "Formato",
"paginas" => "Páginas",
"tirada" => "Tirada",
"merma" => "Merma",
"pendiente_ferro" => "Pendiente ferro",
"ferro_cliente" => "Ferro cliente",
"impresion_color" => "Impresión color",
"portada" => "portada",
"plakene_traslucido" => "Plakene traslúcido",
"plastificado_mate" => "Plastificado mate",
"espiral" => "Espiral",
"embalaje" => "Embalaje",
"tiempo_consumido" => "Tiempo consumido",
"tiempo_estimado" => "Tiempo estimado",
"finalizar_orden" => "Finalizar orden"
]; ];

View File

@ -3,6 +3,7 @@
namespace App\Services; namespace App\Services;
use App\Database\Migrations\OrdenTrabajoUsers; use App\Database\Migrations\OrdenTrabajoUsers;
use App\Entities\Clientes\ClienteEntity;
use App\Entities\Configuracion\Maquina; use App\Entities\Configuracion\Maquina;
use App\Entities\Pedidos\PedidoEntity; use App\Entities\Pedidos\PedidoEntity;
use App\Entities\Presupuestos\PresupuestoEntity; use App\Entities\Presupuestos\PresupuestoEntity;
@ -23,6 +24,7 @@ class ProductionService extends BaseService
protected OrdenTrabajoModel $otModel; protected OrdenTrabajoModel $otModel;
protected OrdenTrabajoTarea $otTarea; protected OrdenTrabajoTarea $otTarea;
protected OrdenTrabajoDate $otDate; protected OrdenTrabajoDate $otDate;
protected OrdenTrabajoEntity $ot;
/** /**
* Pedido Entity * Pedido Entity
@ -37,6 +39,14 @@ class ProductionService extends BaseService
*/ */
protected PresupuestoEntity $presupuesto; protected PresupuestoEntity $presupuesto;
public function init(int $orden_trabajo_id): self
{
$this->otModel = model(OrdenTrabajoModel::class);
$this->ot = $this->otModel->find($orden_trabajo_id);
$pedido = $this->ot->pedido();
$this->setPedido($pedido);
return $this;
}
/** /**
* Establece el pedido sobre el que se va a trabajar * Establece el pedido sobre el que se va a trabajar
* *
@ -66,6 +76,14 @@ class ProductionService extends BaseService
{ {
return $this->presupuesto; return $this->presupuesto;
} }
public function getCliente(): ClienteEntity
{
return $this->presupuesto->cliente();
}
public function getOrdenTrabajo(): OrdenTrabajoEntity
{
return $this->ot;
}
/** /**
* Crea una instancia de la orden de trabajo * Crea una instancia de la orden de trabajo
* *
@ -139,7 +157,7 @@ class ProductionService extends BaseService
$ot_tareas["tiempo_estimado"] = $p_linea->horas_maquina; $ot_tareas["tiempo_estimado"] = $p_linea->horas_maquina;
$ot_tareas["tiempo_real"] = $p_linea->horas_maquina; //? Tiempo real se inserta manual? $ot_tareas["tiempo_real"] = $p_linea->horas_maquina; //? Tiempo real se inserta manual?
$insert_query_result = $this->otTarea->insert($ot_tareas); $insert_query_result = $this->otTarea->insert($ot_tareas);
$ot_tareas = []; $ot_tareas = [];
} }
return $insert_query_result; return $insert_query_result;
} }
@ -199,4 +217,35 @@ class ProductionService extends BaseService
->orderBy("orden_trabajo_tareas.orden", "DESC"); ->orderBy("orden_trabajo_tareas.orden", "DESC");
return $q; return $q;
} }
/**
* Get a summary from ot with the following structure
*
*
*
* @return array
* ```php
* [
* "ot" => OrdenTrabajoEntity
* "dates" => OrdenTrabajoDateEntity
* "tasks" => array<OrdenTrabajoTareaEntity>
* ];
* ```
*/
public function getSummary(): array
{
$summary = [
"ot" => $this->ot,
"dates" => $this->ot->dates(),
"tasks" => $this->ot->tareas(),
"acabados" => $this->presupuesto->acabados(),
"preimpresiones" => $this->presupuesto->preimpresiones(),
"manipulados" => $this->presupuesto->manipulados(),
"encuadernaciones" => $this->presupuesto->encuadernaciones(),
];
return $summary;
}
} }

View File

@ -12,33 +12,33 @@
<div class="row"> <div class="row">
<!-- Date 1--> <!-- Date 1-->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-fecha-entrega" class="form-label"><?= @lang("ot.tiempo_procesamiento") ?></label> <label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.tiempo_procesamiento") ?></label>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-tiempo-procesamiento" disabled> <input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-tiempo-procesamiento" disabled>
</div> </div>
<!-- Date 2--> <!-- Date 2-->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-fecha-entrega" class="form-label"><?= @lang("ot.fecha_impresion") ?></label> <label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.fecha_impresion") ?></label>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-impresion"> <input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-impresion">
</div> </div>
<!-- Date 2--> <!-- Date 2-->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-fecha-entrega" class="form-label"><?= @lang("ot.fecha_encuadernado") ?></label> <label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.fecha_encuadernado") ?></label>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-encuadernado"> <input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-encuadernado">
</div> </div>
<!-- Date 4--> <!-- Date 4-->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-fecha-entrega" class="form-label"><?= @lang("ot.fecha_entrega_externo") ?></label> <label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.fecha_entrega_externo") ?></label>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-entrega-externo"> <input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-entrega-externo">
</div> </div>
<!-- Date 5--> <!-- Date 5-->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-fecha-entrega" class="form-label"><?= @lang("ot.fecha_entrega_real") ?></label> <label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.fecha_entrega_real") ?></label>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-entrega-real"> <input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-entrega-real">
</div> </div>
<!-- Date 6--> <!-- Date 6-->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-fecha-entrega" class="form-label"><?= @lang("fecha_entrega_estimada") ?></label> <label for="ot-fecha-entrega" class="form-label"><?= @lang("fecha_entrega_estimada") ?></label>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-entrega-estimada"> <input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-entrega-estimada">
</div> </div>
</div> </div>
</div> </div>

View File

@ -12,27 +12,27 @@
<div class="row"> <div class="row">
<!-- Detail 1--> <!-- Detail 1-->
<div class="col-xs-12 col-md-4 col-lg-2 mb-2"> <div class="col-xs-12 col-md-4 col-lg-2 mb-2">
<label for="ot-formato" class="form-label"><?= @lang("ot.formato") ?></label> <label for="ot-formato" class="form-label"><?= @lang("Produccion.formato") ?></label>
<input type="text" class="form-control" id="ot-formato" disabled> <input type="text" class="form-control" id="ot-formato" disabled>
</div> </div>
<!-- Detail 2--> <!-- Detail 2-->
<div class="col-xs-12 col-md-4 col-lg-2 mb-2"> <div class="col-xs-12 col-md-4 col-lg-2 mb-2">
<label for="ot-paginas" class="form-label"><?= @lang("ot.paginas") ?></label> <label for="ot-paginas" class="form-label"><?= @lang("Produccion.paginas") ?></label>
<input type="text" class="form-control" id="ot-paginas" disabled> <input type="text" class="form-control" id="ot-paginas" disabled>
</div> </div>
<!-- Detail 3--> <!-- Detail 3-->
<div class="col-xs-12 col-md-4 col-lg-2 mb-2"> <div class="col-xs-12 col-md-4 col-lg-2 mb-2">
<label for="ot-solapa" class="form-label"><?= @lang("ot.solapa") ?></label> <label for="ot-solapa" class="form-label"><?= @lang("Produccion.solapa") ?></label>
<input type="text" class="form-control" id="ot-solapa" disabled> <input type="text" class="form-control" id="ot-solapa" disabled>
</div> </div>
<!-- Detail 4--> <!-- Detail 4-->
<div class="col-xs-12 col-md-4 col-lg-2 mb-2"> <div class="col-xs-12 col-md-4 col-lg-2 mb-2">
<label for="ot-tirada" class="form-label"><?= @lang("ot.tirada") ?></label> <label for="ot-tirada" class="form-label"><?= @lang("Produccion.tirada") ?></label>
<input type="text" class="form-control" id="ot-tirada" disabled> <input type="text" class="form-control" id="ot-tirada" disabled>
</div> </div>
<!-- Detail 5--> <!-- Detail 5-->
<div class="col-xs-12 col-md-4 col-lg-2 mb-2"> <div class="col-xs-12 col-md-4 col-lg-2 mb-2">
<label for="ot-merma" class="form-label"><?= @lang("ot.merma") ?></label> <label for="ot-merma" class="form-label"><?= @lang("Produccion.merma") ?></label>
<input type="text" class="form-control" id="ot-merma" disabled> <input type="text" class="form-control" id="ot-merma" disabled>
</div> </div>
</div> </div>

View File

@ -20,72 +20,72 @@
<div class="row"> <div class="row">
<!-- Progress --> <!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-pendiente-ferro" class="form-label"><?= @lang("ot.pendiente_ferro") ?></label> <label for="ot-pendiente-ferro" class="form-label"><?= @lang("Produccion.pendiente_ferro") ?></label>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-pendiente-ferro"> <input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-pendiente-ferro">
</div> </div>
<!-- Progress --> <!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-ferro-cliente" class="form-label"><?= @lang("ot.ferro_cliente") ?></label> <label for="ot-ferro-cliente" class="form-label"><?= @lang("Produccion.ferro_cliente") ?></label>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-ferro-cliente"> <input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-ferro-cliente">
</div> </div>
<!-- Progress --> <!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-ferro-ok" class="form-label"><?= @lang("ot.ferro_ok") ?></label> <label for="ot-ferro-ok" class="form-label"><?= @lang("Produccion.ferro_ok") ?></label>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-ferro-ok"> <input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-ferro-ok">
</div> </div>
<!-- Progress --> <!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-plakene-traslucido" class="form-label"><?= @lang("ot.plakene_traslucido") ?></label> <label for="ot-plakene-traslucido" class="form-label"><?= @lang("Produccion.plakene_traslucido") ?></label>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-plakene-traslucido"> <input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-plakene-traslucido">
</div> </div>
<!-- Progress --> <!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-impresion-color" class="form-label"><?= @lang("ot.impresion_color") ?></label> <label for="ot-impresion-color" class="form-label"><?= @lang("Produccion.impresion_color") ?></label>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-impresion-color"> <input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-impresion-color">
</div> </div>
<!-- Progress --> <!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-portada" class="form-label"><?= @lang("ot.portada") ?></label> <label for="ot-portada" class="form-label"><?= @lang("Produccion.portada") ?></label>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-portada"> <input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-portada">
</div> </div>
<!-- Progress --> <!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-plastificado-mate" class="form-label"><?= @lang("ot.plastificado_mate") ?></label> <label for="ot-plastificado-mate" class="form-label"><?= @lang("Produccion.plastificado_mate") ?></label>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-plastificado-mate"> <input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-plastificado-mate">
</div> </div>
<!-- Progress --> <!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-prep-guillotina" class="form-label"><?= @lang("ot.portada") ?></label> <label for="ot-prep-guillotina" class="form-label"><?= @lang("Produccion.portada") ?></label>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-prep-guillotina"> <input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-prep-guillotina">
</div> </div>
<!-- Progress --> <!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-espiral" class="form-label"><?= @lang("ot.espiral") ?></label> <label for="ot-espiral" class="form-label"><?= @lang("Produccion.espiral") ?></label>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-espiral"> <input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-espiral">
</div> </div>
<!-- Progress --> <!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-embalaje" class="form-label"><?= @lang("ot.embalaje") ?></label> <label for="ot-embalaje" class="form-label"><?= @lang("Produccion.embalaje") ?></label>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-embalaje"> <input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-embalaje">
</div> </div>
<!-- Progress --> <!-- Progress -->
<div class="col-xs-12 col-md-4 col-lg-4 mb-2"> <div class="col-xs-12 col-md-4 col-lg-4 mb-2">
<label for="ot-envio" class="form-label"><?= @lang("ot.envio") ?></label> <label for="ot-envio" class="form-label"><?= @lang("Produccion.envio") ?></label>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-envio"> <input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-envio">
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="row"> <div class="row">
<p><?= @lang("ot.tiempo_estimado") ?> :</p> <p><?= @lang("Produccion.tiempo_estimado") ?> :</p>
</div> </div>
<div class="row"> <div class="row">
<p><?= @lang("ot.tiempo_consumido") ?> :</p> <p><?= @lang("Produccion.tiempo_consumido") ?> :</p>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<div class="d-grip"> <div class="d-grip">
<button type="button" class="btn btn-primary btn-block w-100"><?=@lang("ot.finalizar_orden")?></button> <button type="button" class="btn btn-primary btn-block w-100"><?=@lang("Produccion.finalizar_orden")?></button>
</div> </div>
</div> </div>
</div> </div>

View File

@ -4,75 +4,109 @@
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?> <?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?> <?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?> <?= $this->section('content'); ?>
<div class="row"> <div id="ot-edit" data-id="<?= $modelId ?>">
<div class="col-md-12"> <div class="row">
<div class="alert alert-primary" role="alert"> <div class="col-md-12">
<div class="row"> <div class="alert alert-primary" role="alert">
<div class="col-md-4"> <div class="row">
<div class="col-md-10">
<div class="d-flex flex-row bd-highlight"> <div class="d-flex flex-row bd-highlight gap-2">
<div class="p-2 bd-highlight"> <div class="bd-highlight">
<span><i class="tf-icons ti-md ti ti-building-factory-2"></i></span> <h4>OT : </h4>
</div>
<div class="bd-highlight">
<h4><?= $ot->id ?></h4>
</div>
</div> </div>
<div class="p-2 bd-highlight"> </div>
<h4>Title</h4> <div class="col-md-2">
<div class="d-flex flex-row bd-highlight justify-content-end">
<h4><?= $ot->progreso ?> %</h4>
</div> </div>
</div> </div>
</div> </div>
<div class="col-md-8"> <div class="row">
<div class="d-flex flex-row bd-highlight justify-content-end"> <div class="col-md-10">
<button class="btn btn-sm btn-primary">Presupuesto</button>
<div class="d-flex flex-row bd-highlight gap-2">
<div class="bd-highlight">
<span><i class="tf-icons ti-md ti ti-building-factory-2"></i></span>
</div>
<div class="bd-highlight">
<h4><?= $presupuesto->titulo ?></h4>
</div>
</div>
</div>
<div class="col-md-2">
<div class="d-flex flex-row bd-highlight justify-content-end">
<button class="btn btn-sm btn-primary w-100">Presupuesto</button>
</div>
</div>
</div>
<div class="row">
<div class="col-md-10">
<div class="d-flex flex-row bd-highlight">
<div class="bd-highlight">
<span><i class="tf-icons ti-md ti ti-user"></i></span>
</div>
<div>
<h4><?= $cliente->nombre ?></h4>
</div>
</div>
</div>
<div class="col-md-2 ">
<div class="d-flex flex-row bd-highlight justify-content-end">
<button class="btn btn-sm btn-primary w-100">Pedido</button>
</div>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> </div><!--//.col -->
<div class="col-md-4">
<div class="d-flex flex-row bd-highlight">
<div class="p-1 bd-highlight">
<h4>100%</h4>
</div>
<div class="p-1 bd-highlight">
<h4>Cliente</h4>
</div>
</div>
</div> </div><!--//.row -->
<div class="col-md-8"> <div class="row">
<div class="d-flex flex-row bd-highlight justify-content-end"> <form id="ot-edit-form">
<button class="btn btn-sm btn-primary">Pedido</button> <div class="col-md-12">
</div> <?= view("themes/vuexy/form/produccion/ot/otDates") ?>
</div> </div>
<div class="col-md-12">
<?= view("themes/vuexy/form/produccion/ot/otDetails") ?>
</div>
<div class="col-md-12">
<?= view("themes/vuexy/form/produccion/ot/otProgress") ?>
</div>
<div class="col-md-12">
<?= view("themes/vuexy/form/produccion/ot/otTask") ?>
</div>
<div class="col-md-12">
<?= view("themes/vuexy/form/produccion/ot/otCosts") ?>
</div>
<div class="col-md-12">
<?= view("themes/vuexy/form/produccion/ot/otComments") ?>
</div>
</form>
<div class="col-md-12 mt-3">
<div class="d-grip gap-2">
<button type="button" class="btn btn-primary btn-block w-100 mb-1"><?= @lang("Produccion.imprimir_ferro") ?></button>
<button type="button" class="btn btn-secondary btn-block w-100 mb-1"><?= @lang("Produccion.imprimir_codigo_safekat") ?></button>
</div> </div>
</div> </div>
</div><!--//.col -->
</div><!--//.row -->
<div class="row">
<div class="col-md-12">
<?= view("themes/vuexy/form/produccion/ot/otDates") ?>
</div>
<div class="col-md-12">
<?= view("themes/vuexy/form/produccion/ot/otDetails") ?>
</div>
<div class="col-md-12">
<?= view("themes/vuexy/form/produccion/ot/otProgress") ?>
</div>
<div class="col-md-12">
<?= view("themes/vuexy/form/produccion/ot/otTask") ?>
</div>
<div class="col-md-12">
<?= view("themes/vuexy/form/produccion/ot/otCosts") ?>
</div>
<div class="col-md-12">
<?= view("themes/vuexy/form/produccion/ot/otComments") ?>
</div>
<div class="col-md-12 mt-3">
<div class="d-grip gap-2">
<button type="button" class="btn btn-primary btn-block w-100 mb-1"><?= @lang("ot.imprimir_ferro") ?></button>
<button type="button" class="btn btn-secondary btn-block w-100 mb-1"><?= @lang("ot.imprimir_codigo_safekat") ?></button>
</div>
</div> </div>
</div> </div>
<?= $this->endSection() ?>
<?= $this->section('additionalExternalJs') ?>
<script src="<?= site_url("themes/vuexy/vendor/libs/dropzone/dropzone.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/bs-stepper/bs-stepper.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/FormValidation.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/Bootstrap5.min.js") ?>"></script>
<script src="<?= site_url("themes/vuexy/vendor/libs/formvalidation/dist/js/plugins/AutoFocus.min.js") ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/autosize/autosize.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/two/two.js') ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/perfect-scrollbar/perfect-scrollbar.js') ?>"></script>
<script type="module" src="<?= site_url('assets/js/safekat/pages/produccion/edit.js') ?>"></script>
<?= $this->endSection() ?> <?= $this->endSection() ?>

View File

@ -0,0 +1,7 @@
import OrdenTrabajo from "./ot.js";
$(function() {
const ot = new OrdenTrabajo($("#ot-edit"))
ot.init()
})

View File

@ -0,0 +1,31 @@
import Ajax from "../../components/ajax.js"
class OrdenTrabajo
{
constructor(domItem) {
this.item = domItem
this.otForm = this.item.find("#ot-edit-form")
this.modelId = this.item.data("id");
}
init(){
console.log(this.getFormData())
}
getFormData() {
let data = {}
this.otForm.serializeArray().forEach((e) => {
data[e.name] = e.value
}
)
return data
}
_handleGetData(){
const ajax = new Ajax(`/produccion/ordentrabajo/${this.modelId}`)
}
}
export default OrdenTrabajo;