nuevas correciones al formulario y esquema base de datos para osp
This commit is contained in:
@@ -22,7 +22,6 @@ import {
|
||||
DialogTitle,
|
||||
} from '@repo/shadcn/components/ui/dialog';
|
||||
import { ScrollArea } from '@repo/shadcn/components/ui/scroll-area';
|
||||
import { Separator } from '@repo/shadcn/components/ui/separator';
|
||||
import {
|
||||
ExternalLink,
|
||||
Factory,
|
||||
@@ -129,10 +128,7 @@ export function TrainingViewModal({
|
||||
<div className="space-y-8">
|
||||
{/* 1. Datos de la Visita */}
|
||||
<Section title="Datos de la Visita">
|
||||
<DetailItem
|
||||
label="Coordinador"
|
||||
value={`${data.firstname} ${data.lastname}`}
|
||||
/>
|
||||
<DetailItem label="Coordinador" value={data.coorFullName} />
|
||||
<DetailItem label="Teléfono Coord." value={data.coorPhone} />
|
||||
<DetailItem
|
||||
label="Fecha Visita"
|
||||
@@ -209,7 +205,11 @@ export function TrainingViewModal({
|
||||
className="gap-2"
|
||||
>
|
||||
<a
|
||||
href={data.ospGoogleMapsLink}
|
||||
href={
|
||||
data.ospGoogleMapsLink.startsWith('http')
|
||||
? data.ospGoogleMapsLink
|
||||
: `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(data.ospGoogleMapsLink)}`
|
||||
}
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
@@ -229,80 +229,36 @@ export function TrainingViewModal({
|
||||
<CardHeader className="pb-3">
|
||||
<CardTitle className="text-lg flex items-center gap-2">
|
||||
<Package className="h-5 w-5" />
|
||||
Productos y Mano de Obra
|
||||
Productos Registrados
|
||||
<Badge variant="secondary" className="ml-2">
|
||||
{data.productList?.length || 0}
|
||||
</Badge>
|
||||
</CardTitle>
|
||||
</CardHeader>
|
||||
<CardContent className="grid gap-4">
|
||||
{data.productList?.map((prod: any, idx: number) => (
|
||||
<div
|
||||
key={idx}
|
||||
className="bg-muted/40 p-4 rounded-lg border text-sm"
|
||||
>
|
||||
<div className="flex justify-between items-start mb-2">
|
||||
<h4 className="font-bold text-base text-primary">
|
||||
{prod.productName}
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
{data.productList?.map((prod: any, idx: number) => (
|
||||
<div
|
||||
key={idx}
|
||||
className="bg-muted/40 p-4 rounded-lg border text-sm"
|
||||
>
|
||||
<h4 className="font-bold text-base text-primary mb-2">
|
||||
{prod.description}
|
||||
</h4>
|
||||
<Badge variant="outline">
|
||||
Mano de obra:{' '}
|
||||
{Number(prod.menCount || 0) +
|
||||
Number(prod.womenCount || 0)}
|
||||
</Badge>
|
||||
<div className="grid grid-cols-3 gap-2">
|
||||
<DetailItem label="Diario" value={prod.dailyCount} />
|
||||
<DetailItem
|
||||
label="Semanal"
|
||||
value={prod.weeklyCount}
|
||||
/>
|
||||
<DetailItem
|
||||
label="Mensual"
|
||||
value={prod.monthlyCount}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<p className="text-muted-foreground mb-3">
|
||||
{prod.description}
|
||||
</p>
|
||||
|
||||
<div className="grid grid-cols-2 md:grid-cols-4 gap-4 mb-3">
|
||||
<DetailItem label="Diario" value={prod.dailyCount} />
|
||||
<DetailItem label="Semanal" value={prod.weeklyCount} />
|
||||
<DetailItem label="Mensual" value={prod.monthlyCount} />
|
||||
<DetailItem
|
||||
label="Hombres / Mujeres"
|
||||
value={`${prod.menCount || 0} / ${prod.womenCount || 0}`}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* Detalles de distribución si existen */}
|
||||
{(prod.internalQuantity || prod.externalQuantity) && (
|
||||
<>
|
||||
<Separator className="my-2" />
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
{prod.internalQuantity && (
|
||||
<div>
|
||||
<span className="text-xs font-bold text-muted-foreground block mb-1">
|
||||
DISTRIBUCIÓN INTERNA
|
||||
</span>
|
||||
<p>
|
||||
Cant: {prod.internalQuantity}{' '}
|
||||
{prod.internalUnit}
|
||||
</p>
|
||||
<p className="text-xs text-muted-foreground">
|
||||
{prod.internalDescription}
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
{prod.externalQuantity && (
|
||||
<div>
|
||||
<span className="text-xs font-bold text-muted-foreground block mb-1">
|
||||
EXPORTACIÓN ({prod.externalCountry})
|
||||
</span>
|
||||
<p>
|
||||
Cant: {prod.externalQuantity}{' '}
|
||||
{prod.externalUnit}
|
||||
</p>
|
||||
<p className="text-xs text-muted-foreground">
|
||||
{prod.externalDescription}
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
))}
|
||||
))}
|
||||
</div>
|
||||
{(!data.productList || data.productList.length === 0) && (
|
||||
<p className="text-sm text-muted-foreground italic">
|
||||
No hay productos registrados.
|
||||
@@ -311,6 +267,64 @@ export function TrainingViewModal({
|
||||
</CardContent>
|
||||
</Card>
|
||||
|
||||
{/* DISTRIBUCIÓN, EXPORTACIÓN Y MANO DE OBRA */}
|
||||
<Section title="Distribución, Exportación y Mano de Obra">
|
||||
<div className="col-span-full grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||
<div className="space-y-4">
|
||||
<h4 className="text-sm font-bold border-b pb-1">
|
||||
Distribución Interna
|
||||
</h4>
|
||||
<DetailItem
|
||||
label="Zona de Distribución"
|
||||
value={data.internalDistributionZone}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="space-y-4">
|
||||
<h4 className="text-sm font-bold border-b pb-1">
|
||||
Mano de Obra
|
||||
</h4>
|
||||
<div className="grid grid-cols-2 gap-4">
|
||||
<DetailItem label="Mujeres" value={data.womenCount} />
|
||||
<DetailItem label="Hombres" value={data.menCount} />
|
||||
<DetailItem
|
||||
label="Total"
|
||||
value={
|
||||
Number(data.womenCount || 0) +
|
||||
Number(data.menCount || 0)
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="space-y-4">
|
||||
<h4 className="text-sm font-bold border-b pb-1 flex items-center gap-2">
|
||||
Exportación <BooleanBadge value={data.isExporting} />
|
||||
</h4>
|
||||
{data.isExporting && (
|
||||
<div className="space-y-3">
|
||||
<DetailItem label="País" value={data.externalCountry} />
|
||||
<DetailItem label="Ciudad" value={data.externalCity} />
|
||||
<DetailItem
|
||||
label="Descripción"
|
||||
value={data.externalDescription}
|
||||
/>
|
||||
<div className="grid grid-cols-2 gap-2">
|
||||
<DetailItem
|
||||
label="Cantidad"
|
||||
value={data.externalQuantity}
|
||||
/>
|
||||
<DetailItem
|
||||
label="Unidad"
|
||||
value={data.externalUnit}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</Section>
|
||||
|
||||
{/* EQUIPAMIENTO Y PRODUCCIÓN */}
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||
<Card>
|
||||
|
||||
Reference in New Issue
Block a user