-- =============================================================================
-- XPERT SAP B1 - Migracion 042
-- Devoluciones a Proveedores: dos objetos distintos de SAP B1, cada uno
-- con su propio boton/flujo en XPERT (confirmados por el usuario):
--   - PurchaseCreditNote: Nota de Credito de Compras (AP Credit Memo,
--     entidad Service Layer /PurchaseCreditNotes) -- revierte inventario +
--     factura + costos en un solo documento.
--   - PurchaseReturnRequest: Devolucion de Mercaderia (Goods Return) --
--     solo mueve inventario, sin tocar la factura. Nombre de entidad SAP
--     real a confirmar (ver comentario en SapServiceLayerClient), no
--     bloquea modelarlo ya del lado de XPERT.
-- Mismo patron que la migracion 038 (la que agrego SalesOrder/
-- InventoryTransferRequest a este mismo enum).
-- =============================================================================

-- outbound_documents no tenia forma de referenciar un proveedor (solo
-- customer_id, pensado para Pedidos de Venta) -- una devolucion a
-- proveedor es una salida fisica cuya contraparte de negocio es un
-- proveedor, no un cliente.
ALTER TABLE `outbound_documents`
    MODIFY COLUMN `sap_doc_type` ENUM('SalesOrder','InventoryTransferRequest','PurchaseCreditNote','PurchaseReturnRequest') NULL,
    ADD COLUMN `supplier_id`          INT UNSIGNED NULL COMMENT 'Solo Devolucion a Proveedores: a que proveedor vuelve la mercaderia' AFTER `customer_id`,
    ADD COLUMN `sap_credit_note_entry` INT NULL COMMENT 'DocEntry de la Nota de Credito de Compras / Devolucion de Mercaderia creada en SAP al confirmar la salida fisica' AFTER `sap_delivery_num`,
    ADD COLUMN `sap_credit_note_num`   INT NULL AFTER `sap_credit_note_entry`,
    ADD CONSTRAINT `fk_outbound_documents_supplier` FOREIGN KEY (`supplier_id`) REFERENCES `suppliers` (`id`);

ALTER TABLE `sap_sync_log`
    MODIFY COLUMN `sync_type` ENUM('MASTER_ITEMS','MASTER_WAREHOUSES','MASTER_BP','MASTER_CATEGORIES','DOC_INBOUND','DOC_OUTBOUND','DOC_ADJUSTMENT','DOC_RETURN','DOC_VENDOR_RETURN') NOT NULL;
