/// <summary> /// 调整批次库存 /// </summary> /// <param name="entity"></param> /// <param name="sysNo"></param> private static void SetInventoryInfo(PurchaseOrderInfo entity, string sysNo) { string xml = @"<Message> <Header> <NameSpace>http://soa.ECommerce.com/CustomerProfile</NameSpace> <Action>#Audit#</Action> <Version>V10</Version> <Type>NPO</Type> <CompanyCode>#CompanyCode#</CompanyCode> <Tag>POInstock</Tag> <Language>zh-CN</Language> <From>IPP</From> <GlobalBusinessType>Listing</GlobalBusinessType> <StoreCompanyCode>#StoreCompanyCode#</StoreCompanyCode> <TransactionCode>05-001-0-001</TransactionCode> </Header> <Body> <Number>#Number#</Number> <InUser>#InUser#</InUser> ###### </Body> </Message>"; string batch = @"<ItemBatchInfo> <BatchNumber>#BatchNumber#</BatchNumber> <Status></Status> <ProductNumber>#ProductNumber#</ProductNumber> <ExpDate></ExpDate> <MfgDate></MfgDate> <LotNo></LotNo> <Stocks> <Stock> <Quantity>#Quantity#</Quantity> <AllocatedQty>#Quantity#</AllocatedQty> <WarehouseNumber>#WarehouseNumber#</WarehouseNumber> </Stock> </Stocks> </ItemBatchInfo>"; string newxml = xml.Replace("#InUser#", entity.PurchaseOrderBasicInfo.AuditUserSysNo.ToString()) .Replace("#Number#", entity.SysNo.ToString()) .Replace("#StoreCompanyCode#", entity.CompanyCode) .Replace("#CompanyCode#", entity.CompanyCode); if (sysNo == "") { newxml = newxml.Replace("#Audit#", "Audit"); } else { newxml = newxml.Replace("#Audit#", "CancelAudit"); } StringBuilder strb = new StringBuilder(); foreach (var item in entity.POItems) { if (!ProductPurchaseDA.IsBatchProduct(item)) { continue; } string[] strs = item.BatchInfo.Split(new char[] { ';' }); foreach (string str in strs) { string[] strChild = str.Split(new char[] { ':' }); if (strChild.Length == 3) { strb.Append(batch.Replace("#WarehouseNumber#", strChild[1]) .Replace("#Quantity#", sysNo + strChild[2]) .Replace("#ProductNumber#", item.ProductSysNo.ToString()) .Replace("#BatchNumber#", strChild[0]) ); } } } InventoryDA.AdjustBatchNumberInventory(newxml.Replace("######", strb.ToString())); }