- Added SequelizeProformaV2RecipientDomainMapper for mapping recipient data to domain model. - Introduced SequelizeProformaV2TaxesDomainMapper for handling tax data mapping. - Created SequelizeProformaV2RecipientSummaryMapper for summarizing recipient information. - Developed SequelizeProformaV2SummaryMapper for mapping Proforma summary data. - Implemented SequelizeProformaRepositoryV2 for managing Proforma data persistence. - Added SequelizeProformaV2NumberGenerator for generating Proforma numbers.
174 lines
5.4 KiB
SQL
174 lines
5.4 KiB
SQL
-- Fase 1D
|
|
-- Validaciones SQL tras create/backfill de Proformas / Issued Invoices V2.
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
-- Conteos cabeceras
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
SELECT COUNT(*) AS legacy_proformas
|
|
FROM customer_invoices
|
|
WHERE is_proforma = 1
|
|
AND deleted_at IS NULL;
|
|
|
|
SELECT COUNT(*) AS new_proformas
|
|
FROM proformas
|
|
WHERE deleted_at IS NULL;
|
|
|
|
SELECT COUNT(*) AS legacy_issued_invoices
|
|
FROM customer_invoices
|
|
WHERE is_proforma = 0
|
|
AND deleted_at IS NULL;
|
|
|
|
SELECT COUNT(*) AS new_issued_invoices
|
|
FROM issued_invoices
|
|
WHERE deleted_at IS NULL;
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
-- Conteos items
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
SELECT COUNT(*) AS legacy_proforma_items
|
|
FROM customer_invoice_items i
|
|
JOIN customer_invoices ci ON ci.id = i.invoice_id
|
|
WHERE ci.is_proforma = 1
|
|
AND ci.deleted_at IS NULL;
|
|
|
|
SELECT COUNT(*) AS new_proforma_items
|
|
FROM proforma_items;
|
|
|
|
SELECT COUNT(*) AS legacy_issued_invoice_items
|
|
FROM customer_invoice_items i
|
|
JOIN customer_invoices ci ON ci.id = i.invoice_id
|
|
WHERE ci.is_proforma = 0
|
|
AND ci.deleted_at IS NULL;
|
|
|
|
SELECT COUNT(*) AS new_issued_invoice_items
|
|
FROM issued_invoice_items;
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
-- Conteos taxes
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
SELECT COUNT(*) AS legacy_proforma_taxes
|
|
FROM customer_invoice_taxes t
|
|
JOIN customer_invoices ci ON ci.id = t.invoice_id
|
|
WHERE ci.is_proforma = 1
|
|
AND ci.deleted_at IS NULL;
|
|
|
|
SELECT COUNT(*) AS new_proforma_taxes
|
|
FROM proforma_taxes;
|
|
|
|
SELECT COUNT(*) AS legacy_issued_invoice_taxes
|
|
FROM customer_invoice_taxes t
|
|
JOIN customer_invoices ci ON ci.id = t.invoice_id
|
|
WHERE ci.is_proforma = 0
|
|
AND ci.deleted_at IS NULL;
|
|
|
|
SELECT COUNT(*) AS new_issued_invoice_taxes
|
|
FROM issued_invoice_taxes;
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
-- Duplicados fiscales
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
SELECT company_id, invoice_series_code, invoice_number, COUNT(*) AS total
|
|
FROM issued_invoices
|
|
GROUP BY company_id, invoice_series_code, invoice_number
|
|
HAVING COUNT(*) > 1;
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
-- Huérfanos
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
SELECT COUNT(*) AS issued_without_source
|
|
FROM issued_invoices ii
|
|
LEFT JOIN proformas p ON p.id = ii.source_proforma_id
|
|
WHERE ii.source_proforma_id IS NOT NULL
|
|
AND p.id IS NULL;
|
|
|
|
SELECT COUNT(*) AS proforma_items_without_header
|
|
FROM proforma_items pi
|
|
LEFT JOIN proformas p ON p.id = pi.proforma_id
|
|
WHERE p.id IS NULL;
|
|
|
|
SELECT COUNT(*) AS issued_items_without_header
|
|
FROM issued_invoice_items iii
|
|
LEFT JOIN issued_invoices ii ON ii.id = iii.issued_invoice_id
|
|
WHERE ii.id IS NULL;
|
|
|
|
SELECT COUNT(*) AS proforma_taxes_without_header
|
|
FROM proforma_taxes pt
|
|
LEFT JOIN proformas p ON p.id = pt.proforma_id
|
|
WHERE p.id IS NULL;
|
|
|
|
SELECT COUNT(*) AS issued_taxes_without_header
|
|
FROM issued_invoice_taxes iit
|
|
LEFT JOIN issued_invoices ii ON ii.id = iit.issued_invoice_id
|
|
WHERE ii.id IS NULL;
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
-- Verifactu
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
SELECT COUNT(*) AS orphan_verifactu_records
|
|
FROM verifactu_records vr
|
|
LEFT JOIN issued_invoices ii ON ii.id = vr.issued_invoice_id
|
|
WHERE vr.issued_invoice_id IS NOT NULL
|
|
AND ii.id IS NULL;
|
|
|
|
SELECT COUNT(*) AS legacy_invoice_links_pending
|
|
FROM verifactu_records vr
|
|
JOIN customer_invoices ci ON ci.id = vr.invoice_id
|
|
WHERE ci.is_proforma = 0
|
|
AND vr.invoice_id IS NOT NULL
|
|
AND vr.issued_invoice_id IS NULL;
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
-- Totales monetarios
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
SELECT
|
|
SUM(ci.total_amount_value) AS legacy_proformas_total_amount_value,
|
|
SUM(p.total_amount_value) AS new_proformas_total_amount_value
|
|
FROM customer_invoices ci
|
|
LEFT JOIN proformas p ON p.id = ci.id
|
|
WHERE ci.is_proforma = 1
|
|
AND ci.deleted_at IS NULL;
|
|
|
|
SELECT
|
|
SUM(ci.total_amount_value) AS legacy_issued_total_amount_value,
|
|
SUM(ii.total_amount_value) AS new_issued_total_amount_value
|
|
FROM customer_invoices ci
|
|
LEFT JOIN issued_invoices ii ON ii.id = ci.id
|
|
WHERE ci.is_proforma = 0
|
|
AND ci.deleted_at IS NULL;
|
|
|
|
SELECT
|
|
SUM(ci.taxable_amount_value) AS legacy_proformas_taxable_amount_value,
|
|
SUM(p.taxable_amount_value) AS new_proformas_taxable_amount_value
|
|
FROM customer_invoices ci
|
|
LEFT JOIN proformas p ON p.id = ci.id
|
|
WHERE ci.is_proforma = 1
|
|
AND ci.deleted_at IS NULL;
|
|
|
|
SELECT
|
|
SUM(ci.taxable_amount_value) AS legacy_issued_taxable_amount_value,
|
|
SUM(ii.taxable_amount_value) AS new_issued_taxable_amount_value
|
|
FROM customer_invoices ci
|
|
LEFT JOIN issued_invoices ii ON ii.id = ci.id
|
|
WHERE ci.is_proforma = 0
|
|
AND ci.deleted_at IS NULL;
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
-- Enlaces clave de negocio
|
|
-- ---------------------------------------------------------------------------
|
|
|
|
SELECT
|
|
ii.id,
|
|
ii.source_proforma_id,
|
|
p.id AS matched_proforma_id
|
|
FROM issued_invoices ii
|
|
LEFT JOIN proformas p ON p.id = ii.source_proforma_id
|
|
WHERE ii.source_proforma_id IS NOT NULL
|
|
AND p.id IS NULL;
|