-- Guias de remision electronica (GRE remitente) para abisfact
-- Las guias se guardan en facturacion_comprobantes con tipo_comprobante 09;
-- esta tabla guarda los datos particulares del traslado.

CREATE TABLE IF NOT EXISTS facturacion_guia_catalogos (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    categoria VARCHAR(30) NOT NULL COMMENT 'MOTIVO_TRASLADO | MODALIDAD_TRANSPORTE',
    codigo VARCHAR(5) NOT NULL,
    descripcion VARCHAR(180) NOT NULL,
    estado TINYINT(1) NOT NULL DEFAULT 1,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NULL,
    deleted_at DATETIME NULL,
    UNIQUE KEY uq_fact_guia_cat (categoria, codigo),
    KEY idx_fact_guia_cat_categoria (categoria)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT IGNORE INTO facturacion_guia_catalogos
    (categoria, codigo, descripcion, estado, created_at)
VALUES
    ('MODALIDAD_TRANSPORTE', '01', 'Publico', 1, NOW()),
    ('MODALIDAD_TRANSPORTE', '02', 'Privado', 1, NOW()),
    ('MOTIVO_TRASLADO', '01', 'Venta', 1, NOW()),
    ('MOTIVO_TRASLADO', '02', 'Compra', 1, NOW()),
    ('MOTIVO_TRASLADO', '03', 'Venta con entrega a terceros', 1, NOW()),
    ('MOTIVO_TRASLADO', '04', 'Traslado entre establecimientos de la misma empresa', 1, NOW()),
    ('MOTIVO_TRASLADO', '05', 'Consignacion', 1, NOW()),
    ('MOTIVO_TRASLADO', '06', 'Devolucion', 1, NOW()),
    ('MOTIVO_TRASLADO', '07', 'Traslado entre establecimientos de la misma empresa (bienes transformados)', 1, NOW()),
    ('MOTIVO_TRASLADO', '08', 'Importacion', 1, NOW()),
    ('MOTIVO_TRASLADO', '09', 'Exportacion', 1, NOW()),
    ('MOTIVO_TRASLADO', '13', 'Otros', 1, NOW());

CREATE TABLE IF NOT EXISTS facturacion_guia_transporte (
    comprobante_id BIGINT UNSIGNED PRIMARY KEY,
    fecha_traslado DATE NOT NULL,
    peso_total DECIMAL(12,3) NOT NULL DEFAULT 0,
    unidad_peso VARCHAR(10) NOT NULL DEFAULT 'KGM',
    bultos INT UNSIGNED NOT NULL DEFAULT 0,
    motivo_traslado_codigo VARCHAR(5) NOT NULL,
    motivo_traslado_descripcion VARCHAR(180) NULL,
    modalidad_transporte_codigo VARCHAR(5) NOT NULL,
    transportista_documento_tipo VARCHAR(2) NULL,
    transportista_documento VARCHAR(20) NULL,
    transportista_nombre VARCHAR(200) NULL,
    transportista_registro_mtc VARCHAR(50) NULL,
    conductor_documento_tipo VARCHAR(2) NULL,
    conductor_documento VARCHAR(20) NULL,
    conductor_nombres VARCHAR(150) NULL,
    conductor_apellidos VARCHAR(150) NULL,
    conductor_licencia VARCHAR(30) NULL,
    placa VARCHAR(15) NULL,
    indicador_m1l TINYINT(1) NOT NULL DEFAULT 0,
    partida_ubigeo VARCHAR(6) NOT NULL,
    partida_direccion VARCHAR(255) NOT NULL,
    llegada_ubigeo VARCHAR(6) NOT NULL,
    llegada_direccion VARCHAR(255) NOT NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NULL,
    deleted_at DATETIME NULL,
    CONSTRAINT fk_guia_transporte_comp FOREIGN KEY (comprobante_id) REFERENCES facturacion_comprobantes(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Serie base para guias de remision (tipo 09)
INSERT IGNORE INTO facturacion_series
    (empresa_id, tipo_comprobante_id, serie, es_electronico, en_modulo, correlativo_actual, estado, created_at)
SELECT e.id, tc.id, 'T001', 1, 2, 0, 1, NOW()
FROM empresas e
CROSS JOIN facturacion_tipo_comprobante tc
WHERE tc.codigo = '09'
  AND tc.deleted_at IS NULL
  AND e.deleted_at IS NULL;
