From 7354151f37391cc27462bc9d787c79f624f6e50e Mon Sep 17 00:00:00 2001
From: 647556386 <647556386@qq.com>
Date: 星期五, 09 一月 2026 11:41:09 +0800
Subject: [PATCH] 盘点,单位转换优化

---
 项目代码/WIDESEA_WMSClient/src/extension/inbound/extend/TakeStockSelect.vue                          |  132 ++++++++++------
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs                      |   10 +
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs                 |    7 
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs                        |   27 ++-
 项目代码/WIDESEA_WMSClient/src/extension/inbound/takeStockOrderDetail.js                             |    2 
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_InboundService/TakeStockOrderService.cs                   |  287 ++++++++++++++++++++++++++++++++++-
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/TakeStockOrderController.cs |    2 
 7 files changed, 394 insertions(+), 73 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/TakeStockSelect.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/TakeStockSelect.vue"
index 3607f6e..f80b6ae 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/TakeStockSelect.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/TakeStockSelect.vue"
@@ -12,44 +12,46 @@
       <div class="order-info">
         <div class="info-row">
           <span class="label">鍗曟嵁ID锛�</span>
-          <span class="value">{{ currentRow.id || '-' }}</span>
+          <span class="value">{{ currentRow.id || "-" }}</span>
         </div>
         <div class="info-row" v-if="selectedItem">
           <span class="label">宸查�夎鍗曪細</span>
-          <span class="value selected-order">{{ selectedItem.orderId }}</span>
+          <span class="value selected-order">{{ selectedItem.id }}</span>
         </div>
       </div>
 
       <!-- 鏁版嵁鍒楄〃灞曠ず -->
       <el-scrollbar height="400px" class="custom-scrollbar">
         <transition-group name="data-item-transition">
-          <div class="data-item" v-for="(item, index) in displayData" :key="`${item.orderId}-${index}`">
+          <div
+            class="data-item"
+            v-for="(item, index) in displayData"
+            :key="`${item.orderId}-${index}`"
+          >
             <div class="radio-container">
-              <el-radio 
-                v-model="selectedItem" 
+              <el-radio
+                v-model="selectedItem"
                 :label="item"
                 :value="item"
                 @change="handleRadioChange(item)"
-              >
-                <!-- 鍗曢�夋寜閽殑鍐呭鐣欑┖锛屽彧鏄剧ず鍗曢�夋寜閽� -->
-              </el-radio>
+              ></el-radio>
             </div>
             <div class="data-detail">
               <div class="detail-row">
                 <span class="label">璁㈠崟ID锛�</span>
-                <span class="value">{{ item.orderId || '-' }}</span>
+                <span class="value">{{ item.id || "-" }}</span>
               </div>
               <div class="detail-row">
                 <span class="label">鐗╂枡缂栫爜锛�</span>
-                <span class="value">{{ item.materielCode || '-' }}</span>
+                <span class="value">{{ item.materielCode || "-" }}</span>
               </div>
               <div class="detail-row">
                 <span class="label">鐗╂枡鍚嶇О锛�</span>
-                <span class="value">{{ item.materielName || '-' }}</span>
+                <span class="value">{{ item.materielName || "-" }}</span>
               </div>
               <div class="detail-row">
                 <span class="label">鎵规鍙凤細</span>
-                <span class="value">{{ item.batchNo || '-' }}</span>
+                <span class="value">{{ item.batchNo || "-" }}</span>
               </div>
               <div class="detail-row">
                 <span class="label">璁㈠崟鏁伴噺锛�</span>
@@ -57,15 +59,15 @@
               </div>
               <div class="detail-row">
                 <span class="label">鍗曚綅锛�</span>
-                <span class="value">{{ item.unit || '-' }}</span>
+                <span class="value">{{ item.unit || "-" }}</span>
               </div>
               <div class="detail-row">
                 <span class="label">渚涘簲鍟嗙紪鐮侊細</span>
-                <span class="value">{{ item.supplyCode || '-' }}</span>
+                <span class="value">{{ item.supplyCode || "-" }}</span>
               </div>
               <div class="detail-row">
                 <span class="label">浠撳簱缂栫爜锛�</span>
-                <span class="value">{{ item.warehouseCode || '-' }}</span>
+                <span class="value">{{ item.warehouseCode || "-" }}</span>
               </div>
             </div>
           </div>
@@ -78,23 +80,26 @@
 
     <template #footer>
       <el-button @click="dialogVisible = false">鍏抽棴</el-button>
-      <el-button 
-        type="primary" 
+      <el-button
+        type="primary"
         @click="handleConfirm"
         :disabled="!selectedItem"
         :loading="loading"
       >
-        {{ loading ? '骞宠处涓�...' : '纭骞宠处' }}
+        {{ loading ? "骞宠处涓�..." : "纭骞宠处" }}
       </el-button>
     </template>
   </el-dialog>
+  
+  <!-- 鎵撳嵃缁勪欢锛堝繀椤诲湪妯℃澘涓0鏄庯紝鎵嶈兘閫氳繃ref鑾峰彇锛� -->
+  <printView ref="printViewRef" @parentcall="parentcall"></printView>
 </template>
 
 <script setup>
-import { ref } from 'vue';
-import { ElMessage, ElMessageBox } from 'element-plus';
-// 鏍规嵁鎮ㄧ殑瀹為檯椤圭洰寮曞叆璇锋眰鏂规硶锛岃繖閲屼娇鐢╝xios浣滀负绀轰緥
-import axios from 'axios';
+import { ref } from "vue";
+import printView from "@/extension/outbound/extend/printView.vue";
+import { ElMessage, ElMessageBox } from "element-plus";
+import axios from "axios";
 
 // 寮圭獥鏄剧ず鐘舵��
 const dialogVisible = ref(false);
