Browse Source

按箱量计算仓储费

Sun 3 năm trước cách đây
mục cha
commit
c7b02c9d01

+ 9 - 1
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/enums/WarehouseTypeEnum.java

@@ -85,9 +85,13 @@ public enum WarehouseTypeEnum {
     // 净重
     NET_WEIGHT("3", "吨", "warehouseUnit"),
     // 尺码
-    MEASURE("4", "", "warehouseUnit"),
+    MEASURE("4", "CMB", "warehouseUnit"),
     // 统一
     FIXED("5", "吨", "warehouseUnit"),
+    // 其他
+    OTHER("6", "吨", "warehouseUnit"),
+    // 箱量
+    BOX_TEU("7", "箱", "warehouseUnit"),
 
     // 是否计入库存总帐
     INVENTORY("0", "计入库存总帐", "generalLedger"),
@@ -162,6 +166,10 @@ public enum WarehouseTypeEnum {
             return MEASURE.name;
         } else if (Objects.equals(Long.parseLong(FIXED.type), unit)) {
             return FIXED.name;
+        } else if (Objects.equals(Long.parseLong(OTHER.type), unit)) {
+            return OTHER.name;
+        } else if (Objects.equals(Long.parseLong(BOX_TEU.type), unit)) {
+            return BOX_TEU.name;
         }
         throw new IllegalArgumentException("warehouse Billing unit does not exist");
     }

+ 9 - 4
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseAgreementServiceImpl.java

