export const DELIVERY_TYPE = 'delivery'; export const LIST_DELIVERIES = ` SELECT m.id, m.[number], m.[type], m.entity_id AS supplierId, m.external_number AS externalNumber, m.[date], m.created_at AS createdAt, COUNT(ma.id) AS totalPositions, COUNT(CASE WHEN ma.id IS NOT NULL AND ( (ma.amount > 0 AND COALESCE(ma_ledger.booked_amount, 0) >= ma.amount) OR (ma.amount <= 0 AND COALESCE(ma_ledger.booked_amount, 0) > 0) ) THEN 1 END) AS completelyOnLedgerPositions FROM manifest m LEFT JOIN manifestarticle ma ON ma.manifest_id = m.id LEFT JOIN ( SELECT manifestarticle_id, SUM(amount) AS booked_amount FROM ledger GROUP BY manifestarticle_id ) ma_ledger ON ma_ledger.manifestarticle_id = ma.id WHERE m.company_id = @companyId AND m.[type] = @type GROUP BY m.id, m.[number], m.[type], m.entity_id, m.external_number, m.[date], m.created_at ORDER BY m.[date] DESC, m.id DESC `; export const GET_DELIVERY_HEADER = ` SELECT m.id, m.[number], m.[type], m.entity_id AS supplierId, m.external_number AS externalNumber, m.[date], m.created_at AS createdAt, ds.positions, ds.gross_total AS grossTotal, ds.net_total AS netTotal, ds.total_quantity AS totalQuantity, ds.stock_positions AS stockPositions, ds.booked_positions AS bookedPositions, ds.unbooked_positions AS unbookedPositions, ds.stock_quantity AS stockQuantity, ds.booked_quantity AS bookedQuantity, ds.unbooked_quantity AS unbookedQuantity, ds.is_booked AS isBooked, ds.supplier_name AS supplierName FROM manifest m LEFT JOIN deliverysummary ds ON ds.manifest_id = m.id WHERE m.id = @id AND m.company_id = @companyId AND m.[type] = @type `; export const GET_DELIVERY_LINES = ` SELECT ma.id, ma.sku, ma.name, ma.pu, ma.amount, ma.net, ma.rebate, ma.taxrate, ma.comment FROM manifestarticle ma WHERE ma.manifest_id = @manifestId ORDER BY ma.id `; export const CREATE_MANIFEST = ` INSERT INTO manifest (company_id, [number], [type], entity_id, external_number, [date], created_at) OUTPUT INSERTED.id VALUES (@companyId, @number, @type, @entityId, @externalNumber, @date, COALESCE(@createdAt, SYSUTCDATETIME())) `; export const UPDATE_MANIFEST = ` UPDATE manifest SET [number] = @number, entity_id = @entityId, external_number = @externalNumber, [date] = @date, created_at = COALESCE(@createdAt, created_at) WHERE id = @id AND company_id = @companyId AND [type] = @type `; export const DELETE_MANIFEST = ` DELETE FROM manifest WHERE id = @id AND company_id = @companyId AND [type] = @type `; export const DELETE_LINES_BY_MANIFEST = ` DELETE FROM manifestarticle WHERE manifest_id = @manifestId `; export const GET_NEXT_ATTACHMENT_SORT = ` SELECT ISNULL(MAX(ma.sort), -1) + 1 AS sort FROM manifestattachment ma WHERE ma.manifest_id = @manifestId `; export const CREATE_FILE = ` INSERT INTO [file] (hash, mimetype, name, size, created, modified, content, thumbavif, thumbx, thumby, meta) OUTPUT INSERTED.id VALUES (@hash, @mimetype, @name, @size, @created, @modified, @content, CONVERT(VARBINARY(MAX), @thumbavif), @thumbx, @thumby, @meta) `; export const CREATE_ATTACHMENT = ` INSERT INTO manifestattachment (manifest_id, file_id, sort) OUTPUT INSERTED.id VALUES (@manifestId, @fileId, @sort) `; export const LIST_DELIVERY_FILES = ` SELECT ma.id, ma.manifest_id AS manifestId, ma.file_id AS fileId, ma.sort, f.hash, f.mimetype, f.name, f.size, f.created, f.modified, f.thumbavif, f.thumbx, f.thumby, f.meta FROM manifestattachment ma INNER JOIN [file] f ON f.id = ma.file_id INNER JOIN manifest m ON m.id = ma.manifest_id WHERE m.company_id = @companyId AND m.[type] = @type ORDER BY ma.manifest_id, ma.sort ASC, ma.id ASC `;