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('ordentrabajo', ['namespace' => 'App\Controllers\Produccion'], function ($routes) {
$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']);

View File

@ -3,6 +3,7 @@
namespace App\Controllers\Produccion;
use App\Controllers\BaseController;
use App\Models\OrdenTrabajo\OrdenTrabajoModel;
use App\Services\ProductionService;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Hermawan\DataTables\DataTable;
@ -12,7 +13,7 @@ class Ordentrabajo extends BaseController
{
protected $format = 'json';
protected array $viewData = [];
protected ProductionService $produccionService;
protected OrdenTrabajoModel $otModel;
protected static $viewPath = 'themes/vuexy/form/produccion/';
protected static $controllerSlug = "orden-trabajo";
@ -22,6 +23,7 @@ class Ordentrabajo extends BaseController
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
$this->otModel = model(OrdenTrabajoModel::class);
$this->produccionService = new ProductionService();
parent::initController($request, $response, $logger);
}
@ -29,8 +31,8 @@ class Ordentrabajo extends BaseController
{
// Breadcrumbs
$this->viewData['breadcrumb'] = [
['title' => lang("App.orden_trabajo"), 'route' => "javascript:void(0);", 'active' => false],
['title' => "Table", 'route' => site_url('produccion/ordentrabajo'), 'active' => true]
['title' => lang("Produccion.ot"), 'route' => "javascript:void(0);", 'active' => false],
['title' => lang("Produccion.ots"), 'route' => site_url('produccion/ordentrabajo'), 'active' => true]
];
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()
{
@ -49,9 +55,14 @@ class Ordentrabajo extends BaseController
{
// Breadcrumbs
$this->viewData['breadcrumb'] = [
['title' => lang("App.orden_trabajo"), 'route' => "javascript:void(0);", 'active' => false],
['title' => "Table", 'route' => site_url('produccion/ordentrabajo'), 'active' => true]
['title' => lang("Produccion.ot"), 'route' => "javascript:void(0);", 'active' => false],
['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);
}

View File

@ -27,6 +27,41 @@ class OrdenTrabajoTareasTable extends Migration
"null" => true,
"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" => [
"type" => "VARCHAR",
"constraint" => 255,
@ -89,6 +124,12 @@ class OrdenTrabajoTareasTable extends Migration
$this->forge->addPrimaryKey("id");
$this->forge->addForeignKey("orden_trabajo_id","ordenes_trabajo","id","CASCADE","CASCADE");
$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("maquina_id","lg_maquinas","id");
$this->forge->createTable("orden_trabajo_tareas");

View File

@ -2,8 +2,14 @@
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\PresupuestoManipuladosModel;
use App\Models\Presupuestos\PresupuestoModel;
use App\Models\Presupuestos\PresupuestoPreimpresionesModel;
use CodeIgniter\Entity;
class PresupuestoEntity extends \CodeIgniter\Entity\Entity
@ -191,5 +197,30 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity
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;
use App\Controllers\Produccion\Ordentrabajo;
use App\Database\Migrations\OrdenTrabajoDatesTable;
use App\Entities\Pedidos\PedidoEntity;
use App\Models\OrdenTrabajo\OrdenTrabajoDate;
use App\Models\OrdenTrabajo\OrdenTrabajoTarea;
use App\Models\Pedidos\PedidoModel;
use CodeIgniter\Entity\Entity;
@ -50,12 +52,21 @@ class OrdenTrabajoEntity extends Entity
*
* @return PedidoEntity
*/
public function pedido(): PedidoEntity
public function pedido(): ?PedidoEntity
{
$m = model(PedidoModel::class);
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.
* 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",
"tiempo_estimado" => "Tiempo estimado",
"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;
use App\Database\Migrations\OrdenTrabajoUsers;
use App\Entities\Clientes\ClienteEntity;
use App\Entities\Configuracion\Maquina;
use App\Entities\Pedidos\PedidoEntity;
use App\Entities\Presupuestos\PresupuestoEntity;
@ -23,6 +24,7 @@ class ProductionService extends BaseService
protected OrdenTrabajoModel $otModel;
protected OrdenTrabajoTarea $otTarea;
protected OrdenTrabajoDate $otDate;
protected OrdenTrabajoEntity $ot;
/**
* Pedido Entity
@ -37,6 +39,14 @@ class ProductionService extends BaseService
*/
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
*
@ -66,6 +76,14 @@ class ProductionService extends BaseService
{
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
*
@ -139,7 +157,7 @@ class ProductionService extends BaseService
$ot_tareas["tiempo_estimado"] = $p_linea->horas_maquina;
$ot_tareas["tiempo_real"] = $p_linea->horas_maquina; //? Tiempo real se inserta manual?
$insert_query_result = $this->otTarea->insert($ot_tareas);
$ot_tareas = [];
$ot_tareas = [];
}
return $insert_query_result;
}
@ -199,4 +217,35 @@ class ProductionService extends BaseService
->orderBy("orden_trabajo_tareas.orden", "DESC");
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">
<!-- Date 1-->
<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>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-tiempo-procesamiento" disabled>
<label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.tiempo_procesamiento") ?></label>
<input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-tiempo-procesamiento" disabled>
</div>
<!-- Date 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>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-impresion">
<label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.fecha_impresion") ?></label>
<input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-impresion">
</div>
<!-- Date 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>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-encuadernado">
<label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.fecha_encuadernado") ?></label>
<input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-encuadernado">
</div>
<!-- Date 4-->
<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>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-entrega-externo">
<label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.fecha_entrega_externo") ?></label>
<input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-entrega-externo">
</div>
<!-- Date 5-->
<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>
<input type="button" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-entrega-real">
<label for="ot-fecha-entrega" class="form-label"><?= @lang("Produccion.fecha_entrega_real") ?></label>
<input type="text" class="form-control" placeholder="YYYY-MM-DD" id="ot-fecha-entrega-real">
</div>
<!-- Date 6-->
<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>
<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>

View File

@ -12,27 +12,27 @@
<div class="row">
<!-- Detail 1-->
<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>
</div>
<!-- Detail 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>
</div>
<!-- Detail 3-->
<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>
</div>
<!-- Detail 4-->
<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>
</div>
<!-- Detail 5-->
<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>
</div>
</div>

View File

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

View File

@ -4,75 +4,109 @@
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<div class="row">
<div class="col-md-12">
<div class="alert alert-primary" role="alert">
<div class="row">
<div class="col-md-4">
<div class="d-flex flex-row bd-highlight">
<div class="p-2 bd-highlight">
<span><i class="tf-icons ti-md ti ti-building-factory-2"></i></span>
<div id="ot-edit" data-id="<?= $modelId ?>">
<div class="row">
<div class="col-md-12">
<div class="alert alert-primary" role="alert">
<div class="row">
<div class="col-md-10">
<div class="d-flex flex-row bd-highlight gap-2">
<div class="bd-highlight">
<h4>OT : </h4>
</div>
<div class="bd-highlight">
<h4><?= $ot->id ?></h4>
</div>
</div>
<div class="p-2 bd-highlight">
<h4>Title</h4>
</div>
<div class="col-md-2">
<div class="d-flex flex-row bd-highlight justify-content-end">
<h4><?= $ot->progreso ?> %</h4>
</div>
</div>
</div>
<div class="col-md-8">
<div class="d-flex flex-row bd-highlight justify-content-end">
<button class="btn btn-sm btn-primary">Presupuesto</button>
<div class="row">
<div class="col-md-10">
<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 class="row">
<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><!--//.col -->
</div>
<div class="col-md-8">
<div class="d-flex flex-row bd-highlight justify-content-end">
<button class="btn btn-sm btn-primary">Pedido</button>
</div>
</div>
</div><!--//.row -->
<div class="row">
<form id="ot-edit-form">
<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>
</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><!--//.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>
<?= $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() ?>

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;