diff --git a/db/views/detail_de_facture_avec_frais_achat.sql b/db/views/detail_de_facture_avec_frais_achat.sql new file mode 100644 index 000000000..c4277eb08 --- /dev/null +++ b/db/views/detail_de_facture_avec_frais_achat.sql @@ -0,0 +1,49 @@ +CREATE OR REPLACE VIEW detail_de_facture_avec_frais_achat AS +SELECT + s.name AS `Boutique`, + po.platform_order_id AS `N° de Mabang`, + po.platform_order_number AS `N° de commande`, + po.tracking_number AS `N° de suivi`, + po.order_time AS `Date de commande`, + po.shipping_time AS `Date d'expédition`, + po.recipient AS `Nom de client`, + po.country AS `Pays`, + po.postcode AS `Code postal`, + JSON_ARRAYAGG(sku.erp_code) AS `SKU`, + JSON_ARRAYAGG(sku.en_name) AS `Nom produits`, + JSON_ARRAYAGG(poc.quantity) AS `Quantité`, + + -- Calculate purchase fees, using the price from sku_price if purchase_fee is 0 + COALESCE(SUM( + CASE + WHEN poc.purchase_fee = 0 THEN poc.quantity * COALESCE( + ( + SELECT sp.price + FROM sku_price sp + WHERE sp.sku_id = poc.sku_id + AND sp.date <= po.order_time + ORDER BY sp.date DESC + LIMIT 1 + ), 0 + ) + ELSE poc.purchase_fee + END + ), 0) AS `Frais d'achat`, + + po.fret_fee AS `Frais de FRET`, + SUM(poc.shipping_fee) AS `Frais de livraison`, + (po.order_service_fee + SUM(poc.service_fee)) AS `Frais de service`, + (po.picking_fee + SUM(poc.picking_fee)) AS `Frais de préparation`, + po.packaging_material_fee AS `Frais de matériel d'emballage`, + COALESCE(po.insurance_fee, 0.00) AS `Frais d'assurance produits`, + SUM(poc.vat) AS `TVA`, + po.shipping_invoice_number AS `N° de facture` +FROM platform_order po + JOIN shop s ON po.shop_id = s.id + RIGHT JOIN platform_order_content poc ON po.id = poc.platform_order_id + JOIN sku ON poc.sku_id = sku.id +WHERE po.order_time > '2025-01-01' + AND shipping_invoice_number IS NOT NULL + AND poc.erp_status <> 5 +GROUP BY po.id, s.name, po.order_time +ORDER BY s.name, po.order_time; diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/shippingInvoice/InvoiceController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/shippingInvoice/InvoiceController.java index dc81e1739..344d521e1 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/shippingInvoice/InvoiceController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/shippingInvoice/InvoiceController.java @@ -659,6 +659,15 @@ public class InvoiceController { return shippingInvoiceService.exportToExcel(invoiceDetails, Collections.emptyList(), Collections.emptyList(), period, client.getInvoiceEntity(), client.getInternalCode()); } + @GetMapping(value = "/downloadCompleteInvoiceDetail") + public byte[] downloadCompleteInvoiceDetail(@RequestParam("invoiceNumber") String invoiceNumber, @RequestParam("invoiceEntity") String invoiceEntity, @RequestParam("internalCode") String internalCode) throws IOException { + List factureDetails = shippingInvoiceService.getInvoiceDetailWithPurchaseFee(invoiceNumber); + List refunds = savRefundWithDetailService.getRefundsByInvoiceNumber(invoiceNumber); + List extraFees = extraFeeService.findByInvoiceNumber(invoiceNumber); + String fileNameInfo = invoiceNumber + "_complete"; + return shippingInvoiceService.exportToExcel(factureDetails, refunds, extraFees, fileNameInfo, invoiceEntity, internalCode); + } + /** * Only downloads the inventory of skus that are in the invoice * Whereas downloadInventory downloads the inventory of a list of skus for the client diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/FactureDetailMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/FactureDetailMapper.java index eab29f4fa..0e4abb5f0 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/FactureDetailMapper.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/FactureDetailMapper.java @@ -10,5 +10,7 @@ import java.util.List; @Repository public interface FactureDetailMapper extends BaseMapper { + List getInvoiceDetailWithPurchaseFee(@Param("invoiceNumber") String invoiceNumber); + List selectByShopsAndPeriod(@Param("shopIds") List shopIds, @Param("start") String startDate, @Param("end") String endDate, @Param("type") String type); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/FactureDetailMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/FactureDetailMapper.xml index 24ed2a344..9a045cad8 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/FactureDetailMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/FactureDetailMapper.xml @@ -1,6 +1,11 @@ + +