@@ -106,6 +111,8 @@
 const selectedItem = ref(null);
 // 鍔犺浇鐘舵��
 const loading = ref(false);
+// 澹版槑鎵撳嵃缁勪欢鐨剅ef寮曠敤锛堝叧閿細鏇夸唬this.$refs.printView锛�
+const printViewRef = ref(null);
 
 // 鎵撳紑寮圭獥鏂规硶锛堜緵鐖剁粍浠惰皟鐢級
 const open = (row, data) => {
@@ -126,55 +133,83 @@
   loading.value = false;
 };
 
+// 鐖剁粍浠惰皟鐢ㄧ殑鍥炶皟锛堝鏋減rintView闇�瑕侊級
+const parentcall = (params) => {
+  console.log("printView鍥炶皟鍙傛暟锛�", params);
+};
+
 // 纭骞宠处鎿嶄綔
 const handleConfirm = async () => {
   if (!selectedItem.value) {
-    ElMessage.warning('璇烽�夋嫨涓�鏉℃暟鎹繘琛屽钩璐﹀鐞�');
+    ElMessage.warning("璇烽�夋嫨涓�鏉℃暟鎹繘琛屽钩璐﹀鐞�");
     return;
   }
 
   try {
     // 纭鎻愮ず
     await ElMessageBox.confirm(
-      `纭畾瑕佸璁㈠崟 ${selectedItem.value.orderId} 杩涜骞宠处澶勭悊鍚楋紵`,
-      '骞宠处纭',
+      `纭畾瑕佸璁㈠崟 ${selectedItem.value.id} 杩涜骞宠处澶勭悊鍚楋紵`,
+      "骞宠处纭",
       {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-        type: 'warning',
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
       }
     );
 
     loading.value = true;
-    
+
     // 璋冪敤骞宠处鎺ュ彛
     const params = {
       id: currentRow.value.id, // 琛孖D
-      orderId: selectedItem.value.orderId // 閫夋嫨鐨勫崟鎹畂rderId
+      orderId: selectedItem.value.id, // 閫夋嫨鐨勫崟鎹畂rderId
     };
 
-    // 鏍规嵁鎮ㄧ殑鎺ュ彛瀹為檯鎯呭喌璋冩暣璇锋眰鏂瑰紡
-    const response = await axios.get('/api/TakeStockOrder/DocumentReconciliation', {
-      params: params // GET璇锋眰浼犲弬
-      // 濡傛灉鏄疨OST璇锋眰锛屽彲浠ヨ繖鏍峰啓锛�
-      // data: params
-    });
+    const response = await axios.get(
+      "/api/TakeStockOrder/DocumentReconciliation",
+      {
+        params: params,
+      }
+    );
 
-    if (response.status) {
-      ElMessage.success('骞宠处鎿嶄綔鎴愬姛');
-      dialogVisible.value = false;
+    console.log("鎺ュ彛瀹屾暣杩斿洖鍊硷細", response); // 璋冭瘯鐢細鎵撳嵃瀹屾暣杩斿洖
+    
+    // 绗竴姝ワ細鏍¢獙鏈�澶栧眰鐘舵��
+    if (response.data?.status) {
+      ElMessage.success("骞宠处鎿嶄綔鎴愬姛");
       
-      // 鍙互閫氳繃emit閫氱煡鐖剁粍浠跺埛鏂拌〃鏍�
-      // emit('refresh-table');
+      // 绗簩姝ワ細瑙f瀽姝g‘鐨剆cannedDetail灞傜骇锛堜笁灞俤ata锛�
+      const thirdLayerData = response.data.data?.data; // 鍏抽敭淇锛氬彇绗笁灞俤ata
+      const scannedDetail = thirdLayerData?.scannedDetail;
+      
+      console.log("瑙f瀽鍚庣殑scannedDetail锛�", scannedDetail); // 璋冭瘯鐢細鎵撳嵃鐩爣鏁版嵁
+      
+      // 绗笁姝ワ細鍒ゆ柇鎵撳嵃鏉′欢
+      if (scannedDetail?.isUnpacked && scannedDetail?.materialCodes?.length > 0) {
+        // 纭繚鎵撳嵃缁勪欢瀹炰緥瀛樺湪
+        if (printViewRef.value) {
+          console.log("瑙﹀彂鎵撳嵃鏂规硶锛屽弬鏁帮細", scannedDetail.materialCodes);
+          printViewRef.value.open(scannedDetail.materialCodes);
+        } else {
+          ElMessage.warning("鎵撳嵃缁勪欢鏈姞杞藉畬鎴愶紝璇锋鏌ョ粍浠跺紩鐢�");
+        }
+      } else {
+        ElMessage.info("鏃犻渶鎵撳嵃锛氭湭婊¤冻鎷嗗寘鏉′欢鎴栨棤鐗╂枡缂栫爜鏁版嵁");
+      }
+      
+      dialogVisible.value = false;
     } else {
+      ElMessage.error(response.data?.message || "骞宠处鎿嶄綔澶辫触");
     }
   } catch (error) {
-    // 濡傛灉鏄敤鎴峰彇娑堟搷浣滐紝涓嶆樉绀洪敊璇俊鎭�
-    if (error === 'cancel' || error === 'close') {
+    // 瀹屽杽閿欒澶勭悊锛氬尯鍒嗙敤鎴峰彇娑堝拰鐪熷疄閿欒
+    if (error === "cancel" || error === "close") {
+      ElMessage.info("宸插彇娑堝钩璐︽搷浣�");
       return;
     }
-    
-    ElMessage.error('骞宠处鎿嶄綔澶辫触锛岃绋嶅悗閲嶈瘯');
+    // 鎵撳嵃閿欒鏃ュ織锛屾柟渚挎帓鏌�
+    console.error("骞宠处鎺ュ彛璋冪敤澶辫触锛�", error);
+    ElMessage.error(`骞宠处鎿嶄綔澶辫触锛�${error.message || "缃戠粶寮傚父"}`);
   } finally {
     loading.value = false;
   }
@@ -182,11 +217,12 @@
 
 // 鏆撮湶鏂规硶缁欑埗缁勪欢
 defineExpose({
-  open
+  open,
 });
 </script>
 
 <style scoped>
+/* 鏍峰紡閮ㄥ垎涓嶅彉锛岀渷鐣ラ噸澶嶄唬鐮� */
 .reconciliation-container {
   padding: 10px 0;
 }
@@ -219,7 +255,7 @@
 }
 
 .selected-order {
-  color: #409EFF;
+  color: #409eff;
   font-weight: 600;
 }
 
@@ -244,7 +280,7 @@
 }
 
 .data-item.selected {
-  border-color: #409EFF;
+  border-color: #409eff;
   background-color: #f0f7ff;
 }
 
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/takeStockOrderDetail.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/takeStockOrderDetail.js"
index 1bfba85..fb2ce17 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/takeStockOrderDetail.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/takeStockOrderDetail.js"
@@ -146,7 +146,7 @@
 
             // 鎻愬彇闇�瑕佸睍绀虹殑瀛楁
             const displayData = response.data.map(item => ({
-              orderId: item.orderId || '',
+              id: item.id || '',
               materielCode: item.materielCode || '',
               materielName: item.materielName || '',
               batchNo: item.batchNo || '',
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs"
index 4e60fe4..b2d5cb5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IOutboundService/IOutboundService.cs"
@@ -5,6 +5,7 @@
 using System.Threading.Tasks;
 using WIDESEA_Core;
 using WIDESEA_DTO.CalcOut;
+using WIDESEA_Model.Models;
 
 namespace WIDESEA_IOutboundService
 {
@@ -53,5 +54,12 @@
         /// <param name="OrderNo"></param>
         /// <returns></returns>
         Task<WebResponseContent> ReturnToWarehouse(string palletCode, string OrderNo,string station);
-    }
+
+        public (string NewBarcode, List<MaterialCodeReturnDTO> MaterialCodeReturnDTOs) PerformUnpackOperation(Dt_StockInfoDetail stockDetail, Dt_StockInfo stockInfo,
+            decimal actualOutboundQuantity, OutboundCompleteRequestDTO request, decimal beforeQuantity, int taskNum, int orderId, string orderNo);
+
+        public void PerformFullOutboundOperation(Dt_StockInfoDetail stockDetail, Dt_StockInfo stockInfo,
+            decimal actualOutboundQuantity, OutboundCompleteRequestDTO request, decimal beforeQuantity, int taskNum);
+      
+     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/TakeStockOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/TakeStockOrderService.cs"
index 554d1c2..96d2949 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/TakeStockOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/TakeStockOrderService.cs"
@@ -27,6 +27,9 @@
 using WIDESEA_Common.AllocateEnum;
 using WIDESEA_Model.Models.Basic;
 using WIDESEA_IOutboundService;
+using WIDESEA_DTO.CalcOut;
+using Newtonsoft.Json.Serialization;
+using Newtonsoft.Json;
 
 namespace WIDESEA_InboundService
 {
@@ -44,7 +47,10 @@
         private readonly IRepository<Dt_InboundOrderDetail> _inboundOrderDetailRepository;
         private readonly IRepository<Dt_OutboundOrderDetail> _outboundOrderDetailRepository;
         private readonly IOutboundPickingService _outboundPickingService;
-        public TakeStockOrderService(IRepository<Dt_TakeStockOrder> BaseDal, IUnitOfWorkManage unitOfWorkManage,IRepository<Dt_TakeStockOrder> takeStockOrder,IRepository<Dt_StockInfo> stockInfoRepository,IRepository<Dt_TakeStockOrderDetail> takeStockOrderDetail,IRepository<Dt_Task> taskRepository,ILocationInfoService locationInfoService, IRepository<Dt_InboundOrder> inboundOrderRepository,IRepository<Dt_OutboundOrder> outboundOrderRepository,IRepository<Dt_InboundOrderDetail> inboundOrderDetailRepository, IRepository<Dt_OutboundOrderDetail> outboundOrderDetailRepository, IOutboundPickingService outboundPickingService) : base(BaseDal)
+        private readonly IRepository<Dt_StockInfoDetail> _stockInfoDetailRepository;
+        private readonly IOutboundService _outboundService;
+        private readonly IFeedbackMesService _feedbackMesService;
+        public TakeStockOrderService(IRepository<Dt_TakeStockOrder> BaseDal, IUnitOfWorkManage unitOfWorkManage,IRepository<Dt_TakeStockOrder> takeStockOrder,IRepository<Dt_StockInfo> stockInfoRepository,IRepository<Dt_TakeStockOrderDetail> takeStockOrderDetail,IRepository<Dt_Task> taskRepository,ILocationInfoService locationInfoService, IRepository<Dt_InboundOrder> inboundOrderRepository,IRepository<Dt_OutboundOrder> outboundOrderRepository,IRepository<Dt_InboundOrderDetail> inboundOrderDetailRepository, IRepository<Dt_OutboundOrderDetail> outboundOrderDetailRepository, IOutboundPickingService outboundPickingService, IRepository<Dt_StockInfoDetail> stockInfoDetailRepository, IOutboundService outboundService,IFeedbackMesService feedbackMesService) : base(BaseDal)
         {
             _unitOfWorkManage = unitOfWorkManage;
             _takeStockOrder = takeStockOrder;
@@ -57,6 +63,9 @@
             _inboundOrderDetailRepository = inboundOrderDetailRepository;
             _outboundOrderDetailRepository = outboundOrderDetailRepository;
             _outboundPickingService = outboundPickingService;
+            _stockInfoDetailRepository = stockInfoDetailRepository;
+            _outboundService = outboundService;
+            _feedbackMesService = feedbackMesService;
         }
 
         public WebResponseContent ValidateBoxNo(string orderNo, string boxNo)
@@ -170,13 +179,13 @@
                     Unit = stockInfoDetail.Unit,
                     SysQty = completeStockTakeDTO.stockQuantity,
                     Qty = completeStockTakeDTO.actualQuantity,
-                    Remark = completeStockTakeDTO.stockQuantity - completeStockTakeDTO.actualQuantity >= 0 ? "鐩樹簭" : "鐩樼泩",
+                    Remark = completeStockTakeDTO.actualQuantity - completeStockTakeDTO.stockQuantity >= 0 ? "鐩樼泩" : "鐩樹簭",
                     barcode = completeStockTakeDTO.barcode,
                     WarehouseCode = stockInfoDetail.WarehouseCode ?? "",
                     FactoryArea = stockInfoDetail.FactoryArea,
                     SupplyCode = stockInfoDetail.SupplyCode ?? "",
                     TakeStockNo = takeStockOrder.OrderNo,
-                    DifferenceQty = completeStockTakeDTO.stockQuantity - completeStockTakeDTO.actualQuantity
+                    DifferenceQty = completeStockTakeDTO.actualQuantity - completeStockTakeDTO.stockQuantity
 
                 };
                 foreach (var item in stockInfo.Details)
@@ -374,7 +383,7 @@
                         {
                             var matchedDetails = outboundOrder.Details
                                 .Where(detail => !string.IsNullOrWhiteSpace(detail.MaterielCode)
-                                              && detail.MaterielCode == takeStockOrderDetail.MaterielCode)
+                                              && detail.MaterielCode == takeStockOrderDetail.MaterielCode && detail.OrderQuantity-detail.MoveQty-detail.OverOutQuantity>0)
                                 .WhereIF(!string.IsNullOrWhiteSpace(takeStockOrderDetail.FactoryArea),
                                          detail => !string.IsNullOrWhiteSpace(outboundOrder.FactoryArea)
                                               && outboundOrder.FactoryArea == takeStockOrderDetail.FactoryArea)
@@ -405,6 +414,7 @@
 
         public WebResponseContent DocumentReconciliation(int orderId, int id)
         {
+            WebResponseContent webResponseContent = new WebResponseContent();
             try
             {
                 Dt_TakeStockOrderDetail takeStockOrderDetail = _takeStockOrderDetail.QueryFirst(x => x.Id == id);
@@ -414,12 +424,12 @@
                 }
                 if(takeStockOrderDetail.Remark == "鐩樼泩")
                 {
-                    Dt_InboundOrderDetail inboundOrderDetail = _inboundOrderDetailRepository.QueryFirst(x => x.OrderId == orderId);
+                    Dt_InboundOrderDetail inboundOrderDetail = _inboundOrderDetailRepository.QueryFirst(x => x.Id == orderId);
                     if(inboundOrderDetail == null)
                     {
                         return WebResponseContent.Instance.Error("鏈壘鍒伴�夋嫨鐨勬潅鏀跺钩璐﹀崟鎹�");
                     }
-                    Dt_InboundOrder inboundOrder = _inboundOrderRepository.Db.Queryable<Dt_InboundOrder>().Where(x=>x.Id == orderId).Includes(x=>x.Details).First();
+                    Dt_InboundOrder inboundOrder = _inboundOrderRepository.Db.Queryable<Dt_InboundOrder>().Where(x=>x.Id == inboundOrderDetail.OrderId).Includes(x=>x.Details).First();
                     Dt_StockInfo  stockInfo = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x=>x.PalletCode == takeStockOrderDetail.TakePalletCode && x.StockStatus == StockStatusEmun.鐩樼偣搴撳瓨瀹屾垚.ObjToInt()).Includes(x=>x.Details).First();
                     if(stockInfo== null)
                     {
@@ -461,10 +471,10 @@
                     {
                         inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱涓�.ObjToInt();
                     }
-                    takeStockOrderDetail.DifferenceQty += inboundOrderDetail.OrderQuantity;
+                    takeStockOrderDetail.DifferenceQty -= inboundOrderDetail.OrderQuantity;
                     if(takeStockOrderDetail.DifferenceQty > 0)
                     {
-                        return WebResponseContent.Instance.Error("璇ユ潅鏀跺崟鎹槑缁嗘潯鐮佹暟閲忓ぇ浜庡緟骞宠处鏁伴噺锛岃鍙﹂�夊叾浠栧崟鎹钩璐�");
+                        takeStockOrderDetail.TakeDetalStatus = TakeStockDetailStatusEnum.鏉傛敹鏉傚彂骞宠处澶勭悊涓�.ObjToInt();
                     }
                     else if (takeStockOrderDetail.DifferenceQty == 0)
                     {
@@ -472,7 +482,7 @@
                     }
                     else
                     {
-                        takeStockOrderDetail.TakeDetalStatus = TakeStockDetailStatusEnum.鏉傛敹鏉傚彂骞宠处澶勭悊涓�.ObjToInt();
+                        return WebResponseContent.Instance.Error("璇ユ潅鏀跺崟鎹槑缁嗘潯鐮佹暟閲忓ぇ浜庡緟骞宠处鏁伴噺锛岃鍙﹂�夊叾浠栧崟鎹钩璐�");
                     }
                     
                     _unitOfWorkManage.BeginTran();
@@ -483,15 +493,48 @@
                     _unitOfWorkManage.CommitTran();
                     List<string> barcodes = new List<string>();
                     barcodes.Add(inboundOrderDetail.Barcode);
-                    _outboundPickingService.NoStockOutBatchInOrderFeedbackToMes(orderId, barcodes);
+                    _outboundPickingService.NoStockOutBatchInOrderFeedbackToMes(inboundOrder.Id, barcodes);
 
 
                 }
                 else
                 {
-
+                    Dt_OutboundOrderDetail outboundOrderDetail = _outboundOrderDetailRepository.QueryFirst(x => x.Id == orderId);
+                    if (outboundOrderDetail == null)
+                    {
+                        return WebResponseContent.Instance.Error("鏈壘鍒伴�夋嫨鐨勬潅鍙戝钩璐﹀崟鎹�");
+                    }
+                    Dt_OutboundOrder outboundOrder = _outboundOrderRepository.Db.Queryable<Dt_OutboundOrder>().Where(x => x.Id == outboundOrderDetail.OrderId).Includes(x => x.Details).First();
+                    Dt_StockInfo stockInfo = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == takeStockOrderDetail.TakePalletCode && x.StockStatus == StockStatusEmun.鐩樼偣搴撳瓨瀹屾垚.ObjToInt()).Includes(x => x.Details).First();
+                    if (stockInfo == null)
+                    {
+                        return WebResponseContent.Instance.Error($"鐩樼偣鎵樼洏{takeStockOrderDetail.TakePalletCode}鐨勫簱瀛樹俊鎭湭鎵惧埌锛屾垨鎵樼洏鐘舵�佷笉姝g‘");
+                    }
+                    if(outboundOrderDetail.OrderQuantity + takeStockOrderDetail.DifferenceQty > 0)
+                    {
+                        return WebResponseContent.Instance.Error("璇ユ潅鍙戝崟鎹槑缁嗗彂鏂欐暟閲忓ぇ浜庡緟骞宠处鏁伴噺锛岃鍙﹂�夊叾浠栧崟鎹钩璐�");
+                    }
+                    else if(outboundOrderDetail.OrderQuantity + takeStockOrderDetail.DifferenceQty < 0)
+                    {
+                        takeStockOrderDetail.TakeDetalStatus = TakeStockDetailStatusEnum.鏉傛敹鏉傚彂骞宠处澶勭悊涓�.ObjToInt();
+                    }
+                    else
+                    {
+                        takeStockOrderDetail.TakeDetalStatus = TakeStockDetailStatusEnum.鏉傛敹鏉傚彂骞宠处澶勭悊.ObjToInt();
+                    }
+                    OutboundCompleteRequestDTO request = new OutboundCompleteRequestDTO()
+                    {
+                        OrderNo = outboundOrder.OrderNo,
+                        PalletCode = stockInfo.PalletCode,
+                        Barcode = takeStockOrderDetail.barcode,
+                        Operator = App.User.UserName
+                    };
+                    decimal stoQty = takeStockOrderDetail.SysQty;
+                  webResponseContent = CompleteOutboundWithBarcode(request, stoQty, orderId);
+                    takeStockOrderDetail.DifferenceQty = 0;
+                    _takeStockOrderDetail.UpdateData(takeStockOrderDetail);
                 }
-                return WebResponseContent.Instance.OK();
+                return WebResponseContent.Instance.OK(data: webResponseContent);
             }
             catch(Exception ex)
             {
@@ -500,6 +543,226 @@
 
             }
         }
+        public WebResponseContent CompleteOutboundWithBarcode(OutboundCompleteRequestDTO request ,decimal stoQty, int orderDetailId)
+        {
+            WebResponseContent content = WebResponseContent.Instance;
+
+            OutboundCompleteResponseDTO response = new();
+            try
+            {
+                // 1. 鏍规嵁鎵樼洏鍙锋煡鎵惧簱瀛樹俊鎭�
+                Dt_StockInfo stockInfo = _stockInfoRepository.QueryFirst(x => x.PalletCode == request.PalletCode);
+                if (stockInfo == null)
+                {
+                    response.Success = false;
+                    response.Message = $"鎵樼洏鍙� {request.PalletCode} 瀵瑰簲鐨勫簱瀛樹笉瀛樺湪";
+                    return WebResponseContent.Instance.Error($"鎵樼洏鍙� {request.PalletCode} 瀵瑰簲鐨勫簱瀛樹笉瀛樺湪");
+                }
+
+                // 2. 鏍规嵁鏉$爜鏌ユ壘搴撳瓨鏄庣粏
+                Dt_StockInfoDetail stockDetail = _stockInfoDetailRepository.QueryFirst(x => x.Barcode == request.Barcode);
+                if (stockDetail == null)
+                {
+                    response.Success = false;
+                    response.Message = $"鏉$爜 {request.Barcode} 瀵瑰簲鐨勫簱瀛樻槑缁嗕笉瀛樺湪";
+                    return WebResponseContent.Instance.Error($"鏉$爜 {request.Barcode} 瀵瑰簲鐨勫簱瀛樻槑缁嗕笉瀛樺湪");
+                }
+
+                // 3. 楠岃瘉搴撳瓨鏄庣粏涓庢墭鐩樻槸鍚﹀尮閰�
+                if (stockDetail.StockId != stockInfo.Id)
+                {
+                    response.Success = false;
+                    response.Message = $"鏉$爜 {request.Barcode} 涓嶅睘浜庢墭鐩樺彿 {request.PalletCode} 鐨勫簱瀛樻槑缁�";
+                    return WebResponseContent.Instance.Error($"鏉$爜 {request.Barcode} 涓嶅睘浜庢墭鐩樺彿 {request.PalletCode} 鐨勫簱瀛樻槑缁�");
+                }
+
+                // 4. 鏌ユ壘鍑哄簱鍗曚俊鎭�
+                Dt_OutboundOrder outboundOrder = _outboundOrderRepository.QueryFirst(o => o.OrderNo == request.OrderNo);
+                if (outboundOrder == null)
+                {
+                    response.Success = false;
+                    response.Message = $"鍑哄簱鍗� {request.OrderNo} 涓嶅瓨鍦�";
+                    return WebResponseContent.Instance.Error($"鍑哄簱鍗� {request.OrderNo} 涓嶅瓨鍦�");
+                }
+
+                Dt_OutboundOrderDetail outboundOrderDetail = _outboundOrderDetailRepository.QueryFirst(x => x.Id == orderDetailId);
+                if (outboundOrderDetail == null)
+                {
+                    return WebResponseContent.Instance.Error("鏈壘鍒板嚭搴撳崟鏄庣粏");
+                }
+                // 瀹為檯鍑哄簱閲�
+                decimal actualOutboundQuantity = outboundOrderDetail.OrderQuantity;
+
+
+                // 8. 鍒ゆ柇鏄惁闇�瑕佹媶鍖咃紙褰撳嚭搴撴暟閲忓皬浜庡簱瀛樻暟閲忔椂闇�瑕佹媶鍖咃級
+                bool isUnpacked = outboundOrderDetail.OrderQuantity < stockDetail.StockQuantity;
+                List<MaterialCodeReturnDTO> returnDTOs = new List<MaterialCodeReturnDTO>();
+                string newBarcode = string.Empty;
+                // 9. 寮�鍚簨鍔�
+                _unitOfWorkManage.BeginTran();
+                try
+                {
+                    decimal beforeQuantity = stockDetail.StockQuantity; // 鍘熷搴撳瓨閲�
+
+                    Dt_AllocateMaterialInfo allocateMaterialInfo = new Dt_AllocateMaterialInfo();
+
+                    // 鏍规嵁鏄惁鎷嗗寘鎵ц涓嶅悓鐨勬搷浣�
+                    if (isUnpacked)
+                    {
+                        (string NewBarcode, List<MaterialCodeReturnDTO> MaterialCodeReturnDTOs) result = _outboundService.PerformUnpackOperation(stockDetail, stockInfo, actualOutboundQuantity, request, beforeQuantity, 0, outboundOrder.Id, outboundOrder.OrderNo);
+
+                        returnDTOs = result.MaterialCodeReturnDTOs;
+                        newBarcode = result.NewBarcode;
+
+                        MaterialCodeReturnDTO returnDTO = returnDTOs.First(x => x.Barcode == newBarcode);
+
+                        if (outboundOrder.OrderType != 0)
+                        {
+                            allocateMaterialInfo = new Dt_AllocateMaterialInfo()
+                            {
+                                Barcode = returnDTO.Barcode,
+                                BatchNo = returnDTO.BatchNo,
+                                FactoryArea = returnDTO.FactoryArea,
+                                MaterialCode = returnDTO.MaterialCode,
+                                MaterialName = returnDTO.MaterialName,
+                                OrderId = outboundOrder.Id,
+                                OrderNo = outboundOrder.OrderNo,
+                                Quantity = returnDTO.Quantity,
+                                SupplyCode = returnDTO.SuplierCode,
+                                Unit = stockDetail.Unit
+                            };
+                        }
+
+                    }
+                    else
+                    {
+                       _outboundService.PerformFullOutboundOperation(stockDetail, stockInfo, actualOutboundQuantity, request, beforeQuantity, 0);
+
+                        if (outboundOrder.OrderType != 0)
+                        {
+                            allocateMaterialInfo = new Dt_AllocateMaterialInfo()
+                            {
+                                Barcode = stockDetail.Barcode,
+                                BatchNo = stockDetail.BatchNo,
+                                FactoryArea = stockDetail.FactoryArea,
+                                MaterialCode = stockDetail.MaterielCode,
+                                MaterialName = stockDetail.MaterielName,
+                                OrderId = outboundOrder.Id,
+                                OrderNo = outboundOrder.OrderNo,
+                                Quantity = stockDetail.StockQuantity,
+                                SupplyCode = stockDetail.SupplyCode,
+                                Unit = stockDetail.Unit
+                            };
+                        }
+
+                    }
+                    
+                    List<Dt_OutboundOrderDetail> outboundOrderDetails = new List<Dt_OutboundOrderDetail>();
+
+                    outboundOrderDetails.Add(outboundOrderDetail);
+
+                    decimal allocatedQuantity = actualOutboundQuantity;
+                    List<Dt_OutboundOrderDetail> updateDetails = new();
+                    foreach (var item in outboundOrderDetails)
+                    {
+                        if (allocatedQuantity <= 0) break;
+
+                        decimal barcodeQuantity = allocatedQuantity;
+
+                        if (item.LockQuantity - item.OverOutQuantity >= allocatedQuantity)
+                        {
+                            item.OverOutQuantity += allocatedQuantity;
+                            item.CurrentDeliveryQty += allocatedQuantity;
+                            allocatedQuantity = 0;
+                        }
+                        else
+                        {
+                            barcodeQuantity = allocatedQuantity;
+                            allocatedQuantity -= (item.LockQuantity - item.OverOutQuantity);
+                            item.OverOutQuantity = allocatedQuantity;
+                            item.LockQuantity = allocatedQuantity;
+                            item.CurrentDeliveryQty = allocatedQuantity;
+                        }
+
+                        updateDetails.Add(item);
+
+                        List<Barcodes> barcodesList = new List<Barcodes>();
+                        Barcodes barcodes = new Barcodes
+                        {
+                            Barcode = isUnpacked ? newBarcode : stockDetail?.Barcode,
+                            Qty = barcodeQuantity,
+                            SupplyCode = stockDetail?.SupplyCode ?? "",
+                            BatchNo = stockDetail?.BatchNo ?? "",
+                            Unit = stockDetail?.Unit ?? ""
+                        };
+                        if (!string.IsNullOrEmpty(item.ReturnJsonData))
+                        {
+                            barcodesList = JsonConvert.DeserializeObject<List<Barcodes>>(item.ReturnJsonData) ?? new List<Barcodes>();
+                        }
+                        barcodesList.Add(barcodes);
+                        JsonSerializerSettings settings = new JsonSerializerSettings
+                        {
+                            ContractResolver = new CamelCasePropertyNamesContractResolver()
+                        };
+                        item.ReturnJsonData = JsonConvert.SerializeObject(barcodesList, settings);
+                    }
+
+                    // 鏇存柊鍑哄簱鍗曟槑缁嗙殑宸插嚭搴撴暟閲�
+                    _outboundOrderDetailRepository.UpdateData(updateDetails);
+
+                    // 鏇存柊閿佸畾璁板綍鐨勭疮璁″凡鍑哄簱鏁伴噺锛堥渶瑕佹洿鏂拌鎵樼洏璇ョ墿鏂欑殑鎵�鏈夌浉鍏宠褰曪級
+                    //UpdateLockInfoAllocatedQuantity(stockInfo.Id, stockDetail.MaterielCode, stockDetail.BatchNo, actualOutboundQuantity);
+
+                    // 鎻愪氦浜嬪姟
+                    _unitOfWorkManage.CommitTran();
+
+                    // 鏋勫缓杩斿洖淇℃伅
+                    ScannedStockDetailDTO scannedDetail = new ScannedStockDetailDTO
+                    {
+                        StockDetailId = stockDetail.Id,
+                        PalletCode = stockInfo.PalletCode,
+                        MaterielCode = stockDetail.MaterielCode,
+                        MaterielName = stockDetail.MaterielName,
+                        BatchNo = stockDetail.BatchNo,
+                        OriginalBarcode = request.Barcode,
+                        BeforeQuantity = beforeQuantity,
+                        AfterQuantity = isUnpacked ? actualOutboundQuantity : 0,
+                        ChangeQuantity = -actualOutboundQuantity,
+                        IsUnpacked = isUnpacked,
+                        MaterialCodes = returnDTOs
+                    };
+
+                    response.Success = true;
+                    response.Message = "鍑哄簱瀹屾垚";
+                    response.ScannedDetail = scannedDetail;
+                    response.UpdatedDetails = updateDetails;
+
+                    if (!string.IsNullOrEmpty(newBarcode))
+                    {
+                        // 鐗╂枡鏂版潯鐮佸洖浼�
+                        _feedbackMesService.BarcodeFeedback(newBarcode);
+                    }
+
+                    _feedbackMesService.OutboundFeedback(outboundOrder.OrderNo);
+
+                }
+                catch (Exception ex)
+                {
+                    _unitOfWorkManage.RollbackTran();
+                    response.Success = false;
+                    response.Message = $"鍑哄簱澶勭悊澶辫触锛歿ex.Message}";
+                    return WebResponseContent.Instance.Error(ex.Message);
+                }
+
+                content = WebResponseContent.Instance.OK(data: response);
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error("澶勭悊鍑哄簱瀹屾垚澶辫触锛�" + ex.Message);
+            }
+            return content;
+        }
+
     }
     
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs"
index 3a00a6e..534a7df 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs"
@@ -2766,8 +2766,13 @@
                 if (CheckOutboundOrderCompleted(outboundOrder.OrderNo))
                 {
                     outboundOrder.OrderStatus = OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt();
-                    _outboundOrderService.UpdateData(outboundOrder);
+
                 }
+                else
+                {
+                    outboundOrder.OrderStatus = OutOrderStatusEnum.鍑哄簱涓�.ObjToInt();
+                }
+                _outboundOrderService.UpdateData(outboundOrder);
                 _unitOfWorkManage.CommitTran();
                 //鍑哄簱鍥炰紶MES
                 _feedbackMesService.OutboundFeedback(outboundOrder.OrderNo);
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs"
index edcb58a..6adef6d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs"
@@ -19,6 +19,7 @@
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.CodeConfigEnum;
 using WIDESEA_Core.Helper;
+using WIDESEA_DTO.Base;
 using WIDESEA_DTO.Basic;
 using WIDESEA_DTO.CalcOut;
 using WIDESEA_DTO.ReturnMES;
@@ -1063,18 +1064,23 @@
                         List<Dt_StockInfoDetail> stockInfoDetails = stockInfo.Details.Where((x => x.StockQuantity > x.OutboundQuantity)).ToList();
 
                         decimal itemQuantity = item.LockQuantity - item.OverOutQuantity;
-
+                        decimal unitbarcodeQuantity;
                         foreach (var stockDetail in stockInfoDetails)
                         {
+                            
+
                             if (itemQuantity >= stockDetail.StockQuantity - stockDetail.OutboundQuantity)
                             {
+                                unitbarcodeQuantity = stockDetail.StockQuantity - stockDetail.OutboundQuantity;
+                                UnitConvertResultDTO currentResult = _basicService.UnitQuantityConvert(item.MaterielCode, item.Unit, item.BarcodeUnit, unitbarcodeQuantity);
+
                                 Barcodes barcodes = new Barcodes
                                 {
                                     Barcode = stockDetail.Barcode,
-                                    Qty = stockDetail.StockQuantity - stockDetail.OutboundQuantity,
+                                    Qty = currentResult.ToQuantity,
                                     SupplyCode = stockDetail?.SupplyCode ?? "",
                                     BatchNo = stockDetail?.BatchNo ?? "",
-                                    Unit = stockDetail?.Unit ?? ""
+                                    Unit = currentResult.ToUnit ?? ""
                                 };
 
                                 itemQuantity -= (stockDetail.StockQuantity - stockDetail.OutboundQuantity);
@@ -1085,13 +1091,14 @@
                             }
                             else
                             {
+                                UnitConvertResultDTO currentResult = _basicService.UnitQuantityConvert(item.MaterielCode, item.Unit, item.BarcodeUnit, itemQuantity);
                                 Barcodes barcodes = new Barcodes
                                 {
                                     Barcode = stockDetail.Barcode,
-                                    Qty = itemQuantity,
+                                    Qty = currentResult.ToQuantity,
                                     SupplyCode = stockDetail?.SupplyCode ?? "",
                                     BatchNo = stockDetail?.BatchNo ?? "",
-                                    Unit = stockDetail?.Unit ?? ""
+                                    Unit = currentResult.ToUnit ?? ""
                                 };
                                 stockDetail.OutboundQuantity += itemQuantity;
                                 barcodesList.Add(barcodes);
@@ -1478,13 +1485,15 @@
                         updateDetails.Add(item);
 
                         List<Barcodes> barcodesList = new List<Barcodes>();
+                        UnitConvertResultDTO currentResult = _basicService.UnitQuantityConvert(item.MaterielCode, item.Unit, item.BarcodeUnit, barcodeQuantity);
+
                         Barcodes barcodes = new Barcodes
                         {
                             Barcode = isUnpacked ? newBarcode : stockDetail?.Barcode,
-                            Qty = barcodeQuantity,
+                            Qty = currentResult.ToQuantity,
                             SupplyCode = stockDetail?.SupplyCode ?? "",
                             BatchNo = stockDetail?.BatchNo ?? "",
-                            Unit = stockDetail?.Unit ?? ""
+                            Unit = currentResult.ToUnit ?? ""
                         };
                         if (!string.IsNullOrEmpty(item.ReturnJsonData))
                         {
@@ -1640,7 +1649,7 @@
         /// <param name="beforeQuantity"></param>
         /// <param name="taskNum"></param>
         /// <returns></returns>
-        private (string NewBarcode, List<MaterialCodeReturnDTO> MaterialCodeReturnDTOs) PerformUnpackOperation(Dt_StockInfoDetail stockDetail, Dt_StockInfo stockInfo,
+        public (string NewBarcode, List<MaterialCodeReturnDTO> MaterialCodeReturnDTOs) PerformUnpackOperation(Dt_StockInfoDetail stockDetail, Dt_StockInfo stockInfo,
             decimal actualOutboundQuantity, OutboundCompleteRequestDTO request, decimal beforeQuantity, int taskNum, int orderId, string orderNo)
         {
             string newBarcode = GenerateNewBarcode();
@@ -1718,7 +1727,7 @@
         /// <summary>
         /// 鎵ц瀹屾暣鍑哄簱鎿嶄綔锛堜笉鎷嗗寘锛�
         /// </summary>
-        private void PerformFullOutboundOperation(Dt_StockInfoDetail stockDetail, Dt_StockInfo stockInfo,
+        public void PerformFullOutboundOperation(Dt_StockInfoDetail stockDetail, Dt_StockInfo stockInfo,
             decimal actualOutboundQuantity, OutboundCompleteRequestDTO request, decimal beforeQuantity, int taskNum)
         {
             // 淇濆瓨搴撳瓨鏄庣粏鍒板巻鍙茶褰�
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/TakeStockOrderController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/TakeStockOrderController.cs"
index 72d9d17..8bbacca 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/TakeStockOrderController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/TakeStockOrderController.cs"
@@ -76,7 +76,7 @@
         /// 鏉傚彂鏉傛敹鍗曞鐞�
         /// </summary>
         [HttpPost, HttpGet, Route("DocumentReconciliation"), AllowAnonymous]
-        public WebResponseContent DocumentReconciliation(int orderId, int id)
+        public WebResponseContent DocumentReconciliation(int orderId,int id)
         {
             return Service.DocumentReconciliation(orderId, id);
         }

--
Gitblit v1.9.3