@@ -623,21 +623,26 @@ public class TWarehouseAgreementServiceImpl implements ITWarehouseAgreementServi
      * @return 结果
      */
     public BigDecimal acquiredQuantity(CalculateStorageFeesDTO storageFeesDto, Long unit) {
-        BigDecimal fQty = new BigDecimal(0);
+        BigDecimal fQty = new BigDecimal("0");
+        BigDecimal divisor = new BigDecimal("1000");
         if (unit.equals(Long.parseLong(WarehouseTypeEnum.BOX_NUM.getType()))) {
             return storageFeesDto.getfQty().setScale(2, RoundingMode.HALF_UP);
         } else if (unit.equals(Long.parseLong(WarehouseTypeEnum.GROSS_WEIGHT.getType()))) {
             fQty = storageFeesDto.getfGrossweight();
+            // 结果值除以1000 保留两位
+            return fQty.divide(divisor, 2, RoundingMode.HALF_UP);
         } else if (unit.equals(Long.parseLong(WarehouseTypeEnum.NET_WEIGHT.getType()))) {
             fQty = storageFeesDto.getfNetweight();
+            // 结果值除以1000 保留两位
+            return fQty.divide(divisor, 2, RoundingMode.HALF_UP);
         } else if (unit.equals(Long.parseLong(WarehouseTypeEnum.MEASURE.getType()))) {
             fQty = storageFeesDto.getfVolumn();
         } else if (unit.equals(Long.parseLong(WarehouseTypeEnum.FIXED.getType()))) {
             fQty = BigDecimal.ONE;
+        } else if (unit.equals(Long.parseLong(WarehouseTypeEnum.BOX_TEU.getType()))) {
+            fQty = storageFeesDto.getfQty().compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : BigDecimal.ONE;
         }
-        // 结果值除以1000 保留两位
-        BigDecimal divisor = new BigDecimal("1000");
-        return fQty.divide(divisor, 2, RoundingMode.HALF_UP);
+        return fQty;
     }
 
     /**

+ 20 - 4
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

@@ -1874,6 +1874,10 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     return AjaxResult.error("付款费用第" + line + "行,缺少必填信息");
                 }
+                cr.setfMblno(warehouseBills.getfMblno());
+                cr.setfAmount(cr.getfAmt());
+                cr.setfBsdate(warehouseBills.getfBsdate());
+                cr.setfReviewDate(new Date());
                 cr.setfDc("C");
                 cr.setfBillstatus(billStatus);
                 cr.setCreateTime(new Date());
@@ -1892,6 +1896,10 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     return AjaxResult.error("收款费用第" + line + "行,缺少必填信息");
                 }
+                dr.setfMblno(warehouseBills.getfMblno());
+                dr.setfAmount(dr.getfAmt());
+                dr.setfBsdate(warehouseBills.getfBsdate());
+                dr.setfReviewDate(new Date());
                 dr.setfDc("D");
                 dr.setfBillstatus(billStatus);
                 dr.setCreateTime(new Date());
@@ -2070,6 +2078,10 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     return AjaxResult.error("付款费用第" + line + "行,缺少必填信息");
                 }
+                cr.setfMblno(warehouseBills.getfMblno());
+                cr.setfAmount(cr.getfAmt());
+                cr.setfBsdate(warehouseBills.getfBsdate());
+                cr.setfReviewDate(new Date());
                 cr.setfDc("C");
                 cr.setfBillstatus(billStatus);
                 cr.setCreateTime(new Date());
@@ -2088,6 +2100,10 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     return AjaxResult.error("收款费用第" + line + "行,缺少必填信息");
                 }
+                dr.setfMblno(warehouseBills.getfMblno());
+                dr.setfAmount(dr.getfAmt());
+                dr.setfBsdate(warehouseBills.getfBsdate());
+                dr.setfReviewDate(new Date());
                 dr.setfDc("D");
                 dr.setfBillstatus(billStatus);
                 dr.setCreateTime(new Date());
@@ -4674,7 +4690,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             // 库存天数
             long fInventoryDays;
             // 要计费天数
-            long fBillingDays = DateUtils.getDateDay(warehouseBills.getfBillingDeadline(), (Date) item.get("fOriginalbilldate"));
+            long fBillingDays;
             if ("SJCK".equals(fBilltype)) {
                 fInventoryDays = DateUtils.getDateDay(fBsdate, (Date) item.get("fOriginalbilldate"));
                 fBillingDays = DateUtils.getDateDay(fBsdate, (Date) item.get("fChargedate"));
@@ -4791,11 +4807,11 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 }
                 itemsList = (List<TWarehousebillsfees>) mapItem.get("itemsList");
             }
-            if (CollectionUtils.isEmpty(itemsList)) {
-                throw new WarehouseException("未找到合适的库存明细");
-            }
             list.addAll(itemsList);
         }
+        if (CollectionUtils.isEmpty(list)) {
+            throw new WarehouseException("未找到合适的库存明细");
+        }
         return AjaxResult.success(list);
     }
 

+ 1 - 1
ruoyi-warehouse/src/main/resources/mapper/reportManagement/TWhgenlegMapper.xml

@@ -632,7 +632,7 @@
             wh.f_netweightblc AS f_netweight,
             wh.f_warehouseid,
             wh.f_warehouse_locationid,
-            "KCZZ" AS f_billtype,
+            'KCZZ' AS f_billtype,
             goods.if_cntrno,
             goods.f_typeid AS f_typeid,
             goods.f_name AS goods_name

+ 8 - 6
ruoyi-warehouse/src/main/resources/mapper/warehouseBusiness/TWarehousebillsitemsMapper.xml

@@ -529,15 +529,16 @@
             LEFT JOIN t_warehousebillsitems item ON item.f_pid = ware.f_id
             LEFT JOIN t_goods goods ON goods.f_id = item.f_goodsid
             LEFT JOIN t_warehouse wa ON wa.f_id = ware.f_warehouseid
+            LEFT JOIN t_whgenleg leg ON leg.f_id = item.f_srcid
         <where>
             ware.f_corpid = #{warehouse.fCorpid}
             <if test="warehouse.fId != null">and item.f_id = #{warehouse.fId}</if>
-            and ware.f_billtype in ("HQZY", "SJCK")
+            and ware.f_billtype in ('HQZY', 'SJCK')
             and wa.f_charg = 1
             and item.f_storage_fee_deadline IS NULL
             and item.f_bsdate &lt;= #{warehouse.fBillingDeadline}
-            and IF(ware.f_billtype = "SJCK", item.f_billstatus = 40,
-                item.f_billstatus = 6)
+            and IF(ware.f_billtype = 'SJCK', item.f_billstatus = 40, item.f_billstatus = 6)
+            and IF(item.f_billingway = '7', leg.f_qtyblc = 0, leg.f_qtyblc &gt;= 0)
             <if test="warehouse.fGoodsid != null and warehouse.fGoodsid != ''">and item.f_goodsid = #{warehouse.fGoodsid}</if>
             <if test="warehouse.fWarehouseid != null and warehouse.fWarehouseid != ''">and ware.f_warehouseid = #{warehouse.fWarehouseid}</if>
             <if test="warehouse.fMblno != null and warehouse.fMblno != ''">and item.f_mblno like concat('%',#{warehouse.fMblno},'%')</if>
@@ -573,15 +574,16 @@
             LEFT JOIN t_warehousebillsitems item ON item.f_pid = ware.f_id
             LEFT JOIN t_goods goods ON goods.f_id = item.f_goodsid
             LEFT JOIN t_warehouse wa ON wa.f_id = ware.f_warehouseid
+            LEFT JOIN t_whgenleg leg ON leg.f_id = item.f_srcid
         <where>
             ware.f_corpid = #{warehouse.fCorpid}
             <if test="warehouse.fId != null">and item.f_id = #{warehouse.fId}</if>
-            and ware.f_billtype in ("HQZY", "SJCK")
+            and ware.f_billtype in ('HQZY', 'SJCK')
             and wa.f_charg = 1
             and item.f_storage_fee_deadline IS NULL
             and item.f_bsdate &lt;= #{warehouse.fBillingDeadline}
-            and IF(ware.f_billtype = "SJCK", item.f_billstatus = 40,
-                item.f_billstatus = 6)
+            and IF(ware.f_billtype = 'SJCK', item.f_billstatus = 40, item.f_billstatus = 6)
+            and IF(item.f_billingway = '7', leg.f_qtyblc = 0, leg.f_qtyblc &gt;= 0)
             <if test="warehouse.fGoodsid != null and warehouse.fGoodsid != ''">and item.f_goodsid = #{warehouse.fGoodsid}</if>
             <if test="warehouse.fWarehouseid != null and warehouse.fWarehouseid != ''">and ware.f_warehouseid = #{warehouse.fWarehouseid}</if>
             <if test="warehouse.fMblno != null and warehouse.fMblno != ''">and item.f_mblno like concat('%',#{warehouse.fMblno},'%')</if>