diff --git a/.vscode/settings.json b/.vscode/settings.json
index a6c2fdd..881a358 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,4 +1,5 @@
{
"dotnet.preferCSharpExtension": true,
- "python.analysis.typeCheckingMode": "off"
+ "python.analysis.typeCheckingMode": "off",
+ "marscode.chatLanguage": "cn"
}
\ No newline at end of file
diff --git a/01.扩展/K3CExttensionMethods/Class1.cs b/01.扩展/K3CExttensionMethods/Class1.cs
new file mode 100644
index 0000000..3b2c4c0
--- /dev/null
+++ b/01.扩展/K3CExttensionMethods/Class1.cs
@@ -0,0 +1,191 @@
+using Kingdee.BOS.Core.DynamicForm.PlugIn;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.Log;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+
+namespace K3CExttensionMethods
+{
+ internal class Class1 : AbstractOperationServicePlugIn
+ {
+ #region event
+
+ ///
+ /// 选项设置
+ /// 1.在操作服务初始化是执行
+ /// 2.可以对操作的执行参数进行设置,比如是否是否启动事务,是否支持批量处理等
+ ///
+ ///
+ public override void OnPrepareOperationServiceOption(OnPrepareOperationServiceEventArgs e)
+ {
+ PrintEventInfo("OnPrepareOperationServiceOption", e);
+ base.OnPrepareOperationServiceOption(e);
+ }
+
+ ///
+ /// 在执行保存操作前触发
+ /// 1.此时数据包没有填充主键数据
+ /// 2.只有继承了AbstractSave的保存服务才会触发此事件
+ ///
+ ///
+ public override void BeforeDoSaveExecute(BeforeDoSaveExecuteEventArgs e)
+ {
+ PrintEventInfo("BeforeDoSaveExecute", e);
+ base.BeforeDoSaveExecute(e);
+ }
+
+ ///
+ /// 加载指定字段到实体数据包里
+ /// 1.在列表上执行操作时,单据的字段并没有被完全加载。 如果操作插件用到了未被加载的字段,一定会中断。
+ /// 2.本事件允许插件,强制要求加载某些字段,避免中断
+ ///
+ ///
+ public override void OnPreparePropertys(PreparePropertysEventArgs e)
+ {
+ PrintEventInfo("OnPreparePropertys", e);
+ base.OnPreparePropertys(e);
+ }
+
+ ///
+ /// 初始化操作结果
+ ///
+ ///
+ public override void InitializeOperationResult(Kingdee.BOS.Core.DynamicForm.IOperationResult result)
+ {
+ PrintEventInfo("InitializeOperationResult", result);
+ base.InitializeOperationResult(result);
+ }
+
+ ///
+ /// 添加自定义数据校验器
+ /// 在系统开始执行校验前,插件可以追加自己的校验器进入操作校验器集合
+ ///
+ ///
+ public override void OnAddValidators(AddValidatorsEventArgs e)
+ {
+ PrintEventInfo("OnAddValidators", e);
+ base.OnAddValidators(e);
+ }
+
+ ///
+ /// 执行操作事务前事件,通知插件对要处理的数据进行排序等预处理(事务外触发)
+ /// 1.此事件在操作校验之后、操作实现代码之前执行
+ /// 2.此事件在操作事务之前,即此事件中的数据库处理,不受操作的事务保护
+ /// 3.通常此事件,也可以用来进行数据校验
+ ///
+ /// e.SelectedRows 准备要处理的扩展实体 e.DataEntitys 处理后的实体
+ public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
+ {
+ PrintEventInfo("BeforeExecuteOperationTransaction", e);
+ base.BeforeExecuteOperationTransaction(e);
+ }
+
+ ///
+ /// 操作事物前事件(事务内触发)
+ ///
+ /// 1.此事件在操作校验之后
+ /// 2.此事件在操作事务开始之后
+ /// 3.此事件在操作执行代码之前
+ /// 4.此事件中的数据库处理,受操作的事务保护
+ /// 5.通常此事件,可以用来做数据准备,在操作之前,提前写数据到库
+ ///
+ public override void BeginOperationTransaction(BeginOperationTransactionArgs e)
+ {
+ PrintEventInfo("BeginOperationTransaction", e);
+ base.BeginOperationTransaction(e);
+ }
+
+ ///
+ /// 操作事物后事件(事务内触发)
+ /// 1.此事件在操作执行代码之后,操作的内部逻辑已经执行完毕
+ /// 2.此事件在操作事务提交之前
+ /// 3.此事件中的数据库处理,受操作的事务保护
+ /// 4.通常此事件,可以用来做同步数据,如同步生成其他单据,而且需要受事务保护
+ ///
+ ///
+ public override void EndOperationTransaction(EndOperationTransactionArgs e)
+ {
+ PrintEventInfo("EndOperationTransaction", e);
+ base.EndOperationTransaction(e);
+ }
+
+ ///
+ /// 内部事务执行失败后,调用回滚数据事件(事务外触发)
+ /// 1.此事件只有在操作执行过程中发生异常时才触发
+ /// 2.操作异常时,回滚内存中的数据
+ /// 3.避免访问数据库造成事务状态无效的错误
+ ///
+ ///
+ public override void RollbackData(OperationRollbackDataArgs e)
+ {
+ PrintEventInfo("RollbackData", e);
+ base.RollbackData(e);
+ }
+
+ ///
+ /// 执行操作事务后事件,通知插件对象执行其它事务无关的业务逻辑(事务外触发)
+ /// 1.此事件在操作执行后,操作的内部逻辑已经执行完毕;
+ /// 2.此事件在操作事务提交之后;
+ /// 3.此事件中的数据库处理,不受操作的事务保护
+ /// 4.通常此事件,也可以做同步数据,但是此同步数据的成功与否,不需影响操作
+ ///
+ ///
+ public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
+ {
+ PrintEventInfo("AfterExecuteOperationTransaction", e);
+ base.AfterExecuteOperationTransaction(e);
+ }
+ #endregion
+
+ #region private method
+
+ ///
+ /// 事件执行次数计数器
+ ///
+ private int counter;
+
+ ///
+ /// 事件执行次数计数器
+ ///
+ private int Counter
+ {
+ get { return ++counter; }
+ }
+
+ ///
+ /// 输出事件执行日志
+ ///
+ /// 事件名称
+ /// 事件参数
+ private void PrintEventInfo(string eventName, params object[] args)
+ {
+ var formId = GetFormId();
+ var parameters = string.Empty;
+ try
+ {
+ parameters = JsonConvert.SerializeObject(args);
+ }
+ catch
+ {
+ }
+ var log = string.Format("序号:{0},执行时间:{1},表单Id:{2},事件名称:{3},事件参数:{4}", Counter, DateTime.Now.ToString("yyyy -MM-dd HH:mm:ss.fff"), formId, eventName, parameters);
+ Debug.Print(log);
+ Logger.Error("EVENT", log, null);
+ }
+
+ ///
+ /// 获取业务对象标识
+ ///
+ ///
+ private string GetFormId()
+ {
+ return this.BusinessInfo.GetForm().Id;
+ }
+ #endregion
+
+ }
+}
diff --git a/01.扩展/K3CExttensionMethods/K3CExttensionMethods.csproj b/01.扩展/K3CExttensionMethods/K3CExttensionMethods.csproj
index 5805968..02545d0 100644
--- a/01.扩展/K3CExttensionMethods/K3CExttensionMethods.csproj
+++ b/01.扩展/K3CExttensionMethods/K3CExttensionMethods.csproj
@@ -62,6 +62,7 @@
+
diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI.Lexmark.sftp.SDK/Domain/Invoice.cs b/03.珠海市汇威精密制造有限公司/HUIWEI.Lexmark.sftp.SDK/Domain/Invoice.cs
index b9eb2ab..89d9e32 100644
--- a/03.珠海市汇威精密制造有限公司/HUIWEI.Lexmark.sftp.SDK/Domain/Invoice.cs
+++ b/03.珠海市汇威精密制造有限公司/HUIWEI.Lexmark.sftp.SDK/Domain/Invoice.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
@@ -9,208 +10,63 @@ namespace HUIWEI.Lexmark.sftp.SDK.Domain
// 注意: 生成的代码可能至少需要 .NET Framework 4.5 或 .NET Core/Standard 2.0。
///
- [System.SerializableAttribute()]
- [System.ComponentModel.DesignerCategoryAttribute("code")]
- [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
+ [Serializable()]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true)]
[XmlRoot(elementName: "Invoice", Namespace = "", IsNullable = false)]
public partial class Invoice
{
- private InvoiceHeader headerField;
-
- private InvoiceLineItem[] lineItemField;
-
- private InvoiceSummary summaryField;
-
///
- public InvoiceHeader Header
- {
- get
- {
- return this.headerField;
- }
- set
- {
- this.headerField = value;
- }
- }
+ public InvoiceHeader Header { get; set; }
///
[System.Xml.Serialization.XmlElementAttribute("LineItem")]
- public InvoiceLineItem[] LineItem
- {
- get
- {
- return this.lineItemField;
- }
- set
- {
- this.lineItemField = value;
- }
- }
+ public InvoiceLineItem[] LineItem { get; set; }
///
- public InvoiceSummary Summary
- {
- get
- {
- return this.summaryField;
- }
- set
- {
- this.summaryField = value;
- }
- }
+ public InvoiceSummary Summary { get; set; }
}
///
- [System.SerializableAttribute()]
- [System.ComponentModel.DesignerCategoryAttribute("code")]
- [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
+ [Serializable()]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true)]
public partial class InvoiceHeader
{
- private string supplierField;
-
- private string buyerField;
-
- private string invoiceTypeField;
-
-
- private string currencyField;
-
- private string paymentTermsField;
-
- private string incotermsField;
-
- private string customerNumberField;
-
- private object headerField1Field;
-
- private object headerField2Field;
-
///
- public string Supplier
- {
- get
- {
- return this.supplierField;
- }
- set
- {
- this.supplierField = value;
- }
- }
+ public string Supplier { get; set; }
///
- public string Buyer
- {
- get
- {
- return this.buyerField;
- }
- set
- {
- this.buyerField = value;
- }
- }
+ public string Buyer { get; set; }
///
- public string InvoiceType
- {
- get
- {
- return this.invoiceTypeField;
- }
- set
- {
- this.invoiceTypeField = value;
- }
- }
+ public string InvoiceType { get; set; }
///
- public uint InvoiceDate { get; set; }
+ public string InvoiceDate { get; set; }
///
- public uint InvoiceNumber { get; set; }
+ public string InvoiceNumber { get; set; }
///
- public string Currency
- {
- get
- {
- return this.currencyField;
- }
- set
- {
- this.currencyField = value;
- }
- }
+ public string Currency { get; set; }
///
- public string PaymentTerms
- {
- get
- {
- return this.paymentTermsField;
- }
- set
- {
- this.paymentTermsField = value;
- }
- }
+ public string PaymentTerms { get; set; }
///
- public string Incoterms
- {
- get
- {
- return this.incotermsField;
- }
- set
- {
- this.incotermsField = value;
- }
- }
+ public string Incoterms { get; set; }
///
- public string CustomerNumber
- {
- get
- {
- return this.customerNumberField;
- }
- set
- {
- this.customerNumberField = value;
- }
- }
+ public string CustomerNumber { get; set; }
///
- public object HeaderField1
- {
- get
- {
- return this.headerField1Field;
- }
- set
- {
- this.headerField1Field = value;
- }
- }
+ public string HeaderField1 { get; set; }
///
- public object HeaderField2
- {
- get
- {
- return this.headerField2Field;
- }
- set
- {
- this.headerField2Field = value;
- }
- }
+ public string HeaderField2 { get; set; }
///
public InvoiceHeaderVendor Vendor { get; set; }
@@ -220,13 +76,13 @@ namespace HUIWEI.Lexmark.sftp.SDK.Domain
}
///
- [System.SerializableAttribute()]
- [System.ComponentModel.DesignerCategoryAttribute("code")]
- [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
+ [Serializable()]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true)]
public partial class InvoiceHeaderVendor
{
///
- public object PartyId { get; set; }
+ public string PartyId { get; set; }
///
public string Name { get; set; }
@@ -235,25 +91,25 @@ namespace HUIWEI.Lexmark.sftp.SDK.Domain
public string AddressLine1 { get; set; }
///
- public object AddressLine2 { get; set; }
+ public string AddressLine2 { get; set; }
///
public string City { get; set; }
///
- public object State { get; set; }
+ public string State { get; set; }
///
- public object PostalCode { get; set; }
+ public string PostalCode { get; set; }
///
- public object Country { get; set; }
+ public string Country { get; set; }
///
- public object ContactName { get; set; }
+ public string ContactName { get; set; }
///
- public object Email { get; set; }
+ public string Email { get; set; }
///
public string Telephone { get; set; }
@@ -263,497 +119,125 @@ namespace HUIWEI.Lexmark.sftp.SDK.Domain
}
///
- [System.SerializableAttribute()]
- [System.ComponentModel.DesignerCategoryAttribute("code")]
- [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
+ [Serializable()]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true)]
public partial class InvoiceHeaderBillTo
{
- private string partyIdField;
-
- private string nameField;
-
- private string addressLine1Field;
-
- private string addressLine2Field;
-
- private string cityField;
-
- private object stateField;
-
- private ushort postalCodeField;
-
- private string countryField;
-
- private object contactNameField;
-
- private object emailField;
-
- private object telephoneField;
-
- private object faxField;
+ ///
+ public string PartyId { get; set; }
///
- public string PartyId
- {
- get
- {
- return this.partyIdField;
- }
- set
- {
- this.partyIdField = value;
- }
- }
+ public string Name { get; set; }
///
- public string Name
- {
- get
- {
- return this.nameField;
- }
- set
- {
- this.nameField = value;
- }
- }
+ public string AddressLine1 { get; set; }
///
- public string AddressLine1
- {
- get
- {
- return this.addressLine1Field;
- }
- set
- {
- this.addressLine1Field = value;
- }
- }
+ public string AddressLine2 { get; set; }
///
- public string AddressLine2
- {
- get
- {
- return this.addressLine2Field;
- }
- set
- {
- this.addressLine2Field = value;
- }
- }
+ public string City { get; set; }
///
- public string City
- {
- get
- {
- return this.cityField;
- }
- set
- {
- this.cityField = value;
- }
- }
-
- ///
- public object State
- {
- get
- {
- return this.stateField;
- }
- set
- {
- this.stateField = value;
- }
- }
+ public string State { get; set; }
///
public string PostalCode { get; set; }
///
- public string Country
- {
- get
- {
- return this.countryField;
- }
- set
- {
- this.countryField = value;
- }
- }
+ public string Country { get; set; }
///
- public object ContactName
- {
- get
- {
- return this.contactNameField;
- }
- set
- {
- this.contactNameField = value;
- }
- }
+ public string ContactName { get; set; }
///
- public object Email
- {
- get
- {
- return this.emailField;
- }
- set
- {
- this.emailField = value;
- }
- }
+ public string Email { get; set; }
///
- public object Telephone
- {
- get
- {
- return this.telephoneField;
- }
- set
- {
- this.telephoneField = value;
- }
- }
+ public string Telephone { get; set; }
///
- public object Fax
- {
- get
- {
- return this.faxField;
- }
- set
- {
- this.faxField = value;
- }
- }
+ public string Fax { get; set; }
}
///
- [System.SerializableAttribute()]
- [System.ComponentModel.DesignerCategoryAttribute("code")]
- [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
+ [Serializable()]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true)]
public partial class InvoiceLineItem
{
- private byte item_Line_NumberField;
-
- private ulong lXK_PONumberField;
-
- private object lXK_PODateField;
-
- private ulong vendorSONumberField;
-
- private uint deliveryNoteNumberField;
-
- private object billOfLadingNumberField;
-
- private object shipmentDateField;
-
- private string lEX_PNField;
-
- private ushort quantityField;
-
- private string unit_Of_MeasureField;
-
- private string lXK_DescriptionField;
-
- private decimal unitPriceField;
-
- private decimal totalAmountField;
-
- private object lineItemField1Field;
-
- private object lineItemField2Field;
+ ///
+ public string Item_Line_Number { get; set; }
///
- public byte Item_Line_Number
- {
- get
- {
- return this.item_Line_NumberField;
- }
- set
- {
- this.item_Line_NumberField = value;
- }
- }
+ public string LXK_PONumber { get; set; }
///
- public ulong LXK_PONumber
- {
- get
- {
- return this.lXK_PONumberField;
- }
- set
- {
- this.lXK_PONumberField = value;
- }
- }
+ public string LXK_PODate { get; set; }
+ ///
+ public string VendorSONumber { get; set; }
///
- public object LXK_PODate
- {
- get
- {
- return this.lXK_PODateField;
- }
- set
- {
- this.lXK_PODateField = value;
- }
- }
+ public string DeliveryNoteNumber { get; set; }
///
- public ulong VendorSONumber
- {
- get
- {
- return this.vendorSONumberField;
- }
- set
- {
- this.vendorSONumberField = value;
- }
- }
+ public string BillOfLadingNumber { get; set; }
///
- public uint DeliveryNoteNumber
- {
- get
- {
- return this.deliveryNoteNumberField;
- }
- set
- {
- this.deliveryNoteNumberField = value;
- }
- }
+ public string ShipmentDate { get; set; }
///
- public object BillOfLadingNumber
- {
- get
- {
- return this.billOfLadingNumberField;
- }
- set
- {
- this.billOfLadingNumberField = value;
- }
- }
+ public string LEX_PN { get; set; }
///
- public object ShipmentDate
- {
- get
- {
- return this.shipmentDateField;
- }
- set
- {
- this.shipmentDateField = value;
- }
- }
+ public int Quantity { get; set; }
///
- public string LEX_PN
- {
- get
- {
- return this.lEX_PNField;
- }
- set
- {
- this.lEX_PNField = value;
- }
- }
+ public string Unit_Of_Measure { get; set; }
///
- public ushort Quantity
- {
- get
- {
- return this.quantityField;
- }
- set
- {
- this.quantityField = value;
- }
- }
+ public string LXK_Description { get; set; }
///
- public string Unit_Of_Measure
- {
- get
- {
- return this.unit_Of_MeasureField;
- }
- set
- {
- this.unit_Of_MeasureField = value;
- }
- }
+ public decimal UnitPrice { get; set; }
///
- public string LXK_Description
- {
- get
- {
- return this.lXK_DescriptionField;
- }
- set
- {
- this.lXK_DescriptionField = value;
- }
- }
+ public decimal TotalAmount { get; set; }
///
- public decimal UnitPrice
- {
- get
- {
- return this.unitPriceField;
- }
- set
- {
- this.unitPriceField = value;
- }
- }
+ public string LineItemField1 { get; set; }
///
- public decimal TotalAmount
- {
- get
- {
- return this.totalAmountField;
- }
- set
- {
- this.totalAmountField = value;
- }
- }
-
- ///
- public object LineItemField1
- {
- get
- {
- return this.lineItemField1Field;
- }
- set
- {
- this.lineItemField1Field = value;
- }
- }
-
- ///
- public object LineItemField2
- {
- get
- {
- return this.lineItemField2Field;
- }
- set
- {
- this.lineItemField2Field = value;
- }
- }
+ public string LineItemField2 { get; set; }
}
- ///
- [System.SerializableAttribute()]
- [System.ComponentModel.DesignerCategoryAttribute("code")]
- [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
+ ///
+ ///
+ ///
+ [Serializable()]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true)]
public partial class InvoiceSummary
{
-
- private decimal shippingChargeField;
-
- private decimal otherChargesField;
-
- private decimal taxAmountField;
-
- private decimal taxableAmountField;
-
- private decimal totalGrossAmountField;
+ ///
+ ///
+ ///
+ public decimal ShippingCharge { get; set; }
///
- public decimal ShippingCharge
- {
- get
- {
- return this.shippingChargeField;
- }
- set
- {
- this.shippingChargeField = value;
- }
- }
+ public decimal OtherCharges { get; set; }
///
- public decimal OtherCharges
- {
- get
- {
- return this.otherChargesField;
- }
- set
- {
- this.otherChargesField = value;
- }
- }
+ public decimal TaxAmount { get; set; }
///
- public decimal TaxAmount
- {
- get
- {
- return this.taxAmountField;
- }
- set
- {
- this.taxAmountField = value;
- }
- }
+ public decimal TaxableAmount { get; set; }
///
- public decimal TaxableAmount
- {
- get
- {
- return this.taxableAmountField;
- }
- set
- {
- this.taxableAmountField = value;
- }
- }
-
- ///
- public decimal TotalGrossAmount
- {
- get
- {
- return this.totalGrossAmountField;
- }
- set
- {
- this.totalGrossAmountField = value;
- }
- }
+ public decimal TotalGrossAmount { get; set; }
}
diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI.Lexmark.sftp.SDK/Sql/物料查询.sql b/03.珠海市汇威精密制造有限公司/HUIWEI.Lexmark.sftp.SDK/Sql/物料查询.sql
index 6518352..3ea6fe3 100644
--- a/03.珠海市汇威精密制造有限公司/HUIWEI.Lexmark.sftp.SDK/Sql/物料查询.sql
+++ b/03.珠海市汇威精密制造有限公司/HUIWEI.Lexmark.sftp.SDK/Sql/物料查询.sql
@@ -6,28 +6,55 @@ BEGIN
;WITH #LEX_MaterialNumber AS(
SELECT b.billno
+ --FROM (SELECT CAST(''+REPLACE('41X6129,50X1203,B225X00',',','')+'' AS xml) billno) a
FROM (SELECT CAST(''+REPLACE(@materialNumber,',','')+'' AS xml) billno) a
OUTER APPLY (SELECT T.C.value('.','varchar(50)') billno FROM a.billno.nodes('/v') AS T(C)) b
)
- SELECT *
+ ,#ݴ AS (
+ SELECT t1.*
+ FROM #LEX_MaterialNumber tt
+ CROSS APPLY (
+ SELECT t0.FMATERIALID,t0.FNUMBER,t0_l.FNAME
+ --,tt.billno 'FSPECIFICATION'
+ ,t0_l.FSPECIFICATION
+ ,t1.FNUMBER Unit
+ ,CONCAT('FF',ISNULL(t0ap.FAUXPROPERTYID,0)) AS 'FAUXPROPERTYID'
+ ,CONVERT(int,t0ap.FISENABLE) FISENABLE
+ ,tt.billno LexNumber
+ FROM T_BD_MATERIAL t0
+ INNER JOIN T_BD_MATERIAL_L t0_l on t0_l.FMATERIALID = t0.FMATERIALID
+ AND t0_l.FLOCALEID = 2052
+ INNER JOIN T_BD_MATERIALSALE t0s on t0s.FMATERIALID = t0.FMATERIALID
+ INNER JOIN T_BD_UNIT t1 on t1.FUNITID = t0s.FSALEUNITID
+ LEFT JOIN t_BD_MaterialAuxPty t0ap on t0.FMATERIALID = t0ap.FMATERIALID
+ WHERE 1 = 1 AND t0.FUSEORGID = @ORGID --944852
+ AND (CHARINDEX(tt.billno,t0_l.FNAME) > 0)
+ AND t0.FDOCUMENTSTATUS = 'C'
+ AND t0.FFORBIDSTATUS = 'A'
+ ) t0
+ PIVOT
+ (
+ SUM(t0.FISENABLE) FOR
+ t0.FAUXPROPERTYID IN (FF100001,FF100002)
+ ) t1
+ )
+ SELECT *
FROM (
- SELECT t0.FMATERIALID,t0.FNUMBER,t0_l.FNAME,t0_l.FSPECIFICATION,t1.FNUMBER Unit
- ,CONCAT('FF',ISNULL(t0ap.FAUXPROPERTYID,0)) AS 'FAUXPROPERTYID'
- ,CONVERT(int,t0ap.FISENABLE) FISENABLE
- FROM T_BD_MATERIAL t0
- INNER JOIN T_BD_MATERIAL_L t0_l on t0_l.FMATERIALID = t0.FMATERIALID
- AND t0_l.FLOCALEID = 2052
- INNER JOIN T_BD_MATERIALSALE t0s on t0s.FMATERIALID = t0.FMATERIALID
- INNER JOIN T_BD_UNIT t1 on t1.FUNITID = t0s.FSALEUNITID
- INNER JOIN #LEX_MaterialNumber tx on CHARINDEX(tx.billno,t0_l.FNAME) > 0
- LEFT JOIN t_BD_MaterialAuxPty t0ap on t0.FMATERIALID = t0ap.FMATERIALID
- WHERE 1=1
- AND t0.FUSEORGID = @ORGID
+ SELECT t0.LexNumber,COUNT(1) ls
+ FROM #ݴ t0
+ GROUP BY t0.LexNumber
) t0
- PIVOT
- (
- SUM(t0.FISENABLE) FOR
- t0.FAUXPROPERTYID IN (FF100001,FF100002)
+ CROSS APPLY (
+ SELECT t1.FMATERIALID,t1.FNUMBER,t1.FNAME,t1.LexNumber 'FSPECIFICATION'
+ ,t1.Unit,t1.FF100001,t1.FF100002
+ FROM #ݴ t1
+ WHERE t1.LexNumber = t0.LexNumber AND t0.ls = 1
+ UNION ALL
+ SELECT t1.FMATERIALID,t1.FNUMBER,t1.FNAME,t1.FSPECIFICATION
+ ,t1.Unit,t1.FF100001,t1.FF100002
+ FROM #ݴ t1
+ WHERE t1.LexNumber = t0.LexNumber AND t0.ls > 1
+ AND (t0.LexNumber = t1.FSPECIFICATION)
) t1
END
\ No newline at end of file
diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/AR_receivable/BillEventPlugInEx.py b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/AR_receivable/BillEventPlugInEx.py
index c6b3df1..fd56c0b 100644
--- a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/AR_receivable/BillEventPlugInEx.py
+++ b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/AR_receivable/BillEventPlugInEx.py
@@ -35,7 +35,7 @@ def BarItemClick(e):
billObj = this.View.Model.DataObject;
if billObj.CustomerID_Id != 957286:
return
-
+ # raise Exception(JsonUtil.Serialize(billObj))
sqlL = """/*dialect*/
WITH #辅助资料 AS (
SELECT t1_l.FNAME,t1e_l.FDATAVALUE,t1e.FENTRYID,t1e.FNUMBER
@@ -95,16 +95,54 @@ WHERE 1=1
# raise Exception(FSFTPPutPath)
# //存放地址
- sendPath = row["FSFTPBEFORESAVEPATH"]+ "/SEND/ASN/";
+ sendPath = row["FSFTPBEFORESAVEPATH"]+ "/SEND/INV/";
helper = SFTPHelper(FSFTPLinkPath, FSFTPUser, FSFTPPassword, FSFTPPort)
- PONumber = ""
+ InvoicObj = Invoice();
+ InvoicHeader = InvoiceHeader()
+ InvoicHeader.Supplier = "Huiwei"
+ InvoicHeader.Buyer = "Lexmark";
+ InvoicHeader.InvoiceType = "Debit"
+ InvoicHeader.InvoiceDate = (str(billObj["Date"])[0:10]).replace("-","")
+ InvoicHeader.InvoiceNumber = "";
+ InvoicHeader.Currency = "USD";
- InvoicObj = A();
+ PayConditon = billObj.PayConditon;
+ if PayConditon != None:
+ # InvoicHeader.PaymentTerms = "R135 Accumulation - 4th following Month/30th day";
+ InvoicHeader.PaymentTerms = PayConditon["Name"][0]["Value"];
+ InvoicHeader.Incoterms = "EXW";
+ InvoicHeader.CustomerNumber = "R8610";
+ InvoicHeader.HeaderField1 = "";
+ InvoicHeader.HeaderField2 = "";
+
+ InvoicLineItem = List[InvoiceLineItem]()
message = "";
+ entry = billObj.AP_PAYABLEENTRY;
+ for item in entry:
+ invoicItem = InvoiceLineItem();
+ invoicItem.Item_Line_Number = ""
+ invoicItem.LXK_PONumber = ""
+ invoicItem.LXK_PODate = ""
+ invoicItem.VendorSONumber = "5002008647"
+ # 发货单号
+ invoicItem.DeliveryNoteNumber = ""
+ invoicItem.BillOfLadingNumber = ""
+ invoicItem.ShipmentDate = ""
+ invoicItem.LEX_PN = ""
+ invoicItem.Quantity = item["PriceQty"]
+ invoicItem.Unit_Of_Measure = "EA"
+ invoicItem.LXK_Description = ""
+ invoicItem.UnitPrice = item["TaxPrice"]
+ invoicItem.TotalAmount = item["FALLAMOUNTFOR"]
+ invoicItem.LineItemField1 = ""
+ invoicItem.LineItemField2 = ""
+
+ InvoicObj.Header = InvoicHeader;
+ InvoicObj.LineItem = InvoicLineItem.ToArray();
# 转换成xml字符串
InvoicXmlStr = XmlSerializerHelper.Serialize(InvoicObj);
@@ -113,17 +151,17 @@ WHERE 1=1
# 加载成XML文件
xmldoc.LoadXml(InvoicXmlStr)
# 文件名
- fileName = "ASN" + PONumber + GetFileName()
+ fileName = "INV" + "" + GetFileName()
# 保存XML文件
- xmldoc.Save(sendPath + fileName);
+ # xmldoc.Save(sendPath + fileName);
# 推送到SFTP
- helper.Put(sendPath + fileName, FSFTPPutPath + fileName);
+ # helper.Put(sendPath + fileName, FSFTPPutPath + fileName);
- AddSftpOpRecord(fileName,sendPath,PONumber,billObj.BillNo,billObj.Id,"ASN")
+ # AddSftpOpRecord(fileName,sendPath,"",billObj.BillNo,billObj.Id,"INV")
- this.View.ShowMessage("ASN推送完成,PO:{0},文件名:{1}".format(ASNHeader.LEX_PO,fileName))
+ this.View.ShowMessage("INV推送完成,PO:{0},文件名:{1}".format("",fileName))
def GetFileName():
diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/HUIWEI.Python.pyproj b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/HUIWEI.Python.pyproj
index 4b2a528..b117759 100644
--- a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/HUIWEI.Python.pyproj
+++ b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/HUIWEI.Python.pyproj
@@ -23,6 +23,10 @@
false
+
+
+
+
@@ -51,6 +55,7 @@
+
@@ -58,6 +63,11 @@
+
+
+
+
+
diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/产品Bom缺料分析报表构造.py b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/产品Bom缺料分析报表构造.py
index 2ec1e85..03ee6ab 100644
--- a/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/产品Bom缺料分析报表构造.py
+++ b/03.珠海市汇威精密制造有限公司/HUIWEI.Python/产品Bom层级缺料分析查询表/产品Bom缺料分析报表构造.py
@@ -82,7 +82,7 @@ SELECT t0.FMATERIALID
,ISNULL(t3.sumQTY,0) AS 即时库存
,ISNULL(t4.sumBASENOPICKEDQTY,0) AS 未发数
,ISNULL(t5.sumNoStockInQty,0) AS 在制数
- ,CASE WHEN CHARINDEX('TC',t0.FNUMBER) = 1 THEN 0 WHEN CHARINDEX('TC',t0.FNUMBER) = 1 THEN 0 ELSE ISNULL(t1.数量 - t1.未发数量,0) END AS '受订量'
+ ,CASE WHEN CHARINDEX('TB',t0.FNUMBER) = 1 THEN 0 WHEN CHARINDEX('TC',t0.FNUMBER) = 1 THEN 0 ELSE ISNULL(t1.数量 - t1.未发数量,0) END AS '受订量'
,ISNULL(t2.数量 - t2.入库数量,0) AS '在途量'
,(ISNULL(t3.sumQTY,0) - ISNULL(t4.sumBASENOPICKEDQTY,0) + ISNULL(t5.sumNoStockInQty,0) - ISNULL(t1.数量 - t1.未发数量,0) + ISNULL(t2.数量 - t2.入库数量,0)) AS '可用库存'
,ISNULL(t6.进检量,0) AS '进检量'
diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI/HUIWEI.csproj b/03.珠海市汇威精密制造有限公司/HUIWEI/HUIWEI.csproj
index 5492780..bb8078d 100644
--- a/03.珠海市汇威精密制造有限公司/HUIWEI/HUIWEI.csproj
+++ b/03.珠海市汇威精密制造有限公司/HUIWEI/HUIWEI.csproj
@@ -135,5 +135,8 @@
ExtensionMethods
+
+
+
\ No newline at end of file
diff --git a/03.珠海市汇威精密制造有限公司/HUIWEI/SAL_SaleOrder/xml/INVOIC.xml b/03.珠海市汇威精密制造有限公司/HUIWEI/SAL_SaleOrder/xml/INVOIC.xml
index de1dd34..964be5a 100644
--- a/03.珠海市汇威精密制造有限公司/HUIWEI/SAL_SaleOrder/xml/INVOIC.xml
+++ b/03.珠海市汇威精密制造有限公司/HUIWEI/SAL_SaleOrder/xml/INVOIC.xml
@@ -1,119 +1,119 @@
-
- Huiwei
- Lexmark
- Debit
- 20240625
- 0901239766
- USD
- R135 Accumulation - 4th following Month/30th day
- EXW
- R8610
-
-
-
-
- HUIWEI GLOBAL
- LAI STREET SHTIN NT
-
- Hong Kong
-
-
-
-
-
- 852-00099918
- 852-00099950
-
-
- R8610
- lexmark International Technology Sà
- 20, Route de Pré-Bois
- ICC Building, Bloc A
- Genève
-
- 1215
- Switzerland
-
-
-
-
-
-
-
- 00010
- 4501007448
-
- 5002008647
- 0081026633
-
-
- 58D3H0K
- 2000
- EA
- Black CRTG High Return
- 14.22
- 28440.00
-
-
-
-
- 00020
- 4501007448
-
- 5002008647
- 0081026633
-
-
- 18MJ441
- 10
- EA
- Fujifilm A3410SD Low Volt TW
- 168.44
- 1684.40
-
-
-
-
- 00040
- 4501007448
-
- 5002008647
- 0081026633
-
-
- 62D3X0E
- 126
- EA
- MX71/81x Black CRTG Extra CORP
- 19.12
- 2409.12
-
-
-
-
- 00080
- 4501007448
-
- 5002008647
- 0081026633
-
-
- 78C30C0
- 288
- EA
- Cyan CRTG Return
- 5.19
- 1494.72
-
-
-
-
- 0.00
- 0.00
- 0.00
- 34028.24
- 34028.24
-
+
+ Huiwei
+ Lexmark
+ Debit
+ 20240625
+ 0901239766
+ USD
+ R135 Accumulation - 4th following Month/30th day
+ EXW
+ R8610
+
+
+
+
+ HUIWEI GLOBAL
+ LAI STREET SHTIN NT
+
+ Hong Kong
+
+
+
+
+
+ 852-00099918
+ 852-00099950
+
+
+ R8610
+ lexmark International Technology Sà
+ 20, Route de Pré-Bois
+ ICC Building, Bloc A
+ Genève
+
+ 1215
+ Switzerland
+
+
+
+
+
+
+
+ 00010
+ 4501007448
+
+ 5002008647
+ 0081026633
+
+
+ 58D3H0K
+ 2000
+ EA
+ Black CRTG High Return
+ 14.22
+ 28440.00
+
+
+
+
+ 00020
+ 4501007448
+
+ 5002008647
+ 0081026633
+
+
+ 18MJ441
+ 10
+ EA
+ Fujifilm A3410SD Low Volt TW
+ 168.44
+ 1684.40
+
+
+
+
+ 00040
+ 4501007448
+
+ 5002008647
+ 0081026633
+
+
+ 62D3X0E
+ 126
+ EA
+ MX71/81x Black CRTG Extra CORP
+ 19.12
+ 2409.12
+
+
+
+
+ 00080
+ 4501007448
+
+ 5002008647
+ 0081026633
+
+
+ 78C30C0
+ 288
+ EA
+ Cyan CRTG Return
+ 5.19
+ 1494.72
+
+
+
+
+ 0.00
+ 0.00
+ 0.00
+ 34028.24
+ 34028.24
+
diff --git a/05.长园/CYG.Python/CRM_Contract/ListEventPlugInEx.py b/05.长园/CYG.Python/CRM_Contract/ListEventPlugInEx.py
index dd41562..f633d1a 100644
--- a/05.长园/CYG.Python/CRM_Contract/ListEventPlugInEx.py
+++ b/05.长园/CYG.Python/CRM_Contract/ListEventPlugInEx.py
@@ -22,7 +22,7 @@ def BarItemClick(e):
# if this.Context.UserId != 134339:
# raise Exception("没有此功能的操作权限!")
-
+ # 销售合同计算
# 1.更新销售合同合同类型
sql1 = """/*dialect*/
UPDATE T_CRM_CONTRACT SET F_CYG_CONTRACTTYPE = '664cd624468638' WHERE F_CYG_CONTRACTTYPE = ''
@@ -60,7 +60,7 @@ UPDATE t1 SET t1.FCRMCONTRACTID = t0.CONTRACT_ID
FROM #查询数据 t0
INNER JOIN T_SAL_ORDER t1 on t1.FID = t0.FID
INNER JOIN #单一数据 tt on tt.FID = t0.FID
-WHERE 1=1
+WHERE 1 = 1
"""
diff --git a/05.长园/CYG/销售合同数据计算/20241226.sql b/05.长园/CYG/销售合同数据计算/20241226.sql
new file mode 100644
index 0000000..9a93907
--- /dev/null
+++ b/05.长园/CYG/销售合同数据计算/20241226.sql
@@ -0,0 +1,129 @@
+;WITH #۶ AS (
+ SELECT t1.FSALES
+ ,SUM(t1e_f.FALLAMOUNT_LC) 'ۼ۶λ'
+ ,SUM(t1e.F_CYG_OPENTOTAL) AS 'С'
+ ,SUM(t1e.F_CYG_OUTSOURCINGTOTAL) AS 'С'
+ ,SUM(t1e.F_CYG_MOUNTINGTOTAL) AS 'װС'
+ ,SUM(t1e.F_CYG_COSTTOTAL) AS 'ɱС'
+ FROM T_SAL_ORDER t1
+ INNER JOIN T_SAL_ORDERENTRY t1e on t1e.FID = t1.FID
+ INNER JOIN T_SAL_ORDERENTRY_F t1e_f on t1e_f.FENTRYID = t1e.FENTRYID
+ WHERE 1=1
+ AND t1.FDOCUMENTSTATUS = 'C'
+ AND t1.F_CYG_CHECKBALANCE != '1'
+ AND t1e.F_CYG_CHECKBALANCE1 != '1'
+ AND t1.FBILLTYPEID != 'a300e2620037435492aed9842875b451'
+ AND t1e.FMRPTERMINATESTATUS != 'B'
+ GROUP BY t1.FSALES
+)
+SELECT t1.*
+ ,t2.ۼƷλ
+ ,t3.ۼƿƱ
+ INTO #۶
+FROM #۶ t1
+ OUTER APPLY (
+ SELECT SUM(t3e.FALLAMOUNT) AS 'ۼƷλ'
+ FROM T_AR_RECEIVABLE t3
+ INNER JOIN T_AR_RECEIVABLEENTRY t3e on t3e.FID = t3.FID
+ WHERE t1.FSALES = t3.FSALES
+ AND t3.FSETACCOUNTTYPE = '2'--ͣݹ
+ AND t3.FDOCUMENTSTATUS = 'C'
+ AND t3.FBYVERIFY = '0'
+ GROUP BY t3.FSALES
+ ) t2
+ OUTER APPLY (
+ SELECT SUM(t3e.FALLAMOUNT) AS 'ۼƿƱ'
+ FROM T_AR_RECEIVABLE t3
+ INNER JOIN T_AR_RECEIVABLEENTRY t3e on t3e.FID = t3.FID
+ WHERE t1.FSALES = t3.FSALES
+ AND t3.FSETACCOUNTTYPE = '3'--ͣ
+ AND t3.FDOCUMENTSTATUS = 'C'
+ AND CHARINDEX('-',t3.FBILLNO) = 0
+ GROUP BY t3.FSALES
+ ) t3
+
+;WITH #ͬ AS (
+ SELECT t4.FOldFId
+ ,CAST(t4.FJSONDATA AS nvarchar(4000)) AS 'FJSONDATA'
+ ,ROW_NUMBER() OVER (PARTITION BY t4.FOldFId ORDER BY t4.FVERSION DESC) RN
+ FROM T_SCM_BILLCHANGEVERSIONS t4
+ WHERE 1 = 1
+ AND t4.FFormId = 'CRM_Contract'
+ AND t4.FACTIVESTATUS != 'A'
+)
+,#ۺͬ AS (
+ SELECT t0.FID,t0.FBILLNO,t0.F_CYG_SALESNUMBER
+ ,t0.FNAME as FName
+ ,t0.FDOCUMENTSTATUS
+ ,t0.F_CYG_ContractNoDL
+ ,'A' AS 'FFORBIDSTATUS'
+ ,t0f.FCONTRACTAMOUNT_LC AS 'ͬ'
+ ,ISNULL(t4.FCONTRACTAMOUNT_X,t0f.F_CYG_CONTRACTCHANGE) AS 'ͬ仯'
+ ,ISNULL(t1.ۼ۶λ,0) AS 'ۼ۶λ'
+ ,ISNULL(t1.С,0) AS 'С'
+ ,ISNULL(t1.С,0) AS 'С'
+ ,ISNULL(t1.װС,0) AS 'װС'
+ ,ISNULL(t1.ɱС,0) AS 'ɱС'
+ ,ISNULL(t1.ۼƷλ,0) AS 'ۼƷλ'
+ ,ISNULL(t1.ۼƿƱ,0) AS 'ۼƿƱ'
+ FROM T_CRM_CONTRACT t0
+ INNER JOIN T_CRM_CONTRACTFIN t0f on t0f.FID = t0.FID
+ LEFT JOIN #۶ t1 on t1.FSALES = t0.F_CYG_YSALESNUMBER
+ OUTER APPLY (
+ SELECT CAST(JSON_VALUE(t4.FJSONDATA,'$.CRM_ContractFIN[0].FCONTRACTAMOUNT_LC') AS decimal(23,10)) - t0f.FCONTRACTAMOUNT_LC 'FCONTRACTAMOUNT_X'
+ FROM #ͬ t4
+ WHERE t4.FOLDFID = t0.FID AND t4.RN = 2
+ ) t4
+ WHERE 1=1
+ AND t0.FDOCUMENTSTATUS = 'C'
+ AND t0f.FCONTRACTAMOUNT_LC > 0
+ AND t0.F_CYG_CONTRACTTYPE = '664cd624468638'
+ AND CONVERT(int,CONVERT(varchar(4) ,t0.FDATE,112)) = 2024 --ֻͿԸ¶Ӧ
+)
+SELECT tt.FID,tt.FBILLNO,tt.F_CYG_SALESNUMBER,tt.FName
+ --,tt.FDOCUMENTSTATUS,tt.F_CYG_CONTRACTNODL,tt.FFORBIDSTATUS
+ ,tt.ͬ,tt.ͬ仯,tt.ۼ۶λ,tt.ͬ - tt.ۼ۶λ AS 'δµ۶λ'
+ ,tt.ۼƷλ,tt.ۼƿƱ
+ ,tt.ۼ۶λ - tt.ۼƷλ AS 'ʣδλ'
+ ,tt.ۼƷλ - tt.ۼƿƱ AS 'δƱ'
+ ,tt.װС,tt.ɱС,tt.С,tt.С
+ INTO #
+FROM #ۺͬ tt
+ INNER JOIN T_CRM_CONTRACTFIN t0 on t0.FID = tt.FID
+WHERE NOT ( t0.F_CYG_CUMSALESORDERS = tt.ۼ۶λ
+ AND t0.F_CYG_NOORDERSALES = tt.ͬ - tt.ۼ۶λ
+ AND t0.F_CYG_CUMSHIPMENT = tt.ۼƷλ
+ AND t0.F_CYG_REMAINSHIPMENT = tt.ۼ۶λ - tt.ۼƷλ
+ AND t0.F_CYG_CONTRACTCHANGE = tt.ͬ仯
+ AND t0.F_CYG_ACCUMULATEDINVOIC = tt.ۼƿƱ
+ AND t0.F_CYG_UNINVOICEDAMOUNT = tt.ۼƷλ - tt.ۼƿƱ
+ AND t0.F_CYG_OPENPRICE = tt.С
+ AND t0.F_CYG_OUTSOURCINGPRICE = tt.С
+ AND t0.F_CYG_MOUNTINGCOST = tt.װС
+ AND t0.F_CYG_COST = tt.ɱС)
+
+UPDATE t0 SET t0.F_CYG_CUMSALESORDERS = tt.ۼ۶λ
+ ,t0.F_CYG_NOORDERSALES = tt.δµ۶λ
+ ,t0.F_CYG_CUMSHIPMENT = tt.ۼƷλ
+ ,t0.F_CYG_REMAINSHIPMENT = tt.ʣδλ
+ ,t0.F_CYG_CONTRACTCOLLECTION = tt.ͬտ
+ ,t0.F_CYG_SHIPMENTUNCOLLECTION = tt.ͬδտ
+ ,t0.F_CYG_CONTRACTCHANGE = tt.ͬ仯
+ ,t0.F_CYG_ACCUMULATEDINVOIC = tt.ۼƿƱ
+ ,t0.F_CYG_UNINVOICEDAMOUNT = tt.δƱ
+ ,t0.F_CYG_OPENPRICE = tt.С
+ ,t0.F_CYG_OUTSOURCINGPRICE = tt.С
+ ,t0.F_CYG_MOUNTINGCOST = tt.װС
+ ,t0.F_CYG_COST = tt.ɱС
+FROM T_CRM_CONTRACTFIN t0
+ INNER JOIN # tt on t0.FID = tt.FID
+
+UPDATE t0 SET t0.FDATE = GETDATE()
+FROM T_CRM_CONTRACT t0
+ INNER JOIN # tt on t0.FID = tt.FID
+
+--SELECT *
+--FROM #
+--ORDER BY FID
+DROP TABLE #۶
+DROP TABLE #
\ No newline at end of file
diff --git a/07.珠海英搏尔/Enpower.Python/Enpower.Python.pyproj b/07.珠海英搏尔/Enpower.Python/Enpower.Python.pyproj
index d83287f..83be733 100644
--- a/07.珠海英搏尔/Enpower.Python/Enpower.Python.pyproj
+++ b/07.珠海英搏尔/Enpower.Python/Enpower.Python.pyproj
@@ -56,6 +56,7 @@
+
diff --git a/07.珠海英搏尔/GZ.LJY000.Enpower/GZ.LJY000.Enpower.csproj b/07.珠海英搏尔/GZ.LJY000.Enpower/GZ.LJY000.Enpower.csproj
index 0e9998a..bd8859a 100644
--- a/07.珠海英搏尔/GZ.LJY000.Enpower/GZ.LJY000.Enpower.csproj
+++ b/07.珠海英搏尔/GZ.LJY000.Enpower/GZ.LJY000.Enpower.csproj
@@ -83,7 +83,10 @@
+
+
+
@@ -102,7 +105,12 @@
+
+
+
+
+
copy $(TargetPath) "D:\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin"
diff --git a/07.珠海英搏尔/GZ.LJY000.Enpower/POSH_N3_Forecast/BillConvertPlugInEx/N3Forecast2PLN_FORECAST.cs b/07.珠海英搏尔/GZ.LJY000.Enpower/POSH_N3_Forecast/BillConvertPlugInEx/N3Forecast2PLN_FORECAST.cs
new file mode 100644
index 0000000..d89e0f6
--- /dev/null
+++ b/07.珠海英搏尔/GZ.LJY000.Enpower/POSH_N3_Forecast/BillConvertPlugInEx/N3Forecast2PLN_FORECAST.cs
@@ -0,0 +1,157 @@
+using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn;
+using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args;
+using Kingdee.BOS.Core.Metadata.FieldElement;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.ServiceHelper;
+using Kingdee.BOS.Util;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+
+namespace GZ.LJY000.Enpower.POSH_N3_Forecast.BillConvertPlugInEx
+{
+ [Description("N+3预测单转换预测单#"), HotUpdate]
+ public class N3Forecast2PLN_FORECAST : AbstractConvertPlugIn
+ {
+ public override void AfterConvert(AfterConvertEventArgs e)
+ {
+ base.AfterConvert(e);
+ if (e.Result.FindByEntityKey("FBillHead").Any())
+ {
+ var billHead = e.Result.FindByEntityKey("FBillHead")[0].DataEntity;
+ var convertBillNo = billHead["FConvertBillNo"];
+ if (!convertBillNo.IsNullOrEmptyOrWhiteSpace())
+ {
+
+ var sqlL = $@"/*dialect*/
+WITH #年度预测 AS (
+ SELECT t1.FBILLNO,t1.FID,t1.FEntryID,t1.FSEQ,t1.FMATERIALID,t1.FUNITID
+ ,t1.FQTY,t1.FYEAR '年份' ,t1.FMONTH '月份'
+ ,t1.FYEAR * 100 + REPLACE(T1.DATEM,'FN','') + t1.FMONTH 周期
+ ,CONVERT(int,t1.FYEAR * 10000 + REPLACE(T1.DATEM,'FN','') *100 + t1.FMONTH * 100 + 1) AS '日期'
+ ,CONVERT(datetime,DATEFROMPARTS(t1.FYEAR,CONVERT(int,REPLACE(T1.DATEM,'FN',''))+ t1.FMONTH,1)) 'startDate'
+ FROM (
+ SELECT t0.FBILLNO,t0.FID,t0e.FEntryID,t0e.FSEQ,t0e.FYEAR,t0e.FMONTH,t0e.FMATERIALID,t0e.FUNITID,t0e.FN0,t0e.FN1,t0e.FN2,t0e.FN3
+ FROM T_PLN_FORECAST2N3 t0 --表头
+ INNER JOIN T_PLN_FORECAST2N3ENTRY t0e on t0.FID = t0e.FID --表体
+ WHERE t0.FBILLNO = '{convertBillNo.ToString()}'
+ ) t0
+ UNPIVOT (
+ FQTY FOR dateM IN (FN0,FN1,FN2,FN3)
+ ) AS t1
+)
+SELECT tt.*
+ ,DATEADD(SECOND,-1,DATEADD(MONTH, 1, tt.startDate)) AS 'endDate'
+ ,CASE WHEN ISNULL(t0.FQTY,0) > tt.FQTY THEN 0 ELSE tt.FQTY - ISNULL(t0.FQTY,0) END '最终数量'
+FROM #年度预测 tt
+ OUTER APPLY (
+ SELECT t1.FMATERIALID,SUM(t1.FQTY) FQTY
+ FROM (
+ SELECT t0.FBILLNO,t0.FID,t0e.FEntryID,t0e.FSTARTDATE,t0e.FYEAR,t0e.FMATERIALID,t0e.FUNITID,t0e.FCUSTID
+ ,FD1,FD2,FD3,FD4,FD5,FD6,FD7,FD8,FD9,FD10,FD11,FD12,FD13,FD14,FD15,FD16,FD17,FD18,FD19,FD20,FD21,FD22,FD23,FD24,FD25,FD26,FD27,FD28,FD29,FD30,FD31,FD32,FD33,FD34,FD35,FD36,FD37,FD38,FD39,FD40,FD41,FD42
+ FROM T_PLN_FORECAST2W5 t0 --表头
+ INNER JOIN T_PLN_FORECAST2W5ENTRY t0e on t0.FID = t0e.FID --表体
+ WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FExecutionState = '1'
+ ) t0
+ UNPIVOT (
+ FQTY FOR dateM IN (FD1,FD2,FD3,FD4,FD5,FD6,FD7,FD8,FD9,FD10,FD11,FD12,FD13,FD14,FD15,FD16,FD17,FD18,FD19,FD20,FD21,FD22,FD23,FD24,FD25,FD26,FD27,FD28,FD29,FD30,FD31,FD32,FD33,FD34,FD35,FD36,FD37,FD38,FD39,FD40,FD41,FD42)
+ ) AS t1
+ WHERE t1.FMATERIALID = tt.FMATERIALID AND CONVERT(INT,CONVERT(varchar(6),DATEADD(DAY,CONVERT(int,REPLACE(t1.dateM,'FD','')) - 1,t1.FSTARTDATE),112)) = tt.周期
+ GROUP BY t1.FMATERIALID--,t1.FYEAR * 100 + DATEPART(MONTH,(DATEADD(DAY,CONVERT(int,REPLACE(T1.DATEM,'FD','')) - 1,t1.FSTARTDATE)))
+ ) t0
+
+ORDER BY tt.startDate,tt.FSEQ
+";
+ //throw new Exception(sqlL);
+ var dataList = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL);
+ if (dataList != null && dataList.Count > 0)
+ {
+ var entrys = billHead["PLN_FORECASTENTRY"] as DynamicObjectCollection;
+ entrys.Clear();
+
+ var idx = 1;
+
+ //#! 物料
+ var matFld = e.TargetBusinessInfo.GetField("FMaterialId") as BaseDataField;
+ ////#! 货主
+ //var ownerFId = e.TargetBusinessInfo.GetField("FOwnerId") as BaseDataField;
+ //#! 计量单位
+ var unitFId = e.TargetBusinessInfo.GetField("FUnitID") as BaseDataField;
+ var unitBaseFId = e.TargetBusinessInfo.GetField("FBaseUnitID") as BaseDataField;
+
+ ////仓库
+ //var stockFid = e.TargetBusinessInfo.GetField("FStockId") as BaseDataField;
+
+ foreach (var item in dataList)
+ {
+ var entity = entrys.DynamicCollectionItemPropertyType.CreateInstance() as DynamicObject;
+ entity["Seq"] = idx;
+
+ //# 物料
+ var matId = item["FMATERIALID"].Long2Int();
+ entity["MaterialId_Id"] = matId;
+ var matObj = BusinessDataServiceHelper.LoadSingle(this.Context, matId, matFld.RefFormDynamicObjectType);
+ entity["MaterialId"] = matObj;
+ //预留类型
+ entity["ReserveType"] = (matObj["MaterialPlan"] as DynamicObjectCollection)[0]["ReserveType"];
+ //均化周期
+ entity["AveraCycle"] = 1;
+ var MaterialBase = (matObj["MaterialBase"] as DynamicObjectCollection)[0] as DynamicObject;
+
+ var baseUnitId_Id = MaterialBase["BaseUnitId_Id"].Long2Int();
+ var qty = decimal.Parse(item["最终数量"].ToString());
+ entity["Qty"] = qty;
+ entity["StartDate"] = item["startDate"];
+ entity["EndDate"] = item["endDate"];
+
+ ////# 货主类型
+ //entity["FOwnerTypeId"] = item["FOWNERTYPEID"];
+ ////# 货主
+ //var ownerId = item["FOWNERID"].Long2Int();
+ //if (ownerId > 0)
+ //{
+ // var ownerObj = BusinessDataServiceHelper.LoadSingle(this.Context, ownerId, ownerFId.RefFormDynamicObjectType);
+ // entity["FOwnerId_Id"] = ownerId;
+ // entity["FOwnerId"] = ownerObj;
+ //}
+
+ //# 计量单位
+ var unitId = item["FUNITID"].Long2Int();
+ if (unitId > 0)
+ {
+ var unitObj = BusinessDataServiceHelper.LoadSingle(this.Context, unitId, unitFId.RefFormDynamicObjectType);
+ entity["UnitID_Id"] = unitId;
+ entity["UnitID"] = unitObj;
+
+ if (baseUnitId_Id != 0)
+ {
+ var baseUnitQty = ConvertServiceHelper.GetBaseUnitQty(this.Context, matId, unitId, qty);
+ var unitBaseObj = BusinessDataServiceHelper.LoadSingle(this.Context, baseUnitId_Id, unitBaseFId.RefFormDynamicObjectType);
+ entity["BaseUnitId_Id"] = MaterialBase["BaseUnitId_Id"];
+ entity["BaseUnitId"] = unitBaseObj;
+ entity["BaseQty"] = baseUnitQty;
+ }
+ }
+
+ var entity_Links = entity["FEntity_Link"] as DynamicObjectCollection;
+ var entityLink = entity_Links.DynamicCollectionItemPropertyType.CreateInstance() as DynamicObject;
+
+ entity_Links.Add(entityLink);
+
+ entityLink["RuleId"] = "ec1cd362-7d98-4a5c-b9bb-42a20f62a234";
+ entityLink["STableName"] = "T_PLN_FORECAST2YEARENTRY";
+ entityLink["SBillId"] = item["FID"].ToString();
+ entityLink["SId"] = item["FEntryID"].ToString();
+
+ entrys.Add(entity);
+ idx++;
+ }
+ }
+ }
+
+ }
+ }
+ }
+}
diff --git a/07.珠海英搏尔/GZ.LJY000.Enpower/POSH_W5WagonPlan/BillConvertPlugInEx/W5WagonPlan2PLN_FORECAST.cs b/07.珠海英搏尔/GZ.LJY000.Enpower/POSH_W5WagonPlan/BillConvertPlugInEx/W5WagonPlan2PLN_FORECAST.cs
new file mode 100644
index 0000000..43d863a
--- /dev/null
+++ b/07.珠海英搏尔/GZ.LJY000.Enpower/POSH_W5WagonPlan/BillConvertPlugInEx/W5WagonPlan2PLN_FORECAST.cs
@@ -0,0 +1,167 @@
+using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn;
+using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args;
+using Kingdee.BOS.Core.Metadata.FieldElement;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.ServiceHelper;
+using Kingdee.BOS.Util;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+
+namespace GZ.LJY000.Enpower.POSH_W5WagonPlan.BillConvertPlugInEx
+{
+ [Description("W+5预测单转换预测单#"), HotUpdate]
+ public class W5WagonPlan2PLN_FORECAST : AbstractConvertPlugIn
+ {
+ public override void AfterConvert(AfterConvertEventArgs e)
+ {
+ base.AfterConvert(e);
+ if (e.Result.FindByEntityKey("FBillHead").Any())
+ {
+ var billHead = e.Result.FindByEntityKey("FBillHead")[0].DataEntity;
+ var convertBillNo = billHead["FConvertBillNo"];
+ if (!convertBillNo.IsNullOrEmptyOrWhiteSpace())
+ {
+
+ var sqlL = $@"/*dialect*/
+WITH #W5预测单 AS (
+ SELECT t0.FBILLNO,t0.FID,t0e.FEntryID,t0e.FSTARTDATE,t0e.FYEAR,t0e.FMATERIALID,t0e.FUNITID
+ ,FD1,FD2,FD3,FD4,FD5,FD6,FD7,FD8,FD9,FD10,FD11,FD12,FD13,FD14,FD15,FD16,FD17,FD18,FD19,FD20,FD21,FD22,FD23,FD24,FD25,FD26,FD27,FD28,FD29,FD30,FD31,FD32,FD33,FD34,FD35,FD36,FD37,FD38,FD39,FD40,FD41,FD42
+ FROM T_PLN_FORECAST2W5 t0 --表头
+ INNER JOIN T_PLN_FORECAST2W5ENTRY t0e on t0.FID = t0e.FID --表体
+ WHERE t0.FBILLNO = '{convertBillNo.ToString()}'
+)
+,#W5装车计划 AS (
+ SELECT *
+ ,REPLACE(t1.dateM,'FD','') RN
+ ,DATEPART(WEEKDAY,t1.FSTARTDATE) '初始周天'
+ ,DATEPART(WEEKDAY,DATEADD(DAY,CONVERT(int,REPLACE(T1.DATEM,'FD','')) -1,t1.FSTARTDATE)) '周天'
+ ,DATEADD(DAY,CONVERT(int,REPLACE(T1.DATEM,'FD','')) - 1,t1.FSTARTDATE) AS '日期'
+ FROM #W5预测单 t0
+ UNPIVOT (
+ FQTY FOR dateM IN (FD1,FD2,FD3,FD4,FD5,FD6,FD7,FD8,FD9,FD10,FD11,FD12,FD13,FD14,FD15,FD16,FD17,FD18,FD19,FD20,FD21,FD22,FD23,FD24,FD25,FD26,FD27,FD28,FD29,FD30,FD31,FD32,FD33,FD34,FD35,FD36,FD37,FD38,FD39,FD40,FD41,FD42)
+ ) AS t1
+)
+, #数据二次处理 AS (
+ SELECT t0.FBILLNO,t0.FID,t0.FEntryID,t0.FMATERIALID,t0.FUNITID,t0.FYEAR
+ ,t0.FQTY
+ ,t0.RN
+ ,CASE t0.初始周天 WHEN 1 THEN 7 ELSE t0.初始周天 - 1 END '初始周天'
+ ,t0.FSTARTDATE
+ ,CASE t0.周天 WHEN 1 THEN 7 ELSE t0.周天 - 1 END '周天'
+ ,t0.日期
+ ,DATEADD(SECOND,-1,DATEADD(DAY, 1, t0.日期)) AS 'endDate'
+ FROM #W5装车计划 t0
+)
+SELECT *
+FROM (
+ SELECT t0.FBILLNO,t0.FID,t0.FEntryID,t0.FMATERIALID,t0.FUNITID,t0.FYEAR,t1.groupby
+ FROM #W5预测单 t0 ,
+ (SELECT 1 groupby UNION ALL SELECT 2 groupby UNION ALL SELECT 3 groupby
+ UNION ALL SELECT 4 groupby UNION ALL SELECT 5 groupby UNION ALL SELECT 6 groupby) t1
+
+) tt
+CROSS APPLY (
+ SELECT t0.FBILLNO,t0.FID,t0.FEntryID,t0.FMATERIALID,t0.FUNITID,t0.FYEAR
+ ,SUM(t0.FQTY) '最终数量'
+ ,MIN(t0.日期) minDate
+ ,MAX(t0.endDate) maxDate
+ FROM #数据二次处理 t0
+ WHERE tt.FEntryID = t0.FEntryID AND (t0.初始周天 + t0.RN - 1) > (tt.groupby -1) * 7 AND (t0.初始周天 + t0.RN-1) <= tt.groupby * 7
+ GROUP BY t0.FBILLNO,t0.FID,t0.FEntryID,t0.FMATERIALID,t0.FUNITID,t0.FYEAR
+) t0
+ORDER BY t0.minDate ASC
+";
+ //throw new Exception(sqlL);
+ var dataList = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL);
+ if (dataList != null && dataList.Count > 0)
+ {
+ var entrys = billHead["PLN_FORECASTENTRY"] as DynamicObjectCollection;
+ entrys.Clear();
+
+ var idx = 1;
+
+ //#! 物料
+ var matFld = e.TargetBusinessInfo.GetField("FMaterialId") as BaseDataField;
+ ////#! 货主
+ //var ownerFId = e.TargetBusinessInfo.GetField("FOwnerId") as BaseDataField;
+ //#! 计量单位
+ var unitFId = e.TargetBusinessInfo.GetField("FUnitID") as BaseDataField;
+ var unitBaseFId = e.TargetBusinessInfo.GetField("FBaseUnitID") as BaseDataField;
+
+ //仓库
+ var stockFid = e.TargetBusinessInfo.GetField("FStockId") as BaseDataField;
+
+ foreach (var item in dataList)
+ {
+ var entity = entrys.DynamicCollectionItemPropertyType.CreateInstance() as DynamicObject;
+ entity["Seq"] = idx;
+
+ //# 物料
+ var matId = item["FMATERIALID"].Long2Int();
+ entity["MaterialId_Id"] = matId;
+ var matObj = BusinessDataServiceHelper.LoadSingle(this.Context, matId, matFld.RefFormDynamicObjectType);
+ entity["MaterialId"] = matObj;
+ //预留类型
+ entity["ReserveType"] = (matObj["MaterialPlan"] as DynamicObjectCollection)[0]["ReserveType"];
+ //均化周期
+ entity["AveraCycle"] = 1;
+ var MaterialBase = (matObj["MaterialBase"] as DynamicObjectCollection)[0] as DynamicObject;
+
+ var baseUnitId_Id = MaterialBase["BaseUnitId_Id"].Long2Int();
+ var qty = decimal.Parse(item["最终数量"].ToString());
+ entity["Qty"] = qty;
+ entity["StartDate"] = item["minDate"];
+ entity["EndDate"] = item["maxDate"];
+
+ ////# 货主类型
+ //entity["FOwnerTypeId"] = item["FOWNERTYPEID"];
+ ////# 货主
+ //var ownerId = item["FOWNERID"].Long2Int();
+ //if (ownerId > 0)
+ //{
+ // var ownerObj = BusinessDataServiceHelper.LoadSingle(this.Context, ownerId, ownerFId.RefFormDynamicObjectType);
+ // entity["FOwnerId_Id"] = ownerId;
+ // entity["FOwnerId"] = ownerObj;
+ //}
+
+ //# 计量单位
+ var unitId = item["FUNITID"].Long2Int();
+ if (unitId > 0)
+ {
+ var unitObj = BusinessDataServiceHelper.LoadSingle(this.Context, unitId, unitFId.RefFormDynamicObjectType);
+ entity["UnitID_Id"] = unitId;
+ entity["UnitID"] = unitObj;
+
+ if (baseUnitId_Id != 0)
+ {
+ var baseUnitQty = ConvertServiceHelper.GetBaseUnitQty(this.Context, matId, unitId, qty);
+ var unitBaseObj = BusinessDataServiceHelper.LoadSingle(this.Context, baseUnitId_Id, unitBaseFId.RefFormDynamicObjectType);
+ entity["BaseUnitId_Id"] = MaterialBase["BaseUnitId_Id"];
+ entity["BaseUnitId"] = unitBaseObj;
+ entity["BaseQty"] = baseUnitQty;
+ }
+ }
+
+ var entity_Links = entity["FEntity_Link"] as DynamicObjectCollection;
+ var entityLink = entity_Links.DynamicCollectionItemPropertyType.CreateInstance() as DynamicObject;
+
+ entity_Links.Add(entityLink);
+
+ entityLink["RuleId"] = "5999083d-5e4a-4af9-93f8-32873ef4e9de";
+ entityLink["STableName"] = "T_PLN_FORECAST2YEARENTRY";
+ entityLink["SBillId"] = item["FID"].ToString();
+ entityLink["SId"] = item["FEntryID"].ToString();
+
+ entrys.Add(entity);
+ idx++;
+ }
+ }
+ }
+
+ }
+ }
+ }
+}
diff --git a/07.珠海英搏尔/GZ.LJY000.Enpower/POSH_Year_Forecast/BillConvertPlugInEx/YeacForecast2PLN_FORECAST.cs b/07.珠海英搏尔/GZ.LJY000.Enpower/POSH_Year_Forecast/BillConvertPlugInEx/YeacForecast2PLN_FORECAST.cs
new file mode 100644
index 0000000..a68e909
--- /dev/null
+++ b/07.珠海英搏尔/GZ.LJY000.Enpower/POSH_Year_Forecast/BillConvertPlugInEx/YeacForecast2PLN_FORECAST.cs
@@ -0,0 +1,156 @@
+using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn;
+using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args;
+using Kingdee.BOS.Core.Metadata.FieldElement;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.ServiceHelper;
+using Kingdee.BOS.Util;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+
+namespace GZ.LJY000.Enpower.POSH_Year_Forecast.BillConvertPlugInEx
+{
+ [Description("年度预测单转换预测单#"), HotUpdate]
+ public class YeacForecast2PLN_FORECAST : AbstractConvertPlugIn
+ {
+ public override void AfterConvert(AfterConvertEventArgs e)
+ {
+ base.AfterConvert(e);
+ if (e.Result.FindByEntityKey("FBillHead").Any())
+ {
+ var billHead = e.Result.FindByEntityKey("FBillHead")[0].DataEntity;
+ var convertBillNo = billHead["FConvertBillNo"];
+ if (!convertBillNo.IsNullOrEmptyOrWhiteSpace())
+ {
+
+ var sqlL = $@"/*dialect*/
+WITH #年度预测 AS (
+ SELECT t1.FBILLNO,t1.FID,t1.FEntryID,t1.FSEQ,t1.FMATERIALID,t1.FUNITID
+ ,t1.FQTY,t1.FYEAR '年份' ,REPLACE(T1.DATEM,'FMONTH','') '月份'
+ ,t1.FYEAR * 100 + REPLACE(T1.DATEM,'FMONTH','') 周期
+ --,DATEADD(MONTH, DATEDIFF(MONTH, 0, ), 0) AS 'startDate'
+ ,CONVERT(datetime,CONCAT(T1.FYEAR,'-',REPLACE(T1.DATEM,'FMONTH',''),'-01')) 'startDate'
+ FROM (
+ SELECT t0.FBILLNO,t0.FID,t0e.FEntryID,t0e.FSEQ,t0e.FYEAR,t0e.FMATERIALID,t0e.FUNITID,FMONTH1,FMONTH2,FMONTH3,FMONTH4,FMONTH5,FMONTH6,FMONTH7,FMONTH8,FMONTH9,FMONTH10,FMONTH11,FMONTH12
+ FROM T_PLN_FORECAST2YEAR t0 --表头
+ INNER JOIN T_PLN_FORECAST2YEARENTRY t0e on t0.FID = t0e.FID --表体
+ ) t0
+ UNPIVOT (
+ FQTY FOR dateM IN (FMONTH1,FMONTH2,FMONTH3,FMONTH4,FMONTH5,FMONTH6,FMONTH7,FMONTH8,FMONTH9,FMONTH10,FMONTH11,FMONTH12)
+ ) AS t1
+)
+SELECT tt.*
+ ,DATEADD(SECOND,-1,DATEADD(MONTH, 1, tt.startDate)) AS 'endDate'
+ --,t0.FQTY AS 'W5数量'
+ ,CASE WHEN ISNULL(t0.FQTY,0) > tt.FQTY THEN 0 ELSE tt.FQTY - ISNULL(t0.FQTY,0) END '最终数量'
+FROM #年度预测 tt
+ OUTER APPLY (
+ SELECT t1.FMATERIALID,SUM(t1.FQTY) FQTY
+ FROM (
+ SELECT t0.FBILLNO,t0.FID,t0e.FEntryID,t0e.FSTARTDATE,t0e.FYEAR,t0e.FMATERIALID,t0e.FUNITID,FD1,FD2,FD3,FD4,FD5,FD6,FD7,FD8,FD9,FD10,FD11,FD12,FD13,FD14,FD15,FD16,FD17,FD18,FD19,FD20,FD21,FD22,FD23,FD24,FD25,FD26,FD27,FD28,FD29,FD30,FD31,FD32,FD33,FD34,FD35,FD36,FD37,FD38,FD39,FD40,FD41,FD42
+ FROM T_PLN_FORECAST2W5 t0 --表头
+ INNER JOIN T_PLN_FORECAST2W5ENTRY t0e on t0.FID = t0e.FID --表体
+ WHERE t0.FDOCUMENTSTATUS = 'C' AND t0.FExecutionState = '1'
+ ) t0
+ UNPIVOT (
+ FQTY FOR dateM IN (FD1,FD2,FD3,FD4,FD5,FD6,FD7,FD8,FD9,FD10,FD11,FD12,FD13,FD14,FD15,FD16,FD17,FD18,FD19,FD20,FD21,FD22,FD23,FD24,FD25,FD26,FD27,FD28,FD29,FD30,FD31,FD32,FD33,FD34,FD35,FD36,FD37,FD38,FD39,FD40,FD41,FD42)
+ ) AS t1
+ WHERE t1.FMATERIALID = tt.FMATERIALID AND t1.FYEAR * 100 + DATEPART(MONTH,(DATEADD(DAY,CONVERT(int,REPLACE(T1.DATEM,'FD','')) - 1,t1.FSTARTDATE))) = tt.周期
+ GROUP BY t1.FMATERIALID,t1.FYEAR * 100 + DATEPART(MONTH,(DATEADD(DAY,CONVERT(int,REPLACE(T1.DATEM,'FD','')) - 1,t1.FSTARTDATE)))
+ ) t0
+WHERE tt.FBILLNO = '{convertBillNo.ToString()}'
+ORDER BY tt.startDate,tt.FSEQ
+";
+ //throw new Exception(sqlL);
+ var dataList = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL);
+ if (dataList != null && dataList.Count > 0)
+ {
+ var entrys = billHead["PLN_FORECASTENTRY"] as DynamicObjectCollection;
+ entrys.Clear();
+
+ var idx = 1;
+
+ //#! 物料
+ var matFld = e.TargetBusinessInfo.GetField("FMaterialId") as BaseDataField;
+ ////#! 货主
+ //var ownerFId = e.TargetBusinessInfo.GetField("FOwnerId") as BaseDataField;
+ //#! 计量单位
+ var unitFId = e.TargetBusinessInfo.GetField("FUnitID") as BaseDataField;
+ var unitBaseFId = e.TargetBusinessInfo.GetField("FBaseUnitID") as BaseDataField;
+
+ //仓库
+ var stockFid = e.TargetBusinessInfo.GetField("FStockId") as BaseDataField;
+
+ foreach (var item in dataList)
+ {
+ var entity = entrys.DynamicCollectionItemPropertyType.CreateInstance() as DynamicObject;
+ entity["Seq"] = idx;
+
+ //# 物料
+ var matId = item["FMATERIALID"].Long2Int();
+ entity["MaterialId_Id"] = matId;
+ var matObj = BusinessDataServiceHelper.LoadSingle(this.Context, matId, matFld.RefFormDynamicObjectType);
+ entity["MaterialId"] = matObj;
+ //预留类型
+ entity["ReserveType"] = (matObj["MaterialPlan"] as DynamicObjectCollection)[0]["ReserveType"];
+ //均化周期
+ entity["AveraCycle"] = 1;
+ var MaterialBase = (matObj["MaterialBase"] as DynamicObjectCollection)[0] as DynamicObject;
+
+ var baseUnitId_Id = MaterialBase["BaseUnitId_Id"].Long2Int();
+ var qty = decimal.Parse(item["最终数量"].ToString());
+ entity["Qty"] = qty;
+ entity["StartDate"] = item["startDate"];
+ entity["EndDate"] = item["endDate"];
+
+ ////# 货主类型
+ //entity["FOwnerTypeId"] = item["FOWNERTYPEID"];
+ ////# 货主
+ //var ownerId = item["FOWNERID"].Long2Int();
+ //if (ownerId > 0)
+ //{
+ // var ownerObj = BusinessDataServiceHelper.LoadSingle(this.Context, ownerId, ownerFId.RefFormDynamicObjectType);
+ // entity["FOwnerId_Id"] = ownerId;
+ // entity["FOwnerId"] = ownerObj;
+ //}
+
+ //# 计量单位
+ var unitId = item["FUNITID"].Long2Int();
+ if (unitId > 0)
+ {
+ var unitObj = BusinessDataServiceHelper.LoadSingle(this.Context, unitId, unitFId.RefFormDynamicObjectType);
+ entity["UnitID_Id"] = unitId;
+ entity["UnitID"] = unitObj;
+
+ if (baseUnitId_Id != 0)
+ {
+ var baseUnitQty = ConvertServiceHelper.GetBaseUnitQty(this.Context, matId, unitId, qty);
+ var unitBaseObj = BusinessDataServiceHelper.LoadSingle(this.Context, baseUnitId_Id, unitBaseFId.RefFormDynamicObjectType);
+ entity["BaseUnitId_Id"] = MaterialBase["BaseUnitId_Id"];
+ entity["BaseUnitId"] = unitBaseObj;
+ entity["BaseQty"] = baseUnitQty;
+ }
+ }
+
+ var entity_Links = entity["FEntity_Link"] as DynamicObjectCollection;
+ var entityLink = entity_Links.DynamicCollectionItemPropertyType.CreateInstance() as DynamicObject;
+
+ entity_Links.Add(entityLink);
+
+ entityLink["RuleId"] = "ec1cd362-7d98-4a5c-b9bb-42a20f62a234";
+ entityLink["STableName"] = "T_PLN_FORECAST2YEARENTRY";
+ entityLink["SBillId"] = item["FID"].ToString();
+ entityLink["SId"] = item["FEntryID"].ToString();
+
+ entrys.Add(entity);
+ idx++;
+ }
+ }
+ }
+
+ }
+ }
+ }
+}
diff --git a/07.珠海英搏尔/GZ.LJY000.Enpower/POSH_Year_Forecast/BillConvertPlugInEx/YeacForecast2PLN_FORECAST.py b/07.珠海英搏尔/GZ.LJY000.Enpower/POSH_Year_Forecast/BillConvertPlugInEx/YeacForecast2PLN_FORECAST.py
new file mode 100644
index 0000000..e69de29
diff --git a/07.珠海英搏尔/GZ.LJY000.Enpower/SAL_RETURNSTOCK/BillEventPlugInEx.cs b/07.珠海英搏尔/GZ.LJY000.Enpower/SAL_RETURNSTOCK/BillEventPlugInEx.cs
index fbaebd8..17ec2c8 100644
--- a/07.珠海英搏尔/GZ.LJY000.Enpower/SAL_RETURNSTOCK/BillEventPlugInEx.cs
+++ b/07.珠海英搏尔/GZ.LJY000.Enpower/SAL_RETURNSTOCK/BillEventPlugInEx.cs
@@ -43,7 +43,9 @@ namespace GZ.LJY000.Enpower.SAL_RETURNSTOCK
var materialValue = materialObjValue == null ? 0 : materialObjValue.Long2Int();
DynamicObject entityLinkObj = null;
- var entityLinkObjList = entry["FEntity_Link"] as DynamicObjectCollection;
+ DynamicObjectCollection entityLinkObjList = null;
+ if (entry["FEntity_Link"] != null)
+ entityLinkObjList = entry["FEntity_Link"] as DynamicObjectCollection;
if (entityLinkObjList != null && entityLinkObjList.Count > 0)
entityLinkObj = entityLinkObjList[0];
diff --git a/07.珠海英搏尔/GZ.LJY000.Enpower/STK_MISCELLANEOUS/BillEventPlugInEx.cs b/07.珠海英搏尔/GZ.LJY000.Enpower/STK_MISCELLANEOUS/BillEventPlugInEx.cs
index a35f1ec..586d65d 100644
--- a/07.珠海英搏尔/GZ.LJY000.Enpower/STK_MISCELLANEOUS/BillEventPlugInEx.cs
+++ b/07.珠海英搏尔/GZ.LJY000.Enpower/STK_MISCELLANEOUS/BillEventPlugInEx.cs
@@ -73,12 +73,12 @@ namespace GZ.LJY000.Enpower.STK_MISCELLANEOUS
}
}
-
public override void AfterCreateNewEntryRow(CreateNewEntryEventArgs e)
{
base.AfterCreateNewEntryRow(e);
}
+
private bool DoDetection()
{
var orgObj = this.View.Model.GetValue("FStockOrgId") as DynamicObject;
diff --git a/07.珠海英搏尔/GZ.LJY000.Enpower/SUB_RETURNMTRL/BillEventPlugInEx.cs b/07.珠海英搏尔/GZ.LJY000.Enpower/SUB_RETURNMTRL/BillEventPlugInEx.cs
index bc7adae..362e930 100644
--- a/07.珠海英搏尔/GZ.LJY000.Enpower/SUB_RETURNMTRL/BillEventPlugInEx.cs
+++ b/07.珠海英搏尔/GZ.LJY000.Enpower/SUB_RETURNMTRL/BillEventPlugInEx.cs
@@ -41,9 +41,10 @@ namespace GZ.LJY000.Enpower.SUB_RETURNMTRL
var materialObjValue = entry["MaterialId_Id"];
var materialValue = materialObjValue == null ? 0 : materialObjValue.Long2Int();
-
DynamicObject entityLinkObj = null;
- var entityLinkObjList = entry["FEntity_Link"] as DynamicObjectCollection;
+ DynamicObjectCollection entityLinkObjList = null;
+ if (entry["FEntity_Link"] != null)
+ entityLinkObjList = entry["FEntity_Link"] as DynamicObjectCollection;
if (entityLinkObjList != null && entityLinkObjList.Count > 0)
entityLinkObj = entityLinkObjList[0];
@@ -80,44 +81,46 @@ namespace GZ.LJY000.Enpower.SUB_RETURNMTRL
{
base.AfterCreateNewEntryRow(e);
- if (DoDetection())
- {
- var details = this.View.BusinessInfo.GetEntity("FEntity");
- if (details != null)
- {
- var entrys = this.View.Model.GetEntityDataObject(details);
- if (entrys != null && entrys.Count > 0)
- {
- var dateObj = this.View.Model.GetValue("FDate");
- var dateValue = dateObj == null ? "" : dateObj.ToString();
- if (dateValue.IsNullOrEmptyOrWhiteSpace())
- return;
+ //if (DoDetection())
+ //{
+ // var details = this.View.BusinessInfo.GetEntity("FEntity");
+ // if (details != null)
+ // {
+ // var entrys = this.View.Model.GetEntityDataObject(details);
+ // if (entrys != null && entrys.Count > 0)
+ // {
+ // var dateObj = this.View.Model.GetValue("FDate");
+ // var dateValue = dateObj == null ? "" : dateObj.ToString();
+ // if (dateValue.IsNullOrEmptyOrWhiteSpace())
+ // return;
- var tableSqlL = new List();
- foreach (var entry in entrys)
- {
- var rowIndex = this.View.Model.GetRowIndex(details, entry);
- var materialObjValue = entry["MaterialId_Id"];
- var materialValue = materialObjValue == null ? 0 : materialObjValue.Long2Int();
+ // var tableSqlL = new List();
+ // foreach (var entry in entrys)
+ // {
+ // var rowIndex = this.View.Model.GetRowIndex(details, entry);
+ // var materialObjValue = entry["MaterialId_Id"];
+ // var materialValue = materialObjValue == null ? 0 : materialObjValue.Long2Int();
- tableSqlL.Add($" SELECT {materialValue} AS 'FMATERIALID',{rowIndex} rowIdx ");
+ // tableSqlL.Add($" SELECT {materialValue} AS 'FMATERIALID',{rowIndex} rowIdx ");
- DynamicObject entityLinkObj = null;
- var entityLinkObjList = entry["FEntity_Link"] as DynamicObjectCollection;
+ // DynamicObject entityLinkObj = null;
+ // DynamicObjectCollection entityLinkObjList = null;
+ // if (entry["FEntity_Link"] != null)
+ // entityLinkObjList = entry["FEntity_Link"] as DynamicObjectCollection;
- if (entityLinkObjList != null && entityLinkObjList.Count > 0)
- entityLinkObj = entityLinkObjList[0];
+ // if (entityLinkObjList != null && entityLinkObjList.Count > 0)
+ // entityLinkObj = entityLinkObjList[0];
- var sBillId = entityLinkObj == null ? 0 : entityLinkObj["SBillId"].Long2Int();
- var sId = entityLinkObj == null ? 0 : entityLinkObj["SId"].Long2Int();
- var sTableName = entityLinkObj == null ? "" : entityLinkObj["STableName"].ToString();
- }
+ // var sBillId = entityLinkObj == null ? 0 : entityLinkObj["SBillId"].Long2Int();
+ // var sId = entityLinkObj == null ? 0 : entityLinkObj["SId"].Long2Int();
+ // var sTableName = entityLinkObj == null ? "" : entityLinkObj["STableName"].ToString();
+ // }
- if (tableSqlL.Any())
- GetPrdLot(dateValue, string.Join(" UNION ", tableSqlL));
- }
- }
- }
+ // if (tableSqlL.Any())
+ // GetPrdLot(dateValue, string.Join(" UNION ", tableSqlL));
+ // }
+ // }
+ //}
}
private bool DoDetection()
diff --git a/07.珠海英搏尔/GZ.LJY000.Enpower/预测单.sql b/07.珠海英搏尔/GZ.LJY000.Enpower/预测单.sql
new file mode 100644
index 0000000..8fb6245
--- /dev/null
+++ b/07.珠海英搏尔/GZ.LJY000.Enpower/预测单.sql
@@ -0,0 +1,32 @@
+--
+SELECT *
+FROM (
+ SELECT t0.FBILLNO,t0.FID,t0e.FEntryID,t0e.FMATERIALID,FMONTH1,FMONTH2,FMONTH3,FMONTH4,FMONTH5,FMONTH6,FMONTH7,FMONTH8,FMONTH9,FMONTH10,FMONTH11,FMONTH12
+ FROM T_PLN_FORECAST2YEAR t0 --ͷ
+ INNER JOIN T_PLN_FORECAST2YEARENTRY t0e on t0.FID = t0e.FID --
+) t0
+UNPIVOT (
+ VALUE FOR dateM IN (FMONTH1,FMONTH2,FMONTH3,FMONTH4,FMONTH5,FMONTH6,FMONTH7,FMONTH8,FMONTH9,FMONTH10,FMONTH11,FMONTH12)
+) AS t1
+
+--N3
+SELECT *
+FROM (
+ SELECT t0.FBILLNO,t0.FID,t0e.FEntryID,t0e.FMATERIALID,FN1,FN2,FN3
+ FROM T_PLN_FORECAST2N3 t0 --ͷ
+ INNER JOIN T_PLN_FORECAST2N3ENTRY t0e on t0.FID = t0e.FID --
+) t0
+UNPIVOT (
+ VALUE FOR dateM IN (FN1,FN2,FN3)
+) AS t1
+
+--W5
+SELECT *
+FROM (
+ SELECT t0.FBILLNO,t0.FID,t0e.FEntryID,t0e.FMATERIALID,FD1,FD2,FD3,FD4,FD5,FD6,FD7,FD8,FD9,FD10,FD11,FD12,FD13,FD14,FD15,FD16,FD17,FD18,FD19,FD20,FD21,FD22,FD23,FD24,FD25,FD26,FD27,FD28,FD29,FD30,FD31,FD32,FD33,FD34,FD35,FD36,FD37,FD38,FD39,FD40,FD41,FD42
+ FROM T_PLN_FORECAST2W5 t0 --ͷ
+ INNER JOIN T_PLN_FORECAST2W5ENTRY t0e on t0.FID = t0e.FID --
+) t0
+UNPIVOT (
+ VALUE FOR dateM IN (FD1,FD2,FD3,FD4,FD5,FD6,FD7,FD8,FD9,FD10,FD11,FD12,FD13,FD14,FD15,FD16,FD17,FD18,FD19,FD20,FD21,FD22,FD23,FD24,FD25,FD26,FD27,FD28,FD29,FD30,FD31,FD32,FD33,FD34,FD35,FD36,FD37,FD38,FD39,FD40,FD41,FD42)
+) AS t1
diff --git a/07.珠海英搏尔/GZ.LJY000.Enpower/预测单/N3.sql b/07.珠海英搏尔/GZ.LJY000.Enpower/预测单/N3.sql
new file mode 100644
index 0000000..a2d343e
--- /dev/null
+++ b/07.珠海英搏尔/GZ.LJY000.Enpower/预测单/N3.sql
@@ -0,0 +1,9 @@
+SELECT *
+FROM (
+ SELECT t0.FBILLNO,t0.FID,t0e.FEntryID,t0e.FMATERIALID,FN1,FN2,FN3
+ FROM T_PLN_FORECAST2N3 t0 --ͷ
+ INNER JOIN T_PLN_FORECAST2N3ENTRY t0e on t0.FID = t0e.FID --
+) t0
+UNPIVOT (
+ VALUE FOR dateM IN (FN1,FN2,FN3)
+) AS t1
\ No newline at end of file
diff --git a/07.珠海英搏尔/GZ.LJY000.Enpower/预测单/W5.sql b/07.珠海英搏尔/GZ.LJY000.Enpower/预测单/W5.sql
new file mode 100644
index 0000000..bfd03f9
--- /dev/null
+++ b/07.珠海英搏尔/GZ.LJY000.Enpower/预测单/W5.sql
@@ -0,0 +1,9 @@
+SELECT *
+FROM (
+ SELECT t0.FBILLNO,t0.FID,t0e.FEntryID,t0e.FMATERIALID,FD1,FD2,FD3,FD4,FD5,FD6,FD7,FD8,FD9,FD10,FD11,FD12,FD13,FD14,FD15,FD16,FD17,FD18,FD19,FD20,FD21,FD22,FD23,FD24,FD25,FD26,FD27,FD28,FD29,FD30,FD31,FD32,FD33,FD34,FD35,FD36,FD37,FD38,FD39,FD40,FD41,FD42
+ FROM T_PLN_FORECAST2W5 t0 --ͷ
+ INNER JOIN T_PLN_FORECAST2W5ENTRY t0e on t0.FID = t0e.FID --
+) t0
+UNPIVOT (
+ VALUE FOR dateM IN (FD1,FD2,FD3,FD4,FD5,FD6,FD7,FD8,FD9,FD10,FD11,FD12,FD13,FD14,FD15,FD16,FD17,FD18,FD19,FD20,FD21,FD22,FD23,FD24,FD25,FD26,FD27,FD28,FD29,FD30,FD31,FD32,FD33,FD34,FD35,FD36,FD37,FD38,FD39,FD40,FD41,FD42)
+) AS t1
\ No newline at end of file
diff --git a/07.珠海英搏尔/GZ.LJY000.Enpower/预测单/年度.sql b/07.珠海英搏尔/GZ.LJY000.Enpower/预测单/年度.sql
new file mode 100644
index 0000000..4bf994a
--- /dev/null
+++ b/07.珠海英搏尔/GZ.LJY000.Enpower/预测单/年度.sql
@@ -0,0 +1,18 @@
+WITH #Ԥ AS (
+ SELECT t1.FBILLNO,t1.FID,t1.FEntryID,t1.FSEQ,t1.FMATERIALID,t1.FUNITID
+ ,t1.FQTY,t1.FYEAR '' ,REPLACE(T1.DATEM,'FMONTH','') '·'
+ ,DATEADD(MONTH, DATEDIFF(MONTH, 0, CONCAT(T1.FYEAR,'-',REPLACE(T1.DATEM,'FMONTH',''),'-01')), 0) AS 'startDate'
+ FROM (
+ SELECT t0.FBILLNO,t0.FID,t0e.FEntryID,t0e.FSEQ,t0e.FYEAR,t0e.FMATERIALID,t0e.FUNITID,FMONTH1,FMONTH2,FMONTH3,FMONTH4,FMONTH5,FMONTH6,FMONTH7,FMONTH8,FMONTH9,FMONTH10,FMONTH11,FMONTH12
+ FROM T_PLN_FORECAST2YEAR t0 --ͷ
+ INNER JOIN T_PLN_FORECAST2YEARENTRY t0e on t0.FID = t0e.FID --
+ ) t0
+ UNPIVOT (
+ FQTY FOR dateM IN (FMONTH1,FMONTH2,FMONTH3,FMONTH4,FMONTH5,FMONTH6,FMONTH7,FMONTH8,FMONTH9,FMONTH10,FMONTH11,FMONTH12)
+ ) AS t1
+
+)
+SELECT *
+ ,DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD(MONTH, 1, t0.startDate)), -1) AS 'endDate'
+FROM #Ԥ t0
+ORDER BY t0.startDate,t0.FSEQ
\ No newline at end of file
diff --git a/08.昶东/EastChanger/EastChanger.csproj b/08.昶东/EastChanger/EastChanger.csproj
index 2a50f00..5544741 100644
--- a/08.昶东/EastChanger/EastChanger.csproj
+++ b/08.昶东/EastChanger/EastChanger.csproj
@@ -88,6 +88,7 @@
+
diff --git a/14.宝锐/GZ.LJY000.Biori/GZ.LJY000.Biori.csproj b/14.宝锐/GZ.LJY000.Biori/GZ.LJY000.Biori.csproj
index 190a681..baba843 100644
--- a/14.宝锐/GZ.LJY000.Biori/GZ.LJY000.Biori.csproj
+++ b/14.宝锐/GZ.LJY000.Biori/GZ.LJY000.Biori.csproj
@@ -131,6 +131,9 @@
+
+
+
@@ -158,20 +161,27 @@
+
+
+
+
+
+
+
@@ -180,6 +190,7 @@
+
diff --git a/14.宝锐/GZ.LJY000.Biori/PLN_FORECAST/ListEventPlugInEx.py b/14.宝锐/GZ.LJY000.Biori/PLN_FORECAST/ListEventPlugInEx.py
new file mode 100644
index 0000000..068ebd6
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/PLN_FORECAST/ListEventPlugInEx.py
@@ -0,0 +1,52 @@
+import clr
+clr.AddReference("System")
+clr.AddReference("System.Xml")
+clr.AddReference("Kingdee.BOS")
+clr.AddReference("Kingdee.BOS.Core")
+clr.AddReference("Kingdee.BOS.DataEntity")
+clr.AddReference("Kingdee.BOS.App")
+clr.AddReference("Kingdee.BOS.Contracts")
+clr.AddReference("Kingdee.BOS.ServiceHelper")
+
+from Kingdee.BOS import *
+from Kingdee.BOS.Contracts import *
+from Kingdee.BOS.Core import *
+from Kingdee.BOS.Core.List import *
+from Kingdee.BOS.Core.List.PlugIn import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
+from Kingdee.BOS.Core.Metadata.EntityElement import *
+from Kingdee.BOS.Core.Bill import *
+from Kingdee.BOS.Core.Metadata import *
+from Kingdee.BOS.Orm.DataEntity import *
+from Kingdee.BOS.Util import *
+from Kingdee.BOS.Core.Util import *
+from System import *
+from System.Xml import *
+from System.ComponentModel import *
+from System.Collections.Generic import *
+from System.Text import*
+from Kingdee.BOS.ServiceHelper import *
+
+def BarItemClick(e):
+ # 条码档案
+ if e.BarItemKey.Equals("tbBarCodeMainEx"):
+
+ selectedRow = this.ListView.SelectedRowsInfo;
+ if selectedRow == None or selectedRow.Count == 0:
+ return;
+ # raise Exception(JsonUtil.Serialize(selectedRow))
+ entryIds = List[str]()
+ for row in selectedRow:
+ entryIds.Add(str(row.EntryPrimaryKeyValue))
+ text ="FBILLENTRYID IN ({0})".format(",".join(entryIds));
+ # 条码扫描
+ listShowParameter = ListShowParameter();
+ listShowParameter.FormId = "UNW_WMS_BARCODEMAIN";
+ listShowParameter.ParentPageId = this.View.PageId;
+ listShowParameter.OpenStyle.ShowType = ShowType.MainNewTabPage;
+ # listShowParameter.OpenStyle.TagetKey = "FEntryTab_Code";
+ listShowParameter.HiddenCloseButton = True;
+ listShowParameter.ListFilterParameter.Filter = text;
+ listShowParameter.ListFilterParameter.OrderBy = "FPRINTENTRYID,FPRINTSORT";
+ this.View.ShowForm(listShowParameter);
+ return;
diff --git a/14.宝锐/GZ.LJY000.Biori/PRD_MO/BillConvertEventPlugInEx.cs b/14.宝锐/GZ.LJY000.Biori/PRD_MO/BillConvertEventPlugInEx.cs
index dc424e5..fb49317 100644
--- a/14.宝锐/GZ.LJY000.Biori/PRD_MO/BillConvertEventPlugInEx.cs
+++ b/14.宝锐/GZ.LJY000.Biori/PRD_MO/BillConvertEventPlugInEx.cs
@@ -21,13 +21,20 @@ using Kingdee.BOS.Core.Metadata.FieldElement;
namespace GZ.LJY000.Biori.PRD_MO
{
- [Description("生产汇报单下推生产入库单#"), HotUpdate]
+ [Description("生产订单装换插件#"), HotUpdate]
public class BillConvertEventPlugInEx : AbstractConvertPlugIn
{
+ #region 因使用优联系统,暂时停用
+
+
+ ///
+ /// 转换后事件
+ ///
+ ///
public override void AfterConvert(AfterConvertEventArgs e)
{
base.AfterConvert(e);
-
+ return;
var paraDIC = this.Option.GetVariables();
if (!paraDIC.ContainsKey("ScanEntry"))
return;
@@ -79,7 +86,7 @@ namespace GZ.LJY000.Biori.PRD_MO
}
}
}
-
+ #endregion
///
/// 创建单据视图
///
@@ -141,6 +148,10 @@ namespace GZ.LJY000.Biori.PRD_MO
base.OnQueryBuilderParemeter(e);
}
+ ///
+ /// 获取数据源
+ ///
+ ///
public override void OnBeforeGetSourceData(BeforeGetSourceDataEventArgs e)
{
base.OnBeforeGetSourceData(e);
@@ -211,9 +222,23 @@ namespace GZ.LJY000.Biori.PRD_MO
base.OnBeforeGroupBy(e);
}
+ ///
+ /// 选单条件策略
+ ///
+ ///
public override void OnParseFilter(ParseFilterEventArgs e)
{
base.OnParseFilter(e);
+ var fromId = e.SourceBusinessInfo.GetForm().Id;
+ e.FilterPolicySQL = e.FilterPolicySQL + $@"
+NOT EXISTS (
+ SELECT 1 FROM T_UNW_WMS_BARCODE uwbc
+ WHERE uwbc.FBILLID = t1.FID
+ AND t1.FENTRYID = uwbc.FBILLENTRYID
+ AND uwbc.FBILLFORMID = '{fromId}'
+)
+";
+ e.PlugFilterDesc = "已生成条码的数据不能重复打印!";
}
public override void OnGetConvertBusinessService(ConvertBusinessServiceEventArgs e)
diff --git a/14.宝锐/GZ.LJY000.Biori/PRD_MO/BillConvertEventPlugInEx.py b/14.宝锐/GZ.LJY000.Biori/PRD_MO/BillConvertEventPlugInEx.py
new file mode 100644
index 0000000..c96931d
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/PRD_MO/BillConvertEventPlugInEx.py
@@ -0,0 +1,39 @@
+import clr
+clr.AddReference("System")
+clr.AddReference("System.Core")
+clr.AddReference("Kingdee.BOS")
+clr.AddReference("Kingdee.BOS.Core")
+clr.AddReference("Kingdee.BOS.DataEntity")
+clr.AddReference("Kingdee.BOS.ServiceHelper")
+clr.AddReference("Newtonsoft.Json")
+from Kingdee.BOS import *
+from Kingdee.BOS.Core import *
+from Kingdee.BOS.Core.Bill import *
+from Kingdee.BOS.Core.DynamicForm import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn import *
+from Kingdee.BOS.Core.Metadata import *
+from Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn import *
+from Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args import *
+from Kingdee.BOS.Core.Metadata.FormElement import *
+from Kingdee.BOS.Orm.DataEntity import *
+from Kingdee.BOS.Orm.Metadata.DataEntity import *
+from Kingdee.BOS.ServiceHelper import *
+from System import *
+from System.Collections.Generic import *
+from System.ComponentModel import *
+from System.Linq import *
+
+# python:已生成条码的数据不能重复生成!
+def OnParseFilter(e):
+ # raise Exception(e.FilterPolicySQL)
+ fromId = e.SourceBusinessInfo.GetForm().Id;
+ e.FilterPolicySQL = e.FilterPolicySQL + """
+ NOT EXISTS (
+ SELECT 1 FROM T_UNW_WMS_BARCODE uwbc
+ WHERE uwbc.FBILLID = t1.FID
+ AND t1.FENTRYID = uwbc.FBILLENTRYID
+ AND uwbc.FBILLFORMID = '{0}'
+ )
+ """.format(fromId);
+ e.PlugFilterDesc = "已生成条码的数据不能重复生成!";
+ return;
\ No newline at end of file
diff --git a/14.宝锐/GZ.LJY000.Biori/PRD_MO/BillEventPlugInEx.cs b/14.宝锐/GZ.LJY000.Biori/PRD_MO/BillEventPlugInEx.cs
new file mode 100644
index 0000000..4f7e9d3
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/PRD_MO/BillEventPlugInEx.cs
@@ -0,0 +1,16 @@
+using Kingdee.BOS.Core.DynamicForm.PlugIn;
+using Kingdee.BOS.Util;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+
+namespace GZ.LJY000.Biori.PRD_MO
+{
+ [HotUpdate, Description("生产订单表单插件")]
+ public class BillEventPlugInEx : AbstractDynamicFormPlugIn
+ {
+
+ }
+}
diff --git a/14.宝锐/GZ.LJY000.Biori/PRD_MO/ListEventPlugInEx.cs b/14.宝锐/GZ.LJY000.Biori/PRD_MO/ListEventPlugInEx.cs
new file mode 100644
index 0000000..4dbb2dc
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/PRD_MO/ListEventPlugInEx.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace GZ.LJY000.Biori.PRD_MO
+{
+ public class ListEventPlugInEx
+ {
+ }
+}
diff --git a/14.宝锐/GZ.LJY000.Biori/PRD_MO/ListEventPlugInEx.py b/14.宝锐/GZ.LJY000.Biori/PRD_MO/ListEventPlugInEx.py
new file mode 100644
index 0000000..068ebd6
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/PRD_MO/ListEventPlugInEx.py
@@ -0,0 +1,52 @@
+import clr
+clr.AddReference("System")
+clr.AddReference("System.Xml")
+clr.AddReference("Kingdee.BOS")
+clr.AddReference("Kingdee.BOS.Core")
+clr.AddReference("Kingdee.BOS.DataEntity")
+clr.AddReference("Kingdee.BOS.App")
+clr.AddReference("Kingdee.BOS.Contracts")
+clr.AddReference("Kingdee.BOS.ServiceHelper")
+
+from Kingdee.BOS import *
+from Kingdee.BOS.Contracts import *
+from Kingdee.BOS.Core import *
+from Kingdee.BOS.Core.List import *
+from Kingdee.BOS.Core.List.PlugIn import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
+from Kingdee.BOS.Core.Metadata.EntityElement import *
+from Kingdee.BOS.Core.Bill import *
+from Kingdee.BOS.Core.Metadata import *
+from Kingdee.BOS.Orm.DataEntity import *
+from Kingdee.BOS.Util import *
+from Kingdee.BOS.Core.Util import *
+from System import *
+from System.Xml import *
+from System.ComponentModel import *
+from System.Collections.Generic import *
+from System.Text import*
+from Kingdee.BOS.ServiceHelper import *
+
+def BarItemClick(e):
+ # 条码档案
+ if e.BarItemKey.Equals("tbBarCodeMainEx"):
+
+ selectedRow = this.ListView.SelectedRowsInfo;
+ if selectedRow == None or selectedRow.Count == 0:
+ return;
+ # raise Exception(JsonUtil.Serialize(selectedRow))
+ entryIds = List[str]()
+ for row in selectedRow:
+ entryIds.Add(str(row.EntryPrimaryKeyValue))
+ text ="FBILLENTRYID IN ({0})".format(",".join(entryIds));
+ # 条码扫描
+ listShowParameter = ListShowParameter();
+ listShowParameter.FormId = "UNW_WMS_BARCODEMAIN";
+ listShowParameter.ParentPageId = this.View.PageId;
+ listShowParameter.OpenStyle.ShowType = ShowType.MainNewTabPage;
+ # listShowParameter.OpenStyle.TagetKey = "FEntryTab_Code";
+ listShowParameter.HiddenCloseButton = True;
+ listShowParameter.ListFilterParameter.Filter = text;
+ listShowParameter.ListFilterParameter.OrderBy = "FPRINTENTRYID,FPRINTSORT";
+ this.View.ShowForm(listShowParameter);
+ return;
diff --git a/14.宝锐/GZ.LJY000.Biori/PRD_MO/OperationEventPlugInEx.cs b/14.宝锐/GZ.LJY000.Biori/PRD_MO/OperationEventPlugInEx.cs
new file mode 100644
index 0000000..855ce2a
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/PRD_MO/OperationEventPlugInEx.cs
@@ -0,0 +1,115 @@
+using Kingdee.BOS.App.Data;
+using Kingdee.BOS.Core.DynamicForm.PlugIn;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.Util;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+
+namespace GZ.LJY000.Biori.PRD_MO
+{
+ [HotUpdate, Description("生产订单服务插件#")]
+ public class OperationEventPlugInEx : AbstractOperationServicePlugIn
+ {
+ public override void OnPreparePropertys(PreparePropertysEventArgs e)
+ {
+ base.OnPreparePropertys(e);
+
+ e.FieldKeys.Add("FBillType");
+ e.FieldKeys.Add("FPackSrcBillNo");
+ e.FieldKeys.Add("FFPackSrcSeq");
+ e.FieldKeys.Add("FPackSrcType");
+
+ e.FieldKeys.Add("F_UHIK_Text_re5");
+ e.FieldKeys.Add("F_UHIK_TEXT8");
+ e.FieldKeys.Add("F_BQGG_Text");
+ e.FieldKeys.Add("F_UHIK_Date");
+ e.FieldKeys.Add("F_UHIK_Date1");
+ e.FieldKeys.Add("FLot");
+ }
+
+ public override void EndOperationTransaction(EndOperationTransactionArgs e)
+ {
+ base.EndOperationTransaction(e);
+ //保存8 提交9 审核1 反审核26 删除3
+ //if (this.FormOperation.OperationId == 1)
+ if (this.FormOperation.OperationId == 8)
+ {
+ var dataEntityList = new List();
+
+ var sqlL = new List();
+
+ foreach (var data in e.DataEntitys)
+ {
+ var BillType_Id = data["BillType_Id"].ToString();
+
+ var where = string.Empty;
+ foreach (var entity in data["TreeEntity"] as DynamicObjectCollection)
+ {
+ if (BillType_Id.Equals("0e74146732c24bec90178b6fe16a2d1c"))
+ {
+ var FPackSrcBillNo = entity["FPackSrcBillNo"].ToString();
+ var FFPackSrcSeq = entity["FFPackSrcSeq"].Long2Int();
+ var FPackSrcType = entity["FPackSrcType"].Long2Int();
+
+ where = $@"WHERE t0.FBILLNO = '{FPackSrcBillNo}' AND t0e.FSEQ = {FFPackSrcSeq}";
+ }
+ else
+ {
+ var entityLink = entity["FTREEENTITY_Link"] as DynamicObjectCollection;
+ if (entityLink.Any())
+ {
+ var link = entityLink.FirstOrDefault();
+ var entryId = link["SId"].Long2Int();
+ if (entryId > 0 && link["STableName"].ToString().Equals("T_PLN_FORECASTENTRY"))
+ where = $@"WHERE t0e.FENTRYID = {entryId}";
+ }
+ }
+
+ if (where.IsNullOrEmpty())
+ continue;
+
+ var baseSql = $@"
+SELECT t0e.FENTRYID
+ ,'{entity["F_UHIK_Text_re5"]}' '存储条件'
+ ,'{entity["F_UHIK_TEXT8"]}' '标签货号'
+ ,'{entity["F_UHIK_Text"]}' '标签规格'
+ ,'{entity["F_UHIK_Date"]}' '生产日期'
+ ,'{entity["F_UHIK_Date1"]}' '有效期至'
+ ,{entity["Lot_Id"]} '标签批号'
+ ,'{entity["Lot_Text"]}' '标签批号_Text'
+FROM T_PLN_FORECAST t0
+ INNER JOIN T_PLN_FORECASTENTRY t0e on t0.FID = t0e.FID AND t0e.FPRODUCTTYPE = 2
+{where}
+";
+ sqlL.Add(baseSql);
+ }
+ }
+
+
+ if (sqlL.Any())
+ {
+ var sql = $@"/*dialect*/
+WITH #基础数据 AS(
+ {string.Join(" UNION ALL ", sqlL)}
+)
+UPDATE t1e SET t1e.F_UHIK_TEXT8 = t0.存储条件
+ ,t1e.F_UHIK_TEXT_RE5 = t0.标签货号
+ ,t1e.F_UHIK_TEXT2 = t0.标签规格
+ ,t1e.F_UHIK_DATE = t0.生产日期
+ ,t1e.F_UHIK_DATE1 = t0.有效期至
+ ,t1e.F_UHIK_LOT = t0.标签批号
+ ,t1e.F_UHIK_LOT_Text = t0.标签批号_Text
+FROM #基础数据 t0
+ INNER JOIN T_PLN_FORECASTENTRY t1e on t0.FENTRYID = t1e.FENTRYID
+";
+
+ var resData = DBUtils.Execute(this.Context, sql);
+ }
+ }
+ }
+ }
+}
diff --git a/14.宝锐/GZ.LJY000.Biori/PRD_MO/OperationEventPlugInEx.py b/14.宝锐/GZ.LJY000.Biori/PRD_MO/OperationEventPlugInEx.py
index a8fefc1..4e13d16 100644
--- a/14.宝锐/GZ.LJY000.Biori/PRD_MO/OperationEventPlugInEx.py
+++ b/14.宝锐/GZ.LJY000.Biori/PRD_MO/OperationEventPlugInEx.py
@@ -32,6 +32,15 @@ from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *
from Kingdee.BOS.App.Core import *
+def OnPreparePropertys(e):
+ e.FieldKeys.Add("FBillType");
+ e.FieldKeys.Add("FPackSrcBillNo");
+ e.FieldKeys.Add("FFPackSrcSeq");
+ e.FieldKeys.Add("FPackSrcType");
+
+def EndOperationTransaction(e):
+ if this.FormOperation.OperationId == 8:
+ raise Exception(JsonUtil.Serialize(e.DataEntitys))
# def AfterDoOperation(e):
# # 保存8提交9审核1反审核26
# # if e.Operation.Operation == "DoBarCodePrintEx":
diff --git a/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/BillEventPlugInEx.cs b/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/BillEventPlugInEx.cs
index 8ed0def..86de54a 100644
--- a/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/BillEventPlugInEx.cs
+++ b/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/BillEventPlugInEx.cs
@@ -47,27 +47,9 @@ namespace GZ.LJY000.Biori.SAL_OUTSTOCK
var rows = result.ReturnData as DynamicObjectCollection;
if (rows.Any())
{
- //var parentRows = rows.Where(w => !w["FParentRowId"].ToString().IsNullOrEmpty());
- //var subRows = rows.Where(w => w["FParentRowId"].ToString().IsNullOrEmpty());
foreach (var item in entity)
{
- DynamicObject row = null;
- //var parentRowId = item["ParentRowId"].ToString();
- //var rowId = item["RowId"].ToString();
-
- //if (parentRowId.IsNullOrEmpty())
- //{
- // //var row = rows.FirstOrDefault(w => w["FRowId"].ToString() == item["RowId"].ToString());
- // row = parentRows.FirstOrDefault(w => w["FMaterialID_Id"].Long2Int() == item["MaterialID_Id"].Long2Int());
- //}
- //else
- //{
- // var parentMatId = item["ParentMatId_Id"].Long2Int();
- // var parentRow = parentRows.FirstOrDefault(w => w["FMaterialID_Id"].Long2Int() == parentMatId);
- // row = subRows.FirstOrDefault(w => w["FParentRowId"].ToString() == parentRow["FRowId"].ToString() && w["FMaterialID_Id"] == item["MaterialID_Id"]);
- //}
-
- row = rows.FirstOrDefault(w => w["FMaterialID_Id"].Long2Int() == item["MaterialID_Id"].Long2Int());
+ DynamicObject row = rows.FirstOrDefault(w => w["FPackBillNo"].IsNullOrEmpty() && w["FMaterialID_Id"].Long2Int() == item["MaterialID_Id"].Long2Int());
if (row != null)
{
diff --git a/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugInEx.cs b/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugInEx.cs
index 38954b9..a6f018b 100644
--- a/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugInEx.cs
+++ b/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugInEx.cs
@@ -22,9 +22,10 @@ namespace GZ.LJY000.Biori.SAL_OUTSTOCK
e.FieldKeys.Add("FRowType");
e.FieldKeys.Add("FPackBillNo");
- e.FieldKeys.Add("FPackBillSeq");
- e.FieldKeys.Add("FPackBillEntryId");
+ //e.FieldKeys.Add("FPackBillSeq");
+ //e.FieldKeys.Add("FPackBillEntryId");
e.FieldKeys.Add("FRealQty");
+ e.FieldKeys.Add("FPackBarCode");
}
public override void OnAddValidators(AddValidatorsEventArgs e)
@@ -33,12 +34,58 @@ namespace GZ.LJY000.Biori.SAL_OUTSTOCK
//添加检查校验器:
if (this.FormOperation.OperationId == 1)
{
- var validator = new VaildatorEventPlugInEx();//新增的校验器
- validator.EntityKey = "FEntity";
- e.Validators.Add(validator);//添加校验器
+ //var validator = new VaildatorEventPlugInEx();//新增的校验器
+ //validator.EntityKey = "FEntity";
+ //e.Validators.Add(validator);//添加校验器
}
}
+ ///
+ ///
+ ///
+ ///
+ ///
+ private DynamicObjectCollection DoGetPackInfo(List sqlL)
+ {
+ var sqlUnion = string.Join(" UNION ALL ", sqlL);
+ var sql = $@"/*dialect*/
+
+WITH #基础数据 AS (
+ {sqlUnion}
+)
+SELECT tt.*,t0.FBARCODE,t0.FBILLNO,t0.FBILLID,t0.FBILLENTRYID,t0.FBILLSEQ,t0.FBILLFORMID
+ ,t1.*,t2.FNUMERATOR,t2.FDENOMINATOR
+FROM #基础数据 tt
+ INNER JOIN T_UNW_WMS_BARCODE t0 on t0.FBARCODE = tt.PackBarCode
+ CROSS APPLY (
+ SELECT t1.FBILLNO,t1e.FEntryID,t1e.FSeq,t1e.FQTY,t1e.FGZLQTY,t1e.FZGSQTY,t1e.FUNITID,t1e.FFYLQTY,t1.FBOMID,t1e.FMATERIALID
+ ,t1.FQTY AS 'MainQty'
+ FROM T_PRD_PACKAGEINSTOCK t1
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t1e on t1.FID = t1e.FID
+ WHERE t1.FSRCBILLENTRYID = t0.FBILLENTRYID
+ AND t1e.FMATERIALID = tt.MaterialId
+ AND tt.FRowType = t1e.FPRODUCTTYPE
+ UNION ALL
+ SELECT t1.FBILLNO,0 FEntryID,0,t1.FQTY,0,0,0,t1.FFYLQTY,t1.FBOMID,t1.FMATERIALID
+ ,t1.FQTY AS 'MainQty'
+ FROM T_PRD_PACKAGEINSTOCK t1
+ WHERE t1.FSRCBILLENTRYID = t0.FBILLENTRYID
+ AND t1.FMATERIALID = tt.MaterialId
+ AND tt.FRowType = t1.FPRODUCTTYPE
+ ) t1
+ LEFT JOIN T_ENG_BOMCHILD t2 on t2.FID = t1.FBOMID AND t1.FMATERIALID = t2.FMATERIALID
+ORDER BY tt.EntrySeq
+
+";
+
+ var res = DBUtils.ExecuteDynamicObject(this.Context, sql);
+ if (res != null && res.Count > 0)
+ return res;
+
+ return null;
+ }
+
+
public override void EndOperationTransaction(EndOperationTransactionArgs e)
{
base.EndOperationTransaction(e);
@@ -75,12 +122,67 @@ namespace GZ.LJY000.Biori.SAL_OUTSTOCK
}
}
- if (isInStock)
- DoComputePackgeInStockQty(sqlL);
- else
- DoComputePackgeOutStockQty(sqlL);
+ //if (isInStock)
+ // DoComputePackgeInStockQty(sqlL);
+ //else
+ // DoComputePackgeOutStockQty(sqlL);
+
+ DoComputePackgeQty(sqlL, !isInStock);
}
+ ///
+ /// 入库操作
+ ///
+ ///
+ private void DoComputePackgeQty(List sqlL, bool isOutStock)
+ {
+ if (sqlL.Any())
+ {
+ var minus = isOutStock ? -1 : 1;
+
+ var updSqlL = $@"/*dialect*/
+
+WITH #基础数据 AS (
+ {string.Join(" UNION ALL ", sqlL)}
+)
+UPDATE t0 SET t0.FQTY = t0.FQTY + (t1.QTY * {minus})
+ ,t0.FOUTSTOCKQTY = t0.FOUTSTOCKQTY - (t1.QTY * {minus})
+FROM T_PRD_PACKAGEINSTOCK t0
+ INNER JOIN #基础数据 t1 on t1.FBILLNO = t0.FBILLNO
+WHERE 1 = 1
+ AND t0.FDOCUMENTSTATUS = 'C'
+
+";
+
+ //更新组装单信
+ var resData = DBUtils.Execute(this.Context, updSqlL);
+ if (resData > 0)
+ {
+ updSqlL = $@"/*dialect*/
+WITH #基础数据 AS (
+ {string.Join(" UNION ALL ", sqlL)}
+)
+UPDATE t0e SET t0e.FQTY = t0e.FQTY + (t0e.FQTY / t3.FQTY * (t1.QTY * {minus} / t2.FDENOMINATOR * t2.FNUMERATOR))
+FROM T_PRD_PACKAGEINSTOCK t0
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID
+ INNER JOIN #基础数据 t1 on t1.FBILLNO = t0.FBILLNO
+ INNER JOIN T_ENG_BOMCHILD t2 on t2.FID = t0.FBOMID AND t2.FMATERIALID = t0e.FMATERIALID
+ CROSS APPLY (
+ SELECT SUM(t3e.FQTY) FQTY
+ FROM T_PRD_PACKAGEINSTOCKENTRY t3e
+ WHERE t3e.FID = t0e.FID AND t3e.FMATERIALID = t0e.FMATERIALID
+ GROUP BY t3e.FID,t3e.FMATERIALID
+ ) t3
+WHERE 1 = 1
+ AND t0.FDOCUMENTSTATUS = 'C'
+";
+ var res = DBUtils.Execute(this.Context, updSqlL);
+ }
+ return;
+ }
+ }
+
+
///
/// 入库操作
///
@@ -105,6 +207,22 @@ WHERE 1 = 1
//更新组装单信
var resData = DBUtils.Execute(this.Context, updSqlL);
+ if (resData > 0)
+ {
+ updSqlL = $@"/*dialect*/
+WITH #基础数据 AS (
+ {string.Join(" UNION ALL ", sqlL)}
+)
+UPDATE t0e SET t0e.FQTY = t0e.FQTY + (t1.QTY / t2.FDENOMINATOR * t2.FNUMERATOR)
+FROM T_PRD_PACKAGEINSTOCK t0
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID
+ INNER JOIN #基础数据 t1 on t1.FBILLNO = t0.FBILLNO
+ INNER JOIN T_ENG_BOMCHILD t2 on t2.FID = t0.FBOMID AND t2.FMATERIALID = t0e.FMATERIALID
+WHERE 1 = 1
+ AND t0.FDOCUMENTSTATUS = 'C'
+";
+ var res = DBUtils.Execute(this.Context, updSqlL);
+ }
return;
}
}
@@ -127,13 +245,28 @@ UPDATE t0 SET t0.FQTY = t0.FQTY - t1.QTY
FROM T_PRD_PACKAGEINSTOCK t0
INNER JOIN #基础数据 t1 on t1.FBILLNO = t0.FBILLNO
WHERE 1 = 1
- AND t0.FDOCUMENTSTATUS = 'C'
- AND (t0.FQTY - t1.QTY) >= 0
-
+ AND t0.FDOCUMENTSTATUS = 'C' AND (t0.FQTY - t1.QTY) >= 0
";
//更新组装单信
var resData = DBUtils.Execute(this.Context, updSqlL);
+ if (resData > 0)
+ {
+ updSqlL = $@"/*dialect*/
+WITH #基础数据 AS (
+ {string.Join(" UNION ALL ", sqlL)}
+)
+UPDATE t0e SET t0e.FQTY = t0e.FQTY - (t1.QTY / t2.FDENOMINATOR * t2.FNUMERATOR)
+FROM T_PRD_PACKAGEINSTOCK t0
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID
+ INNER JOIN #基础数据 t1 on t1.FBILLNO = t0.FBILLNO
+ INNER JOIN T_ENG_BOMCHILD t2 on t2.FID = t0.FBOMID
+ AND t2.FMATERIALID = t0e.FMATERIALID
+WHERE 1 = 1 AND t0.FDOCUMENTSTATUS = 'C'
+
+";
+ var res = DBUtils.Execute(this.Context, updSqlL);
+ }
return;
}
}
diff --git a/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugInEx.py b/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugInEx.py
new file mode 100644
index 0000000..05d1972
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/SAL_OUTSTOCK/OperationEventPlugInEx.py
@@ -0,0 +1,96 @@
+#引入clr运行库
+import clr
+#添加对cloud插件开发的常用组件引用
+clr.AddReference('System')
+clr.AddReference('System.Data')
+clr.AddReference('Kingdee.BOS')
+clr.AddReference('Kingdee.BOS.Core')
+clr.AddReference('Kingdee.BOS.App')
+clr.AddReference('Kingdee.BOS.App.Core')
+clr.AddReference('Kingdee.BOS.Contracts')
+clr.AddReference('Kingdee.BOS.DataEntity')
+clr.AddReference('Kingdee.BOS.ServiceHelper')
+#dairycloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
+from Kingdee.BOS.Core import *
+from Kingdee.BOS.Util import *
+from Kingdee.BOS.Core.Bill import *
+from Kingdee.BOS.Core.List import *
+from Kingdee.BOS.Core.Bill.PlugIn import *
+from Kingdee.BOS.Orm.DataEntity import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
+from Kingdee.BOS.Core.Metadata.ConvertElement.ServiceArgs import *
+from System import *
+from System.Data import *
+from Kingdee.BOS.App.Data import *
+from Kingdee.BOS.App import *
+from Kingdee.BOS.Orm import *
+from Kingdee.BOS.Contracts import *
+from System.Collections.Generic import List
+from Kingdee.BOS.ServiceHelper import *
+from Kingdee.BOS.App.Core import *
+
+def OnPreparePropertys(e):
+ e.FieldKeys.Add("FRowType");
+ e.FieldKeys.Add("FPackBillNo");
+ # e.FieldKeys.Add("FPackBillSeq");
+ # e.FieldKeys.Add("FPackBillEntryId");
+ e.FieldKeys.Add("FRealQty");
+ e.FieldKeys.Add("FPackBarCode");
+
+def BeforeDoSaveExecute(e):
+ # if this.FormOperation.OperationId == 8:
+ for entity in e.DataEntities:
+ entries = entity["SAL_OUTSTOCKENTRY"]
+ sqlL = List[str]();
+ for idx,entry in enumerate(entries):
+ rowType = 1 if entry["RowType"] == "Parent" else 2;
+ if rowType == 2 or rowType == 1:
+ packBarCode = "" if entry["FPackBarCode"] == None else entry["FPackBarCode"].strip()
+ packBillNo = "" if entry["FPackBillNo"] == None else entry["FPackBillNo"].strip()
+
+ if (rowType == 1 and packBillNo == "") or (rowType == 2 and packBarCode != "" and packBillNo == ""):
+ materialId = entry["MaterialID_Id"]
+ entryId = entry["Id"]
+ rowId = entry["RowId"]
+ pRowId = entry["ParentRowId"]
+ sqlL.Add("SELECT {0} 'MaterialId',{1} 'EntryId',{2} 'EntrySeq','{3}' AS 'PackBarCode',{4} AS 'FRowType','{5}' AS 'rowId','{6}' AS 'pRwoId'".format(materialId,entryId,idx,packBarCode,rowType,rowId,pRowId));
+
+ if sqlL.Count > 0:
+ sqlUnion = " UNION ALL ".join(sqlL);
+ sql = """/*dialect*/
+
+WITH #基础数据 AS (
+ {0}
+)
+, #初步处理 AS (
+ SELECT t0.MaterialId,t0.EntryId,t0.EntrySeq
+ ,CASE WHEN t0.FRowType = 1 THEN (
+ SELECT TOP 1 t1.PackBarCode FROM #基础数据 t1 WHERE t1.pRwoId = t0.rowId
+ ) ELSE t0.PackBarCode END 'PackBarCode'
+ ,t0.FRowType,t0.rowId,t0.pRwoId
+ FROM #基础数据 t0
+)
+SELECT tt.*
+ ,t0.FBARCODE,t1.FBILLNO,t0.FBILLID,t0.FBILLENTRYID,t0.FBILLSEQ,t0.FBILLFORMID
+FROM #初步处理 tt
+ INNER JOIN T_UNW_WMS_BARCODE t0 on t0.FBARCODE = tt.PackBarCode
+ INNER JOIN T_PRD_PACKAGEINSTOCK t1 on t1.FSRCBILLENTRYID = t0.FBILLENTRYID
+WHERE t0.FBILLFORMID = 'PLN_FORECAST'
+ORDER BY tt.EntrySeq
+
+ """.format(sqlUnion);
+ # raise Exception(sql);
+
+ res = DBServiceHelper.ExecuteDynamicObject(this.Context, sql)
+
+ if res != None and res.Count > 0:
+ for item in res:
+ seq = item["EntrySeq"];
+ entries[seq]["FPackBarCode"] = item["PackBarCode"];
+ entries[seq]["FPackBillNo"] = item["FBILLNO"];
+ # entries[seq]["FPackBillSeq"] = item["FSeq"];
+ # entries[seq]["FPackBillEntryId"] = item["FEntryID"];
+
+ return;
\ No newline at end of file
diff --git a/14.宝锐/GZ.LJY000.Biori/SAL_RETURNSTOCK/OperationEventPlugInEx.cs b/14.宝锐/GZ.LJY000.Biori/SAL_RETURNSTOCK/OperationEventPlugInEx.cs
index 0b49e54..748b5fb 100644
--- a/14.宝锐/GZ.LJY000.Biori/SAL_RETURNSTOCK/OperationEventPlugInEx.cs
+++ b/14.宝锐/GZ.LJY000.Biori/SAL_RETURNSTOCK/OperationEventPlugInEx.cs
@@ -21,9 +21,10 @@ namespace GZ.LJY000.Biori.SAL_RETURNSTOCK
e.FieldKeys.Add("FRowType");
e.FieldKeys.Add("FPackBillNo");
- e.FieldKeys.Add("FPackBillSeq");
- e.FieldKeys.Add("FPackBillEntryId");
+ //e.FieldKeys.Add("FPackBillSeq");
+ //e.FieldKeys.Add("FPackBillEntryId");
e.FieldKeys.Add("FRealQty");
+ e.FieldKeys.Add("FPackBarCode");
}
public override void OnAddValidators(AddValidatorsEventArgs e)
@@ -31,11 +32,10 @@ namespace GZ.LJY000.Biori.SAL_RETURNSTOCK
base.OnAddValidators(e);
if (this.FormOperation.OperationId == 1)
{
-
- //添加检查校验器:
- var validator = new VaildatorEventPlugInEx();//新增的校验器
- validator.EntityKey = "FEntity";
- e.Validators.Add(validator);//添加校验器
+ ////添加检查校验器:
+ //var validator = new VaildatorEventPlugInEx();//新增的校验器
+ //validator.EntityKey = "FEntity";
+ //e.Validators.Add(validator);//添加校验器
}
}
@@ -75,10 +75,60 @@ namespace GZ.LJY000.Biori.SAL_RETURNSTOCK
}
}
- if (isInStock)
- DoComputePackgeInStockQty(sqlL);
- else
- DoComputePackgeOutStockQty(sqlL);
+ //if (isInStock)
+ // DoComputePackgeInStockQty(sqlL);
+ //else
+ // DoComputePackgeOutStockQty(sqlL);
+
+ DoComputePackgeQty(sqlL, !isInStock);
+ }
+
+ private void DoComputePackgeQty(List sqlL, bool isOutStock)
+ {
+ if (sqlL.Any())
+ {
+ var minus = isOutStock ? -1 : 1;
+
+ var updSqlL = $@"/*dialect*/
+
+WITH #基础数据 AS (
+ {string.Join(" UNION ALL ", sqlL)}
+)
+UPDATE t0 SET t0.FQTY = t0.FQTY + (t1.QTY * {minus})
+ ,t0.FOUTSTOCKQTY = t0.FOUTSTOCKQTY - (t1.QTY * {minus})
+FROM T_PRD_PACKAGEINSTOCK t0
+ INNER JOIN #基础数据 t1 on t1.FBILLNO = t0.FBILLNO
+WHERE 1 = 1
+ AND t0.FDOCUMENTSTATUS = 'C'
+
+";
+
+ //更新组装单信
+ var resData = DBUtils.Execute(this.Context, updSqlL);
+ if (resData > 0)
+ {
+ updSqlL = $@"/*dialect*/
+WITH #基础数据 AS (
+ {string.Join(" UNION ALL ", sqlL)}
+)
+UPDATE t0e SET t0e.FQTY = t0e.FQTY + (t0e.FQTY / t3.FQTY * (t1.QTY * {minus} / t2.FDENOMINATOR * t2.FNUMERATOR))
+FROM T_PRD_PACKAGEINSTOCK t0
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID
+ INNER JOIN #基础数据 t1 on t1.FBILLNO = t0.FBILLNO
+ INNER JOIN T_ENG_BOMCHILD t2 on t2.FID = t0.FBOMID AND t2.FMATERIALID = t0e.FMATERIALID
+ CROSS APPLY (
+ SELECT SUM(t3e.FQTY) FQTY
+ FROM T_PRD_PACKAGEINSTOCKENTRY t3e
+ WHERE t3e.FID = t0e.FID AND t3e.FMATERIALID = t0e.FMATERIALID
+ GROUP BY t3e.FID,t3e.FMATERIALID
+ ) t3
+WHERE 1 = 1
+ AND t0.FDOCUMENTSTATUS = 'C'
+";
+ var res = DBUtils.Execute(this.Context, updSqlL);
+ }
+ return;
+ }
}
///
@@ -105,6 +155,22 @@ WHERE 1 = 1
//更新组装单信
var resData = DBUtils.Execute(this.Context, updSqlL);
+ if (resData > 0)
+ {
+ updSqlL = $@"/*dialect*/
+WITH #基础数据 AS (
+ {string.Join(" UNION ALL ", sqlL)}
+)
+UPDATE t0e SET t0e.FQTY = t0e.FQTY + (t1.QTY / t2.FDENOMINATOR * t2.FNUMERATOR)
+FROM T_PRD_PACKAGEINSTOCK t0
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID
+ INNER JOIN #基础数据 t1 on t1.FBILLNO = t0.FBILLNO
+ INNER JOIN T_ENG_BOMCHILD t2 on t2.FID = t0.FBOMID AND t2.FMATERIALID = t0e.FMATERIALID
+WHERE 1 = 1
+ AND t0.FDOCUMENTSTATUS = 'C'
+";
+ var res = DBUtils.Execute(this.Context, updSqlL);
+ }
return;
}
}
@@ -134,6 +200,23 @@ WHERE 1 = 1
//更新组装单信
var resData = DBUtils.Execute(this.Context, updSqlL);
+ if (resData > 0)
+ {
+
+ updSqlL = $@"/*dialect*/
+WITH #基础数据 AS (
+ {string.Join(" UNION ALL ", sqlL)}
+)
+UPDATE t0e SET t0e.FQTY = t0e.FQTY - (t1.QTY / t2.FDENOMINATOR * t2.FNUMERATOR)
+FROM T_PRD_PACKAGEINSTOCK t0
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID
+ INNER JOIN #基础数据 t1 on t1.FBILLNO = t0.FBILLNO
+ INNER JOIN T_ENG_BOMCHILD t2 on t2.FID = t0.FBOMID AND t2.FMATERIALID = t0e.FMATERIALID
+WHERE 1 = 1
+ AND t0.FDOCUMENTSTATUS = 'C'
+";
+ var res = DBUtils.Execute(this.Context, updSqlL);
+ }
return;
}
}
diff --git a/14.宝锐/GZ.LJY000.Biori/SQLServer/获取.sql b/14.宝锐/GZ.LJY000.Biori/SQLServer/获取.sql
index 8bcf8d4..978e26d 100644
--- a/14.宝锐/GZ.LJY000.Biori/SQLServer/获取.sql
+++ b/14.宝锐/GZ.LJY000.Biori/SQLServer/获取.sql
@@ -151,4 +151,150 @@ FROM T_PRD_PACKAGEINSTOCK t0
LEFT JOIN # tt on tt.FENTRYID = t0e.FEntryID
WHERE 1 = 1
AND t0.FDOCUMENTSTATUS = 'C'
- --AND t0.FBILLNO = 'ZZRK202411130003'
\ No newline at end of file
+ --AND t0.FBILLNO = 'ZZRK202411130003'
+
+
+WITH # AS (
+ SELECT 100125 FENTRYID,'ZZRK202411130003' BillNo, 50 QTY
+)
+SELECT t0.FBILLNO,t0e.FEntryID,t0e.FID,t0.FQTY AS 'PQty'
+ ,t0.FOUTSTOCKQTY
+ ,t0e.FQTY,t0e.FZGSQTY,t0e.FGZLQty,t1.baseQty,t2.dataQty
+ ,t3e.FNUMERATOR,t3e.FDENOMINATOR
+FROM T_PRD_PACKAGEINSTOCK t0
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID
+ CROSS APPLY (
+ SELECT COUNT(1) AS baseQty
+ FROM # t1
+ WHERE t1.BillNo = t0.FBILLNO
+ GROUP BY t1.BillNo
+ ) t1
+ CROSS APPLY (
+ SELECT COUNT(1) AS dataQty
+ FROM T_PRD_PACKAGEINSTOCKENTRY t2e
+ WHERE t2e.FID = t0e.FID
+ ) t2
+ INNER JOIN T_ENG_BOM t3 on t3.FID = t0.FBOMID
+ INNER JOIN T_ENG_BOMCHILD t3e on t3e.FID = t3.FID AND t3e.FMATERIALID = t0e.FMATERIALID
+WHERE 1 = 1
+
+
+
+SELECT t0e.FENTRYID,t0e.FQTY
+ ,ISNULL(t1.ѡϸ,0) 'ѡϸ'
+ --,ISNULL(t2.ѡϸ,0) 'δ˺ϸ'
+ ,t3e.FRPTQTY
+FROM T_PRD_MO t0
+ INNER JOIN T_PRD_MOENTRY t0e on t0.FID = t0e.FID
+ OUTER APPLY (
+ SELECT t1e.FMOENTRYID,t1e.FMOBILLNO,SUM(t1e.FFINISHQTY) 'ѡϸ'
+ FROM T_PRD_MORPT t1
+ INNER JOIN T_PRD_MORPTENTRY t1e on t1.FID = t1e.FID
+ INNER JOIN T_PRD_MORPTENTRY_A t1e_a on t1e_a.FENTRYID = t1e.FENTRYID
+ WHERE t1e.FMOENTRYID = t0e.FENTRYID AND t1.FDOCUMENTSTATUS = 'C'
+ GROUP BY t1e.FMOENTRYID,t1e.FMOBILLNO
+ ) t1
+ --OUTER APPLY (
+ -- SELECT t2e.FMOENTRYID,t2e.FMOBILLNO,SUM(t2e_a.FSTOCKINQUASELQTY) 'ѡϸ'
+ -- FROM T_PRD_MORPT t2
+ -- INNER JOIN T_PRD_MORPTENTRY t2e on t2.FID = t2e.FID
+ -- INNER JOIN T_PRD_MORPTENTRY_A t2e_a on t2e_a.FENTRYID = t2e.FENTRYID
+ -- WHERE t2e.FMOENTRYID = t0e.FENTRYID AND t2.FDOCUMENTSTATUS != 'C'
+ -- GROUP BY t2e.FMOENTRYID,t2e.FMOBILLNO
+ --) t2
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t3e on t3e.FMOENTRYID = t0e.FENTRYID
+WHERE 1 = 1
+ AND t0.FDOCUMENTSTATUS = 'C'
+
+--20241211 ۳ⵥ
+WITH # AS (
+ SELECT 156743 'MaterialId',144096 'EntryId',1 'EntrySeq' ,'' AS 'PackBarCode',1 'FRowType','3473790b-c91b-a08a-11ef-b7645430fc76' rowId,'' pRwoId
+ UNION ALL SELECT 125771 'MaterialId',144097 'EntryId',2 'EntrySeq' ,'000107' AS 'PackBarCode',2 'FRowType','3473790b-c91b-a08a-11ef-b76464352f75' rowId,'3473790b-c91b-a08a-11ef-b7645430fc76' pRwoId
+ UNION ALL SELECT 126471 'MaterialId',144098 'EntryId',3 'EntrySeq' ,'000107' AS 'PackBarCode',2 'FRowType','3473790b-c91b-a08a-11ef-b76464352f76' rowId,'3473790b-c91b-a08a-11ef-b7645430fc76' pRwoId
+ UNION ALL SELECT 126146 'MaterialId',144099 'EntryId',4 'EntrySeq' ,'000107' AS 'PackBarCode',2 'FRowType','3473790b-c91b-a08a-11ef-b76464352f77' rowId,'3473790b-c91b-a08a-11ef-b7645430fc76' pRwoId
+)
+, # AS (
+ SELECT t0.MaterialId,t0.EntryId,t0.EntrySeq
+ ,CASE WHEN t0.PackBarCode = '' and t0.FRowType = 1 THEN (
+ SELECT TOP 1 t1.PackBarCode FROM # t1 WHERE t1.pRwoId = t0.rowId
+ ) ELSE t0.PackBarCode END 'PackBarCode'
+ ,t0.FRowType,t0.rowId,t0.pRwoId
+ FROM # t0
+)
+SELECT tt.*,t0.FBARCODE,t0.FBILLNO,t0.FBILLID,t0.FBILLENTRYID,t0.FBILLSEQ,t0.FBILLFORMID
+ ,t1.*,t2.FNUMERATOR,t2.FDENOMINATOR
+FROM # tt
+ INNER JOIN T_UNW_WMS_BARCODE t0 on t0.FBARCODE = tt.PackBarCode
+ CROSS APPLY (
+ SELECT t1.FBILLNO,t1e.FEntryID,t1e.FSeq,t1e.FQTY,t1e.FGZLQTY,t1e.FZGSQTY,t1e.FUNITID,t1e.FFYLQTY,t1.FBOMID,t1e.FMATERIALID
+ ,t1.FQTY AS 'MainQty'
+ FROM T_PRD_PACKAGEINSTOCK t1
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t1e on t1.FID = t1e.FID
+ WHERE t1.FSRCBILLENTRYID = t0.FBILLENTRYID
+ AND t1e.FMATERIALID = tt.MaterialId
+ AND tt.FRowType = t1e.FPRODUCTTYPE
+ UNION ALL
+ SELECT t1.FBILLNO,0 FEntryID,0,t1.FQTY,0,0,0,t1.FFYLQTY,t1.FBOMID,t1.FMATERIALID
+ ,t1.FQTY AS 'MainQty'
+ FROM T_PRD_PACKAGEINSTOCK t1
+ WHERE t1.FSRCBILLENTRYID = t0.FBILLENTRYID
+ AND t1.FMATERIALID = tt.MaterialId
+ AND tt.FRowType = t1.FPRODUCTTYPE
+ ) t1
+ LEFT JOIN T_ENG_BOMCHILD t2 on t2.FID = t1.FBOMID AND t1.FMATERIALID = t2.FMATERIALID
+ORDER BY tt.EntrySeq
+
+--2024-12-13
+WITH # AS (
+ SELECT 100304 FENTRYID,'ZZRK202412130001' BillNo, 0.100 QTY ,0 FYLCK
+ UNION ALL SELECT 100305 FENTRYID,'ZZRK202412130001' BillNo, 1.25 QTY ,0 FYLCK
+ UNION ALL SELECT 100306 FENTRYID,'ZZRK202412130001' BillNo, 0.051 QTY ,0 FYLCK
+)
+, # AS (
+ SELECT t0.FBILLNO,t0e.FEntryID,t0e.FID
+ ,t0.FQTY AS 'PQty'
+ ,(t0e.FQTY - t0e.FFYLQTY)/ t2e.FNUMERATOR * t2e.FDENOMINATOR AS ''
+ ,(t6.QTY)/ t2e.FNUMERATOR * t2e.FDENOMINATOR * t5.F_UNITIDHS AS 'ʵʳ⸸'
+ ,(t0e.FFYLQTY) /t2e.FNUMERATOR * t2e.FDENOMINATOR AS ''
+ ,t0.FOUTSTOCKQTY
+ ,t0e.FQTY
+ ,t0e.FZGSQTY,t0e.FGZLQty
+ ,t0e.FFYLQTY
+ ,t2e.FNUMERATOR,t2e.FDENOMINATOR
+ ,t5.F_UNITIDHS
+ ,t6.FYLCK
+ ,ROW_NUMBER() OVER (PARTITION BY t0.FID ORDER BY t0e.FENTRYID) RN
+ FROM T_PRD_PACKAGEINSTOCK t0
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID
+ INNER JOIN T_ENG_BOM t2 on t2.FID = t0.FBOMID
+ INNER JOIN T_ENG_BOMCHILD t2e on t2e.FID = t2.FID AND t2e.FMATERIALID = t0e.FMATERIALID
+ INNER JOIN T_BD_MATERIAL t5 on t5.FMATERIALID = t0e.FMATERIALID
+ INNER JOIN # t6 on t6.FENTRYID = t0e.FEntryID
+ WHERE 1 = 1
+)
+UPDATE t1 SET t1.FQTY = t1.FQTY - t0.ʵʳ⸸
+ ,t1.FOUTSTOCKQTY = t1.FOUTSTOCKQTY + t0.ʵʳ⸸
+FROM # t0
+ INNER JOIN T_PRD_PACKAGEINSTOCK t1 on t1.FID = t0.FID
+ CROSS APPLY (
+ SELECT COUNT(1) bQty
+ FROM # t2
+ WHERE t2.FID = t0.FID
+ GROUP BY t2.FID
+ HAVING AVG(t2.ʵʳ⸸) = t0.ʵʳ⸸
+ ) t2
+ CROSS APPLY (
+ SELECT COUNT(1) AS dQty
+ FROM T_PRD_PACKAGEINSTOCKENTRY t4e
+ WHERE t4e.FID = t0.FID
+ GROUP BY t4e.FID
+ ) t4
+WHERE t2.bQty = t4.dQty
+ AND t0.FYLCK = 0
+ AND t0.RN = 1
+
+--2024-12-16 ɨ¼
+SELECT t0.FTOROWID,t0.FBARCODEID,t0.FBOXCODEID,t0.*
+FROM T_UNW_WMS_NORMALRECORD t0
+WHERE t0.FTOFORMID = 'SAL_OUTSTOCK'
+ORDER BY t0.FTOROWID
\ No newline at end of file
diff --git a/14.宝锐/GZ.LJY000.Biori/STK_MisDelivery/OperationEventPlugInEx.cs b/14.宝锐/GZ.LJY000.Biori/STK_MisDelivery/OperationEventPlugInEx.cs
index dbbdb79..ea1fda7 100644
--- a/14.宝锐/GZ.LJY000.Biori/STK_MisDelivery/OperationEventPlugInEx.cs
+++ b/14.宝锐/GZ.LJY000.Biori/STK_MisDelivery/OperationEventPlugInEx.cs
@@ -12,17 +12,27 @@ using System.Text;
namespace GZ.LJY000.Biori.STK_MisDelivery
{
- [HotUpdate, Description("其他出库单服务操作插件")]
+ [HotUpdate, Description("其他出库单服务操作插件#")]
public class OperationEventPlugInEx : AbstractOperationServicePlugIn
{
public override void OnPreparePropertys(PreparePropertysEventArgs e)
{
base.OnPreparePropertys(e);
+ #region base
+ e.FieldKeys.Add("FStockDirect");
+ #endregion
+
+ #region item
+ e.FieldKeys.Add("FSeq");
e.FieldKeys.Add("FPackBillNo");
- e.FieldKeys.Add("FPackBillSeq");
- e.FieldKeys.Add("FPackBillEntryId");
+ //e.FieldKeys.Add("FPackBillSeq");
+ //e.FieldKeys.Add("FPackBillEntryId");
+ e.FieldKeys.Add("FPackBarCode"); //套件码
e.FieldKeys.Add("FQty");
+ e.FieldKeys.Add("F_QJCG_Assistant1"); //检料类型
+ //e.FieldKeys.Add("FRowType");
+ #endregion
}
public override void OnAddValidators(AddValidatorsEventArgs e)
@@ -30,17 +40,15 @@ namespace GZ.LJY000.Biori.STK_MisDelivery
base.OnAddValidators(e);
if (this.FormOperation.OperationId == 1)
{
-
- //添加检查校验器:
- var validator = new VaildatorEventPlugInEx();//新增的校验器
- validator.EntityKey = "FEntity";
- e.Validators.Add(validator);//添加校验器
+ ////添加检查校验器:
+ //var validator = new VaildatorEventPlugInEx();//新增的校验器
+ //validator.EntityKey = "FEntity";
+ //e.Validators.Add(validator);//添加校验器
}
}
public override void EndOperationTransaction(EndOperationTransactionArgs e)
{
- base.EndOperationTransaction(e);
//保存8 提交9 审核1 反审核26 删除3
if (this.FormOperation.OperationId == 1)
{
@@ -50,6 +58,7 @@ namespace GZ.LJY000.Biori.STK_MisDelivery
{
DoComputePackgeQty(e.DataEntitys, true);
}
+ base.EndOperationTransaction(e);
}
///
@@ -60,29 +69,34 @@ namespace GZ.LJY000.Biori.STK_MisDelivery
private void DoComputePackgeQty(DynamicObject[] dataEntitys, bool isInStock)
{
var dataEntityList = new List();
- var sqlL = new Dictionary();
+ var sqlL = new List();
//# ! 装管公式(毫升):管数 = 数量 / 装管量(ml) / 1.05
//# ! 装管公式(微升):管数 = 数量 / 装管量(ml) / 1000 / 1.05
foreach (var data in dataEntitys)
{
+ var stockDirect = data["StockDirect"].ToString();
foreach (var item in data["BillEntry"] as DynamicObjectCollection)
{
var packBillNo = item["FPackBillNo"].ToString();
+ //var packBillEntryId = item["FPackBillEntryId"].ToString();
+ var materialId = item["MaterialId_Id"].Long2Int();
if (!packBillNo.IsNullOrEmpty())
{
- if (sqlL.ContainsKey(packBillNo))
- continue;
- sqlL.Add(packBillNo, $" SELECT '{packBillNo}' AS FBILLNO , {item["Qty"]} AS QTY ");
+ var fylck = item["F_QJCG_Assistant1_Id"].ToString().Equals("63876e213ea87e");
+ var minus = stockDirect == "RETNRU" ? -1 : 1;
+ minus = minus * (isInStock ? -1 : 1);
+ sqlL.Add($" SELECT '{packBillNo}' AS FBILLNO,{materialId} FMATERIALID, {item["Qty"]} * {minus} AS QTY ,{(fylck ? 1 : 0)} FYLCK");
}
}
}
if (isInStock)
- DoComputePackgeInStockQty(sqlL.Values.ToList());
+ DoComputePackgeInStockQty(sqlL);
else
- DoComputePackgeOutStockQty(sqlL.Values.ToList());
+ DoComputePackgeOutStockQty(sqlL);
+
}
///
@@ -93,22 +107,80 @@ namespace GZ.LJY000.Biori.STK_MisDelivery
{
if (sqlL.Any())
{
+ var updHeadSql = $@"/*dialect*/
+WITH #基础数据 AS (
+ {string.Join(" UNION ALL ", sqlL)}
+)
+, #关联数据 AS (
+ SELECT t0.FBILLNO,t0e.FEntryID,t0e.FID
+ ,t0.FQTY AS 'PQty'
+ ,(t0e.FQTY - t0e.FFYLQTY)/ t2e.FNUMERATOR * t2e.FDENOMINATOR AS '父项数量'
+ ,(t6.QTY)/ t2e.FNUMERATOR * t2e.FDENOMINATOR * t5.F_UNITIDHS AS '实际出库父项数量'
+ ,(t0e.FFYLQTY) /t2e.FNUMERATOR * t2e.FDENOMINATOR AS '富余量'
+ ,t0.FOUTSTOCKQTY
+ ,t0e.FQTY
+ ,t0e.FZGSQTY,t0e.FGZLQty
+ ,t0e.FFYLQTY
+ ,t2e.FNUMERATOR,t2e.FDENOMINATOR
+ ,t5.F_UNITIDHS
+ ,t6.FYLCK
+ ,ROW_NUMBER() OVER (PARTITION BY t0.FID ORDER BY t0e.FENTRYID) RN
+ FROM T_PRD_PACKAGEINSTOCK t0
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID
+ INNER JOIN T_ENG_BOM t2 on t2.FID = t0.FBOMID
+ INNER JOIN T_ENG_BOMCHILD t2e on t2e.FID = t2.FID AND t2e.FMATERIALID = t0e.FMATERIALID
+ INNER JOIN T_BD_MATERIAL t5 on t5.FMATERIALID = t0e.FMATERIALID
+ INNER JOIN #基础数据 t6 on t6.FENTRYID = t0e.FEntryID
+ WHERE 1 = 1
+)
+UPDATE t1 SET t1.FQTY = t1.FQTY + t0.实际出库父项数量
+ ,t1.FOUTSTOCKQTY = t1.FOUTSTOCKQTY - t0.实际出库父项数量
+FROM #关联数据 t0
+ INNER JOIN T_PRD_PACKAGEINSTOCK t1 on t1.FID = t0.FID
+ CROSS APPLY (
+ SELECT COUNT(1) bQty
+ FROM #关联数据 t2
+ WHERE t2.FID = t0.FID
+ GROUP BY t2.FID
+ HAVING AVG(t2.实际出库父项数量) = t0.实际出库父项数量
+ ) t2
+ CROSS APPLY (
+ SELECT COUNT(1) AS dQty
+ FROM T_PRD_PACKAGEINSTOCKENTRY t4e
+ WHERE t4e.FID = t0.FID
+ GROUP BY t4e.FID
+ ) t4
+WHERE t2.bQty = t4.dQty
+ AND t0.FYLCK = 0
+ AND t0.RN = 1
+";
+ //var res = DBUtils.Execute(this.Context, updHeadSql);
var updSqlL = $@"/*dialect*/
WITH #基础数据 AS (
{string.Join(" UNION ALL ", sqlL)}
)
-UPDATE t0 SET t0.FQTY = t0.FQTY + t1.QTY
- ,t0.FOUTSTOCKQTY = t0.FOUTSTOCKQTY - t1.QTY
+, #汇总数据 AS (
+ SELECT t0.BillNo,t0.FMATERIALID,SUM(t0.Qty) Qty
+ FROM #基础数据 t0
+ GROUP BY t0.BillNo,t0.FMATERIALID
+)
+--SELECT t0.FBILLNO,t1.FMATERIALID,t1.Qty * t0e.FQTY / t2.总数量,t3.F_UNITIDHS
+UPDATE t0e SET t0e.FQTY = t0e.FQTY + (t1.Qty * t0e.FQTY / t2.总数量 * t3.F_UNITIDHS)
FROM T_PRD_PACKAGEINSTOCK t0
- INNER JOIN #基础数据 t1 on t1.FBILLNO = t0.FBILLNO
-WHERE 1 = 1
- AND t0.FDOCUMENTSTATUS = 'C'
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0e.FID = t0.FID
+ INNER JOIN #汇总数据 t1 on t1.BillNo = t0.FBILLNO AND t0e.FMATERIALID = t1.FMATERIALID
+ CROSS APPLY (
+ SELECT SUM(t2e.FQTY) AS '总数量'
+ FROM T_PRD_PACKAGEINSTOCKENTRY t2e
+ WHERE t2e.FID = t0e.FID AND t2e.FMATERIALID = t0e.FMATERIALID
+ ) t2
+ INNER JOIN T_BD_MATERIAL t3 on t3.FMATERIALID = t0e.FMATERIALID
";
//更新组装单信
- var resData = DBUtils.Execute(this.Context, updSqlL);
+ //var resData = DBUtils.Execute(this.Context, updSqlL);
return;
}
}
@@ -121,23 +193,72 @@ WHERE 1 = 1
{
if (sqlL.Any())
{
+ var updHeadSql = $@"/*dialect*/
+WITH #基础数据 AS (
+ {string.Join(" UNION ALL ", sqlL)}
+)
+, #关联数据 AS (
+ SELECT t0.FBILLNO,t0e.FEntryID,t0e.FID
+ ,t0.FQTY AS 'PQty'
+ ,(t0e.FQTY - t0e.FFYLQTY)/ t2e.FNUMERATOR * t2e.FDENOMINATOR AS '父项数量'
+ ,(t6.QTY)/ t2e.FNUMERATOR * t2e.FDENOMINATOR * t5.F_UNITIDHS AS '实际出库父项数量'
+ ,(t0e.FFYLQTY) /t2e.FNUMERATOR * t2e.FDENOMINATOR AS '富余量'
+ ,t0.FOUTSTOCKQTY
+ ,t0e.FQTY
+ ,t0e.FZGSQTY,t0e.FGZLQty
+ ,t0e.FFYLQTY
+ ,t2e.FNUMERATOR,t2e.FDENOMINATOR
+ ,t5.F_UNITIDHS
+ ,t6.FYLCK
+ ,ROW_NUMBER() OVER (PARTITION BY t0.FID ORDER BY t0e.FENTRYID) RN
+ FROM T_PRD_PACKAGEINSTOCK t0
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID
+ INNER JOIN T_ENG_BOM t2 on t2.FID = t0.FBOMID
+ INNER JOIN T_ENG_BOMCHILD t2e on t2e.FID = t2.FID AND t2e.FMATERIALID = t0e.FMATERIALID
+ INNER JOIN T_BD_MATERIAL t5 on t5.FMATERIALID = t0e.FMATERIALID
+ INNER JOIN #基础数据 t6 on t6.FENTRYID = t0e.FEntryID
+ WHERE 1 = 1
+)
+UPDATE t1 SET t1.FQTY = t1.FQTY - t0.实际出库父项数量
+ ,t1.FOUTSTOCKQTY = t1.FOUTSTOCKQTY + t0.实际出库父项数量
+FROM #关联数据 t0
+ INNER JOIN T_PRD_PACKAGEINSTOCK t1 on t1.FID = t0.FID
+ CROSS APPLY (
+ SELECT COUNT(1) bQty
+ FROM #关联数据 t2
+ WHERE t2.FID = t0.FID
+ GROUP BY t2.FID
+ HAVING AVG(t2.实际出库父项数量) = t0.实际出库父项数量
+ ) t2
+ CROSS APPLY (
+ SELECT COUNT(1) AS dQty
+ FROM T_PRD_PACKAGEINSTOCKENTRY t4e
+ WHERE t4e.FID = t0.FID
+ GROUP BY t4e.FID
+ ) t4
+WHERE t2.bQty = t4.dQty
+ AND t0.FYLCK = 0
+ AND t0.RN = 1
+";
+ //var res = DBUtils.Execute(this.Context, updHeadSql);
+
var updSqlL = $@"/*dialect*/
WITH #基础数据 AS (
{string.Join(" UNION ALL ", sqlL)}
)
-UPDATE t0 SET t0.FQTY = t0.FQTY - t1.QTY
- ,t0.FOUTSTOCKQTY = t0.FOUTSTOCKQTY + t1.QTY
-FROM T_PRD_PACKAGEINSTOCK t0
- INNER JOIN #基础数据 t1 on t1.FBILLNO = t0.FBILLNO
+UPDATE t0e SET t0e.FQTY = t0e.FQTY - (tt.QTY * t1.F_UNITIDHS)
+FROM #基础数据 tt
+ INNER JOIN T_PRD_PACKAGEINSTOCK t0 on t0.FBILLNO = tt.BillNo
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on tt.FENTRYID = t0e.FEntryID
+ INNER JOIN T_BD_MATERIAL t1 on t1.FMATERIALID = t0e.FMATERIALID
WHERE 1 = 1
AND t0.FDOCUMENTSTATUS = 'C'
- AND (t0.FQTY - t1.QTY) >= 0
";
//更新组装单信
- var resData = DBUtils.Execute(this.Context, updSqlL);
+ //var resData = DBUtils.Execute(this.Context, updSqlL);
return;
}
}
diff --git a/14.宝锐/GZ.LJY000.Biori/STK_MisDelivery/OperationEventPlugInEx.py b/14.宝锐/GZ.LJY000.Biori/STK_MisDelivery/OperationEventPlugInEx.py
new file mode 100644
index 0000000..72e227a
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/STK_MisDelivery/OperationEventPlugInEx.py
@@ -0,0 +1,80 @@
+#引入clr运行库
+import clr
+#添加对cloud插件开发的常用组件引用
+clr.AddReference('System')
+clr.AddReference('System.Data')
+clr.AddReference('Kingdee.BOS')
+clr.AddReference('Kingdee.BOS.Core')
+clr.AddReference('Kingdee.BOS.App')
+clr.AddReference('Kingdee.BOS.App.Core')
+clr.AddReference('Kingdee.BOS.Contracts')
+clr.AddReference('Kingdee.BOS.DataEntity')
+clr.AddReference('Kingdee.BOS.ServiceHelper')
+#dairycloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
+from Kingdee.BOS.Core import *
+from Kingdee.BOS.Util import *
+from Kingdee.BOS.Core.Bill import *
+from Kingdee.BOS.Core.List import *
+from Kingdee.BOS.Core.Bill.PlugIn import *
+from Kingdee.BOS.Orm.DataEntity import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
+from Kingdee.BOS.Core.Metadata.ConvertElement.ServiceArgs import *
+from System import *
+from System.Data import *
+from Kingdee.BOS.App.Data import *
+from Kingdee.BOS.App import *
+from Kingdee.BOS.Orm import *
+from Kingdee.BOS.Contracts import *
+from System.Collections.Generic import List
+from Kingdee.BOS.ServiceHelper import *
+from Kingdee.BOS.App.Core import *
+
+def OnPreparePropertys(e):
+ e.FieldKeys.Add("FSeq");
+ e.FieldKeys.Add("FPackBillNo");
+ e.FieldKeys.Add("FPackBarCode");
+
+def BeforeDoSaveExecute(e):
+ for entity in e.DataEntities:
+ entries = entity["BillEntry"]
+ sqlL = List[str]();
+ for idx,entry in enumerate(entries):
+ packBarCode = "" if entry["FPackBarCode"] == None else entry["FPackBarCode"].strip()
+ packBillNo = "" if entry["FPackBillNo"] == None else entry["FPackBillNo"].strip()
+
+ if packBarCode != "" and packBillNo == "":
+ materialId = entry["MaterialID_Id"]
+ entryId = entry["Id"]
+ sqlL.Add("SELECT {0} 'MaterialId',{1} 'EntryId',{2} 'EntrySeq','{3}' AS 'PackBarCode'".format(materialId,entryId,idx,packBarCode));
+
+ if sqlL.Count > 0:
+ sqlUnion = " UNION ALL ".join(sqlL);
+ sql = """/*dialect*/
+
+WITH #基础数据 AS (
+ {0}
+)
+SELECT tt.*
+ ,t0.FBARCODE,t1.FBILLNO,t0.FBILLID,t0.FBILLENTRYID,t0.FBILLSEQ,t0.FBILLFORMID
+FROM #基础数据 tt
+ INNER JOIN T_UNW_WMS_BARCODE t0 on t0.FBARCODE = tt.PackBarCode
+ INNER JOIN T_PRD_PACKAGEINSTOCK t1 on t1.FSRCBILLENTRYID = t0.FBILLENTRYID
+WHERE t0.FBILLFORMID = 'PLN_FORECAST'
+ORDER BY tt.EntrySeq
+
+ """.format(sqlUnion);
+ # raise Exception(sql);
+
+ res = DBServiceHelper.ExecuteDynamicObject(this.Context, sql)
+
+ if res != None and res.Count > 0:
+ for item in res:
+ seq = item["EntrySeq"];
+ entries[seq]["FPackBarCode"] = item["PackBarCode"];
+ entries[seq]["FPackBillNo"] = item["FBILLNO"];
+ # entries[seq]["FPackBillSeq"] = item["FSeq"];
+ # entries[seq]["FPackBillEntryId"] = item["FEntryID"];
+
+ return;
\ No newline at end of file
diff --git a/14.宝锐/GZ.LJY000.Biori/STK_MisDelivery/更新组装单信息.sql b/14.宝锐/GZ.LJY000.Biori/STK_MisDelivery/更新组装单信息.sql
new file mode 100644
index 0000000..6e588b0
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/STK_MisDelivery/更新组装单信息.sql
@@ -0,0 +1,26 @@
+WITH #ⵥ AS (
+ SELECT t0.FBILLNO
+ --,CASE WHEN t0e.F_QJCG_ASSISTANT2 = '63876e213ea87e' THEN 1 ELSE 0 END ''
+ --,t0e.FENTRYID,t0e.FID,t0e.FSEQ
+ ,t0e.FMATERIALID
+ --,t0e.FSTOCKID,t0e.FSTOCKLOCID
+ ,SUM(t0e.FQTY) ''
+ ,t0e.FPACKBILLNO,t0e.FPACKBARCODE
+ FROM T_STK_MISDELIVERY t0
+ INNER JOIN T_STK_MISDELIVERYENTRY t0e on t0.FID = t0e.FID
+ WHERE t0.FBILLNO = 'ZHBR-QTCK241224002'
+ GROUP BY t0.FBILLNO,t0e.FPACKBILLNO,t0e.FPACKBARCODE,t0e.FMATERIALID--,t0e.FSTOCKID,t0e.FSTOCKLOCID
+ --,t0e.F_QJCG_ASSISTANT2,t0.FBILLNO
+)
+
+SELECT t0.FBILLNO,t1.FMATERIALID,t1. * t0e.FQTY / t2.,t3.F_UNITIDHS,t0e.FEntryID
+--UPDATE t0e SET t0e.FQTY = t0e.FQTY + (t1.Qty * t0e.FQTY / t2. * t3.F_UNITIDHS)
+FROM T_PRD_PACKAGEINSTOCK t0
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0e.FID = t0.FID
+ INNER JOIN #ⵥ t1 on t1.FPACKBILLNO = t0.FBILLNO AND t0e.FMATERIALID = t1.FMATERIALID
+ CROSS APPLY (
+ SELECT SUM(t2e.FQTY) AS ''
+ FROM T_PRD_PACKAGEINSTOCKENTRY t2e
+ WHERE t2e.FID = t0e.FID AND t2e.FMATERIALID = t0e.FMATERIALID
+ ) t2
+ INNER JOIN T_BD_MATERIAL t3 on t3.FMATERIALID = t0e.FMATERIALID
\ No newline at end of file
diff --git a/14.宝锐/GZ.LJY000.Biori/STK_TransferDirect/OperationEventPlugInEx.cs b/14.宝锐/GZ.LJY000.Biori/STK_TransferDirect/OperationEventPlugInEx.cs
index 643d2d2..dab9360 100644
--- a/14.宝锐/GZ.LJY000.Biori/STK_TransferDirect/OperationEventPlugInEx.cs
+++ b/14.宝锐/GZ.LJY000.Biori/STK_TransferDirect/OperationEventPlugInEx.cs
@@ -12,7 +12,7 @@ using System.Text;
namespace GZ.LJY000.Biori.STK_TransferDirect
{
- [HotUpdate, Description("直接调拨单服务操作插件")]
+ [HotUpdate, Description("直接调拨单服务操作插件#")]
public class OperationEventPlugInEx : AbstractOperationServicePlugIn
{
public override void OnPreparePropertys(PreparePropertysEventArgs e)
@@ -22,9 +22,15 @@ namespace GZ.LJY000.Biori.STK_TransferDirect
e.FieldKeys.Add("FToWorkShop");
e.FieldKeys.Add("FRowType");
e.FieldKeys.Add("FPackBillNo");
- e.FieldKeys.Add("FPackBillSeq");
- e.FieldKeys.Add("FPackBillEntryId");
+ //e.FieldKeys.Add("FPackBillSeq");
+ //e.FieldKeys.Add("FPackBillEntryId");
e.FieldKeys.Add("FQty");
+ e.FieldKeys.Add("FPackBarCode");
+
+ DynamicObjectCollection Ab = null;
+ List aa = new List();
+ aa.CopyTo(Ab.ToArray(), 0);
+
}
public override void OnAddValidators(AddValidatorsEventArgs e)
@@ -32,11 +38,10 @@ namespace GZ.LJY000.Biori.STK_TransferDirect
base.OnAddValidators(e);
if (this.FormOperation.OperationId == 1)
{
-
- //添加检查校验器:
- var validator = new VaildatorEventPlugInEx();//新增的校验器
- validator.EntityKey = "FEntity";
- e.Validators.Add(validator);//添加校验器
+ ////添加检查校验器:
+ //var validator = new VaildatorEventPlugInEx();//新增的校验器
+ //validator.EntityKey = "FEntity";
+ //e.Validators.Add(validator);//添加校验器
}
}
@@ -107,6 +112,24 @@ WHERE 1 = 1
//更新组装单信
var resData = DBUtils.Execute(this.Context, updSqlL);
+ if (resData > 0)
+ {
+ updSqlL = $@"/*dialect*/
+
+WITH #基础数据 AS (
+ {string.Join(" UNION ALL ", sqlL)}
+)
+UPDATE t0e SET t0e.FQTY = t0e.FQTY + (t1.QTY / t2.FDENOMINATOR * t2.FNUMERATOR) * 1.05
+FROM T_PRD_PACKAGEINSTOCK t0
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID
+ INNER JOIN #基础数据 t1 on t1.FBILLNO = t0.FBILLNO
+ INNER JOIN T_ENG_BOMCHILD t2 on t2.FID = t0.FBOMID AND t2.FMATERIALID = t0e.FMATERIALID
+WHERE 1 = 1
+ AND t0.FDOCUMENTSTATUS = 'C'
+
+";
+ var res = DBUtils.Execute(this.Context, updSqlL);
+ }
return;
}
}
@@ -136,6 +159,23 @@ WHERE 1 = 1
//更新组装单信
var resData = DBUtils.Execute(this.Context, updSqlL);
+ if (resData > 0)
+ {
+
+ updSqlL = $@"/*dialect*/
+WITH #基础数据 AS (
+ {string.Join(" UNION ALL ", sqlL)}
+)
+UPDATE t0e SET t0e.FQTY = t0e.FQTY - (t1.QTY / t2.FDENOMINATOR * t2.FNUMERATOR) * 1.05
+FROM T_PRD_PACKAGEINSTOCK t0
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID
+ INNER JOIN #基础数据 t1 on t1.FBILLNO = t0.FBILLNO
+ INNER JOIN T_ENG_BOMCHILD t2 on t2.FID = t0.FBOMID AND t2.FMATERIALID = t0e.FMATERIALID
+WHERE 1 = 1
+ AND t0.FDOCUMENTSTATUS = 'C'
+";
+ var res = DBUtils.Execute(this.Context, updSqlL);
+ }
return;
}
}
diff --git a/14.宝锐/GZ.LJY000.Biori/UHIK_BAR_BarCodePrint/BarCodePrintEditEx.cs b/14.宝锐/GZ.LJY000.Biori/UHIK_BAR_BarCodePrint/BarCodePrintEditEx.cs
index 952abaf..7e0167f 100644
--- a/14.宝锐/GZ.LJY000.Biori/UHIK_BAR_BarCodePrint/BarCodePrintEditEx.cs
+++ b/14.宝锐/GZ.LJY000.Biori/UHIK_BAR_BarCodePrint/BarCodePrintEditEx.cs
@@ -108,293 +108,6 @@ namespace GZ.LJY000.Biori.UHIK_BAR_BarCodePrint
}
}
- public override void OnPrepareNotePrintData(PreparePrintDataEventArgs e)
- {
- try
- {
- if (e.DataSourceId.Equals("FEntityToBar", StringComparison.OrdinalIgnoreCase))
- {
- List list = new List();
- string value = e.BillIds.FirstOrDefault();
- if (newPrintDatas2 != null && newPrintDatas2.Count > 0)
- {
- DynamicObject dynamicObject = newPrintDatas2[Convert.ToInt32(value)];
- if (dynamicObject != null)
- {
- DynamicObject dynamicObject2 = new DynamicObject(e.DynamicObjectType);
- foreach (object field2 in e.Fields)
- {
- string text = field2.ToString();
- if (text == "FExpPeriod")
- {
- continue;
- }
-
- object obj = "";
- string text2 = "";
- bool flag = false;
- bool flag2 = false;
- string text3 = string.Empty;
- if (text.Contains("."))
- {
- string[] array = text.Split('.');
- string text4 = array[0];
- string text5 = array[1];
- if (array.Count() > 2)
- {
- text3 = array[2];
- }
-
- if (base.View.BusinessInfo.GetField(text4) == null)
- {
- continue;
- }
-
- text2 = base.View.BusinessInfo.GetField(text4).PropertyName;
- if (!(dynamicObject[text2] is DynamicObject dynamicObject3))
- {
- if (text2.EqualsIgnoreCase("LotToBar") || text4.EqualsIgnoreCase("FLotToBar"))
- {
- obj = dynamicObject[text2 + "_Text"];
- text = $"{text4}_{text5}";
- dynamicObject2[text] = obj;
- }
-
- continue;
- }
-
- if (dynamicObject3.DynamicObjectType.Properties.Contains("Image") && dynamicObject3["Image"] == null)
- {
- RepackData(dynamicObject3);
- }
-
- if (dynamicObject3.DynamicObjectType.Name.ToUpperInvariant() == "BD_FLEXSITEMDETAILV")
- {
- flag = true;
- }
-
- if (dynamicObject3.DynamicObjectType.Name.ToUpperInvariant() == "BD_FLEXVALUESDETAIL")
- {
- flag2 = true;
- }
-
- text = string.Format("{0}_{1}{2}", text4, text5, text3.IsNullOrEmptyOrWhiteSpace() ? "" : ("_" + text3));
- if (dynamicObject3.DynamicObjectType.Properties.Contains(text5.Remove(0, 1)))
- {
- obj = dynamicObject3[text5.Remove(0, 1)];
- }
- else if (dynamicObject3.DynamicObjectType.Properties.Contains(text5))
- {
- obj = dynamicObject3[text5];
- }
- else if (field2.Equals("FMaterialIdToBar.FStockPlaceId") && dynamicObject3.DynamicObjectType.Properties.Contains("MaterialStock") && dynamicObject3["MaterialStock"] is DynamicObjectCollection)
- {
- obj = (dynamicObject3["MaterialStock"] as DynamicObjectCollection)[0];
- }
-
- if (obj.IsNullOrEmptyOrWhiteSpace() && base.View.BusinessInfo.GetField(text4) is BaseDataField)
- {
- string formId = ((BaseDataField)base.View.BusinessInfo.GetField(text4)).LookUpObject.FormId;
- obj = GetBaseDataPropByBaseData(formId, text5, dynamicObject3);
- }
- }
- else if (base.View.BusinessInfo.GetField(text) is BasePropertyField)
- {
- string controlFieldKey = base.View.BusinessInfo.GetField(text).ControlFieldKey;
- text2 = base.View.BusinessInfo.GetField(text).PropertyName;
- string name = base.View.BusinessInfo.GetField(text).ControlField.DynamicProperty.Name;
- if (dynamicObject[name] is DynamicObject dynamicObject4)
- {
- obj = Convert.ToString(dynamicObject4[text2]);
- }
- }
- else if (base.View.BusinessInfo.GetField(text) != null)
- {
- text2 = base.View.BusinessInfo.GetField(text).PropertyName;
- obj = dynamicObject[text2];
- }
-
- if (obj is DynamicObject)
- {
- if (flag)
- {
- text3 = (text3.IsNullOrEmptyOrWhiteSpace() ? "FDataValue" : text3);
- if ((obj as DynamicObject).DynamicObjectType.Properties.Contains(text3))
- {
- dynamicObject2[text] = (obj as DynamicObject)[text3].ToString();
- string text6 = text.Split('_')[0];
- if (dynamicObject2.DynamicObjectType.Properties.Contains(text6))
- {
- string propertyName = base.View.BusinessInfo.GetField(text6).PropertyName;
- if (dynamicObject.DynamicObjectType.Properties.Contains(propertyName + "_Id"))
- {
- dynamicObject2[text6] = dynamicObject[propertyName + "_Id"];
- }
- }
-
- if (dynamicObject2.DynamicObjectType.Properties.Contains("FMaterialIdToBar_Ref"))
- {
- string propertyName2 = base.View.BusinessInfo.GetField("FMaterialIdToBar").PropertyName;
- if (dynamicObject.DynamicObjectType.Properties.Contains(propertyName2) && dynamicObject.DynamicObjectType.Properties.Contains(propertyName2 + "_Id"))
- {
- dynamicObject2["FMaterialIdToBar_Ref"] = dynamicObject[propertyName2];
- dynamicObject2["FMaterialIdToBar_Id"] = dynamicObject[propertyName2 + "_Id"];
- }
- }
- }
- else
- {
- text3 = ((text3.IsNullOrEmptyOrWhiteSpace() || !text3.Contains("Number")) ? "Name" : "Number");
- if ((obj as DynamicObject).DynamicObjectType.Properties.Contains(text3))
- {
- dynamicObject2[text] = (obj as DynamicObject)[text3].ToString();
- }
- }
- }
- else if (flag2)
- {
- text3 = (text3.IsNullOrEmptyOrWhiteSpace() ? "Name" : text3);
- if (text.StartsWith("FSTOCKLOCIDToBar_FF") && text.EndsWith("_FNumber"))
- {
- text3 = text3.Remove(0, 1);
- }
-
- if ((obj as DynamicObject).DynamicObjectType.Properties.Contains(text3))
- {
- dynamicObject2[text] = (obj as DynamicObject)[text3].ToString();
- string text7 = text.Split('_')[0];
- if (dynamicObject2.DynamicObjectType.Properties.Contains(text7))
- {
- string propertyName3 = base.View.BusinessInfo.GetField(text7).PropertyName;
- if (dynamicObject.DynamicObjectType.Properties.Contains(propertyName3 + "_Id"))
- {
- dynamicObject2[text7] = dynamicObject[propertyName3 + "_Id"];
- }
- }
-
- if (dynamicObject2.DynamicObjectType.Properties.Contains("FStockIdToBar_Ref"))
- {
- string propertyName4 = base.View.BusinessInfo.GetField("FStockIdToBar").PropertyName;
- if (dynamicObject.DynamicObjectType.Properties.Contains(propertyName4) && dynamicObject.DynamicObjectType.Properties.Contains(propertyName4 + "_Id"))
- {
- dynamicObject2["FStockIdToBar_Ref"] = dynamicObject[propertyName4];
- dynamicObject2["FStockIdToBar_Id"] = dynamicObject[propertyName4 + "_Id"];
- }
- }
-
- if (dynamicObject2.DynamicObjectType.Properties.Contains("FINSTOCKIDToBar_Ref"))
- {
- string propertyName5 = base.View.BusinessInfo.GetField("FINSTOCKIDToBar").PropertyName;
- if (dynamicObject.DynamicObjectType.Properties.Contains(propertyName5) && dynamicObject.DynamicObjectType.Properties.Contains(propertyName5 + "_Id"))
- {
- dynamicObject2["FINSTOCKIDToBar_Ref"] = dynamicObject[propertyName5];
- dynamicObject2["FINSTOCKIDToBar_Id"] = dynamicObject[propertyName5 + "_Id"];
- }
- }
- }
- }
- else if (field2.ToString() == "FSTOCKLOCIDToBar" || field2.ToString().Equals("FAuxPropIdToBar"))
- {
- string value2 = (obj as DynamicObject)["Id"].ToString();
- dynamicObject2[text] = value2;
- }
- else
- {
- text3 = (text3.IsNullOrEmptyOrWhiteSpace() ? "Name" : text3);
- if ((obj as DynamicObject).DynamicObjectType.Properties.Contains(text3))
- {
- dynamicObject2[text] = (obj as DynamicObject)[text3].ToString();
- }
- else if (field2.Equals("FMaterialIdToBar.FStockPlaceId") && dynamicObject2.DynamicObjectType.Properties.Contains("FMaterialIdToBar_Ref"))
- {
- string propertyName6 = base.View.BusinessInfo.GetField("FMaterialIdToBar").PropertyName;
- if (dynamicObject.DynamicObjectType.Properties.Contains(propertyName6) && dynamicObject.DynamicObjectType.Properties.Contains(propertyName6 + "_Id"))
- {
- dynamicObject2["FMaterialIdToBar_Ref"] = dynamicObject[propertyName6];
- dynamicObject2["FMaterialIdToBar_Id"] = dynamicObject[propertyName6 + "_Id"];
- }
- }
- }
- }
- else if (dynamicObject2.DynamicObjectType.Properties.Contains(text))
- {
- if (obj.IsNullOrEmptyOrWhiteSpace() && text.Contains("_"))
- {
- string[] array2 = text.Split('_');
- string text8 = "";
- text8 = array2[1].Remove(0, 1);
- if (!text8.Equals("") && dynamicObject.DynamicObjectType.Properties.Contains(text8))
- {
- obj = dynamicObject[text8];
- }
- }
-
- dynamicObject2[text] = obj;
- if (flag)
- {
- dynamicObject2[text] = obj;
- string text9 = text.Split('_')[0];
- Field field = base.View.BusinessInfo.GetField(text9);
- if (field is RelatedFlexGroupField && obj != null)
- {
- RelatedFlexGroupField element = (RelatedFlexGroupField)field;
- dynamicObject2[text] = GetElementValue(element, obj);
- }
-
- if (dynamicObject2.DynamicObjectType.Properties.Contains(text9))
- {
- string propertyName7 = base.View.BusinessInfo.GetField(text9).PropertyName;
- if (dynamicObject.DynamicObjectType.Properties.Contains(propertyName7 + "_Id"))
- {
- dynamicObject2[text9] = dynamicObject[propertyName7 + "_Id"];
- }
- }
-
- if (dynamicObject2.DynamicObjectType.Properties.Contains("FMaterialIdToBar_Ref"))
- {
- string propertyName8 = base.View.BusinessInfo.GetField("FMaterialIdToBar").PropertyName;
- if (dynamicObject.DynamicObjectType.Properties.Contains(propertyName8) && dynamicObject.DynamicObjectType.Properties.Contains(propertyName8 + "_Id"))
- {
- dynamicObject2["FMaterialIdToBar_Ref"] = dynamicObject[propertyName8];
- dynamicObject2["FMaterialIdToBar_Id"] = dynamicObject[propertyName8 + "_Id"];
- }
- }
- }
- }
-
- if (dynamicObject2[text] is LocaleValue && !dynamicObject2[text].IsNullOrEmptyOrWhiteSpace())
- {
- List list2 = new List();
- list2.Add(dynamicObject2[text] as LocaleValue);
- List value3 = list2;
- dynamicObject2[text] = value3;
- }
- }
-
- if (dynamicObject2.Contains("FMaterialIdToBar_FImageFileServer"))
- {
- object ret = new object();
- GetImageByte(dynamicObject2["FMaterialIdToBar_FImageFileServer"], ref ret);
- dynamicObject2["FMaterialIdToBar_FImageFileServer"] = ret;
- }
-
- list.Add(dynamicObject2);
- }
- }
-
- e.DataObjects = list.ToArray();
- }
-
- base.OnPrepareNotePrintData(e);
- }
- catch (Exception ex)
- {
- UNWLogger.Error(base.Context, "BarCodePrintEdit", "OnPrepareNotePrintData error:" + ex.Message + ex.StackTrace, ex);
- }
- return;
- base.OnPrepareNotePrintData(e);
- }
-
private bool CheckPrintData(List printDatas)
{
bool flag = true;
diff --git a/14.宝锐/GZ.LJY000.Biori/UHIK_BAR_BarCodeVerify/BarCodeVerifyEdit.cs b/14.宝锐/GZ.LJY000.Biori/UHIK_BAR_BarCodeVerify/BarCodeVerifyEdit.cs
index e2fcec2..835e0e6 100644
--- a/14.宝锐/GZ.LJY000.Biori/UHIK_BAR_BarCodeVerify/BarCodeVerifyEdit.cs
+++ b/14.宝锐/GZ.LJY000.Biori/UHIK_BAR_BarCodeVerify/BarCodeVerifyEdit.cs
@@ -2,6 +2,8 @@
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
+using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
@@ -63,5 +65,35 @@ WHERE t0.FISCHECK = 1
}
}
+
+ public override void BeforeUpdateValue(BeforeUpdateValueEventArgs e)
+ {
+ base.BeforeUpdateValue(e);
+ if (e.Key.ToUpperInvariant().Equals("FAACVALUE"))
+ {
+ var barCode = e.Value.ToString();
+ var sqlL = $@"/*dialect*/
+SELECT t0.FBARCODE,t0.FBillNo,t0.FBILLSEQ,t0.FBILLFORMID,t0.FLOT
+FROM T_UNW_WMS_BARCODE t0
+WHERE t0.FBARCODE = '{barCode}'
+ AND t0.FBILLFORMID = 'PRD_MO'
+";
+
+ var dataList = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL);
+ if (dataList == null || dataList.Count == 0)
+ {
+ this.View.Model.SetValue("FverifyRes", "无效的二维码!");
+ this.View.GetControl("FverifyRes").SetCustomPropertyValue("ForeColor", "#FF3300");
+ }
+ else
+ {
+ }
+
+ e.Value = "";
+ var control = this.View.GetControl("FAACValue");
+ control.SetFocus();
+ e.Cancel = true;
+ }
+ }
}
}
diff --git a/14.宝锐/GZ.LJY000.Biori/UHIK_BAR_BarCodeVerify/BarCodeVerifyEdit.py b/14.宝锐/GZ.LJY000.Biori/UHIK_BAR_BarCodeVerify/BarCodeVerifyEdit.py
index 0ca4f1f..629b926 100644
--- a/14.宝锐/GZ.LJY000.Biori/UHIK_BAR_BarCodeVerify/BarCodeVerifyEdit.py
+++ b/14.宝锐/GZ.LJY000.Biori/UHIK_BAR_BarCodeVerify/BarCodeVerifyEdit.py
@@ -141,43 +141,35 @@ def ButtonClick(e):
def BeforeUpdateValue(e):
if str(e.Key).upper() == "FAACVALUE":
- val = e.Value
- isLong = val.find("_")
- if isLong == -1:
+ barCode = e.Value
+ if barCode != "":
sqlL = """/*dialect*/
- SELECT FBARCODE
- FROM T_BD_BARCODEMAINEX t0
- WHERE t0.FID = {0}
+SELECT t0.FBARCODE,t0.FBillNo,t0.FBILLSEQ,t0.FBILLFORMID,t0.FLOT,t0.FLOT_TEXT,t1.FNUMBER
+FROM T_UNW_WMS_BARCODE t0
+ INNER JOIN T_BD_FMATERIAL t1 on t0.FMATERIALID = t1.FMATERIALID
+WHERE t0.FBARCODE = '{0}'
+ AND t0.FBILLFORMID = 'PRD_MO'
""".format(e.Value)
dataList = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL)
- val = dataList[0]["FBARCODE"]
-
- if val != "":
- # raise Exception(JsonUtil.Serialize(this.View.Model.DataObject))
- infoList = val.split("_")
- flag = False;
- entity = this.View.Model.DataObject["FEntity"]
- # raise Exception(JsonUtil.Serialize(entity))
- if infoList.Count < 3:
+ if dataList.Count == 0:
this.View.Model.SetValue("FverifyRes","无效的二维码!")
this.View.GetControl("FverifyRes").SetCustomPropertyValue("ForeColor", "#FF3300")
- # this.View.Model.SetValue("FAACValue","");
- this.View.UpdateView();
-
- e.Value = "";
- control = this.View.GetControl("FAACValue");
- control.SetFocus();
- e.Cancel = True;
return;
+
+
+ # raise Exception(JsonUtil.Serialize(this.View.Model.DataObject))
+ infoList = dataList[0]
+ flag = False;
+ entity = this.View.Model.DataObject["FEntity"]
- materialNumber = infoList[0]
+ materialNumber = infoList["FNUMBER"]
# qty = float(0)
lot = ""
oTId = this.View.Model.DataObject["FObjectTypeId_Id"]
if oTId == "UHIK_PRD_PACKAGE_INSTOCK":
# qty = float(infoList[1])
- lot = infoList[2]
+ lot = infoList["FLOT_TEXT"]
for idx, item in enumerate(entity):
# raise Exception(JsonUtil.Serialize(item))
entityNumber = item["FMaterialId"]["Number"]
diff --git a/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/BillConvertEventPlugInEx.cs b/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/BillConvertEventPlugInEx.cs
index 47d6b77..9d7f724 100644
--- a/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/BillConvertEventPlugInEx.cs
+++ b/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/BillConvertEventPlugInEx.cs
@@ -18,8 +18,6 @@ namespace GZ.LJY000.Biori.UHIK_PRD_PACKAGE_INSTOCK
[Description("预测单下推组装入库单#"), HotUpdate]
public class BillConvertEventPlugInEx : AbstractConvertPlugIn
{
-
-
public override void AfterConvert(AfterConvertEventArgs e)
{
base.AfterConvert(e);
@@ -68,6 +66,7 @@ namespace GZ.LJY000.Biori.UHIK_PRD_PACKAGE_INSTOCK
,ISNULL(t2.生产日期,'') '生产日期'
,ISNULL(t2.有效期至,'') '有效期至'
,ROW_NUMBER() OVER(ORDER BY t0.FSEQ) RN
+ ,ISNULL(t3.RptQty,0) 'RptQty'
FROM #预测单数据 t0
INNER JOIN T_BD_MATERIAL t1 on t1.FMATERIALID = t0.FMATERIALID
INNER JOIN T_BD_MATERIAL_L t1_l on t1_l.FMATERIALID = t0.FMATERIALID AND t1_l.FLOCALEID = 2052
@@ -88,12 +87,22 @@ namespace GZ.LJY000.Biori.UHIK_PRD_PACKAGE_INSTOCK
,ISNULL(CONVERT(varchar(100),t2e.F_UHIK_DATE,20),'') '生产日期',ISNULL(CONVERT(varchar(100),t2e.F_UHIK_DATE1,20),'') '有效期至'
FROM T_PRD_MO t2
INNER JOIN T_PRD_MOENTRY t2e on t2.FID = t2e.FID
- INNER JOIN T_PRD_MOENTRY_A t2e_a on t2e.FENTRYID = t2e_a.FENTRYID AND t2e_a.FREQSRC = 2
+ INNER JOIN T_PRD_MOENTRY_A t2e_a on t2e.FENTRYID = t2e_a.FENTRYID
WHERE 1 = 1 AND t2e.FPackSrcBillNo = t0.FBILLNO AND t2e.FFPackSrcSeq = t0.FSEQ AND t2e.FPackSrcType = 1
AND t2e.FMATERIALID = t0.FMATERIALID
) t2
+ OUTER APPLY (
+ SELECT t3e_lk.FSID,SUM(t3e_a.FBASESTOCKINQUASELQTY) RptQty
+ FROM T_PRD_MORPT t3
+ INNER JOIN T_PRD_MORPTENTRY t3e on t3.FID = t3e.FID
+ INNER JOIN T_PRD_MORPTENTRY_A t3e_a on t3e_a.FENTRYID = t3e.FENTRYID
+ INNER JOIN T_PRD_MORPTENTRY_LK t3e_lk on t3e_lk.FENTRYID = t3e.FENTRYID AND t3e_lk.FSTABLENAME = 'T_PRD_MOENTRY'
+ WHERE t3e_lk.FSID = t2.MoEntryId
+ GROUP BY t3e_lk.FSID
+ ) t3
";
+
var dataList = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL);
if (dataList != null && dataList.Any())
{
@@ -210,7 +219,8 @@ namespace GZ.LJY000.Biori.UHIK_PRD_PACKAGE_INSTOCK
entry["FFYLQty"] = item["F_FYL_QTY"];
entry["FQty"] = item["FQTY"];
- entry["FRptQty"] = item["FQTY"];
+ //entry["FRptQty"] = item["FQTY"];
+ entry["FRptQty"] = item["RptQty"];
entry["FNoInStockQty"] = item["FQTY"];
entrys.Add(entry);
@@ -226,11 +236,6 @@ namespace GZ.LJY000.Biori.UHIK_PRD_PACKAGE_INSTOCK
base.OnParseFilterOptions(e);
}
- public override void OnParseFilter(ParseFilterEventArgs e)
- {
- base.OnParseFilter(e);
- }
-
public override void OnInitVariable(InitVariableEventArgs e)
{
base.OnInitVariable(e);
diff --git a/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/BillConvertEventPlugInEx.py b/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/BillConvertEventPlugInEx.py
index 5e9370f..19f9b11 100644
--- a/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/BillConvertEventPlugInEx.py
+++ b/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/BillConvertEventPlugInEx.py
@@ -17,8 +17,19 @@ from System.Data import *
from System.Collections.Generic import *
from Kingdee.BOS.ServiceHelper import *
-def OnParseFilterOptions(e):
- raise Exception(e.FilterOptionsSQL)
+# python:已生成条码的数据不能重复生成!
+def OnParseFilter(e):
+ # raise Exception(e.FilterPolicySQL)
+ fromId = e.SourceBusinessInfo.GetForm().Id;
+ e.FilterPolicySQL = e.FilterPolicySQL + """
+ AND NOT EXISTS (
+ SELECT 1 FROM T_PRD_MOASSEMBLE_LK uwbc
+ WHERE uwbc.FSID = t0.FID
+ AND uwbc.FSTableName = 'T_PLN_FORECAST1'
+ )
+ """
+ e.PlugFilterDesc = "已生成组装单的数据不能重复生成!";
+ return;
# def OnParseFilter(e):
# raise Exception(e.FilterPolicySQL)
diff --git a/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/GET_PACKGE_INFO/BillEventPlugInEx.cs b/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/GET_PACKGE_INFO/BillEventPlugInEx.cs
index 61b2f13..b7889cb 100644
--- a/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/GET_PACKGE_INFO/BillEventPlugInEx.cs
+++ b/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/GET_PACKGE_INFO/BillEventPlugInEx.cs
@@ -17,7 +17,6 @@ using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
-using static System.Net.Mime.MediaTypeNames;
namespace GZ.LJY000.Biori.UHIK_PRD_PACKAGE_INSTOCK.GET_PACKGE_INFO
{
@@ -34,34 +33,30 @@ namespace GZ.LJY000.Biori.UHIK_PRD_PACKAGE_INSTOCK.GET_PACKGE_INFO
}
string scanCode = e.Value.ToString();
- scanCode = scanCode.Long2Int() == 0 ? scanCode : GetBarCode(scanCode);
+ //scanCode = scanCode.Long2Int() == 0 ? scanCode : GetBarCode(scanCode);
if (scanCode.IsNullOrEmptyOrWhiteSpace())
{
return;
}
- var scanCodeInfos = scanCode.Split('_');
- if (scanCodeInfos.Length < 4)
- {
- this.View.Model.SetValue("FMsg", "无效的二维码!");
- this.View.GetControl("FMsg").SetCustomPropertyValue("ForeColor", "#FF3300");
- return;
- }
-
- var billNo = scanCodeInfos[0];
-
var sqlL = $@"/*dialect*/
-WITH #基础数据 AS (
- SELECT t0.FBILLNO,t0e.FENTRYID,t0e.FSeq,t0e.FMATERIALID,t0e.FLOT,t0e.FLOT_Text,t0e.FPRINTMODEL
+WITH #条码信息 AS (
+ SELECT t0.FBARCODE,t0.FBillNo,t0.FBILLSEQ,t0.FBILLFORMID
+ FROM T_UNW_WMS_BARCODE t0
+ WHERE t0.FBARCODE = '{scanCode}'
+ AND t0.FBILLFORMID = 'PLN_FORECAST'
+ AND t0.FBILLSEQ = 1
+)
+, #基础数据 AS (
+ SELECT t0.FBILLNO,t0.FSRCBILLNO,t0e.FENTRYID,t0e.FSeq,t0e.FMATERIALID,t0e.FLOT,t0e.FLOT_Text,t0e.FPRINTMODEL
,t0e.FGZLQTY,t0e.FZGSQTY,t0e.FQTY,t0e.FPRODUCEDDATE,t0e.FEXPIRYDATE
- ,t0e.FFYLQTY,t0e.FUNITID
- ,t0.FSRCBILLTYPE,t0e.FSRCBILLENTRYID
+ ,t0e.FFYLQTY,t0e.FUNITID,t0.FSRCBILLTYPE,t0e.FSRCBILLENTRYID
FROM T_PRD_PACKAGEINSTOCK t0
INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID
WHERE 1=1 AND t0.FDOCUMENTSTATUS = 'C'
AND t0.FQTY > 0
UNION ALL
- SELECT t0.FBILLNO,0,0 FSEQ,t0.FMATERIALID,t0.FLOT,t0.FLOT_Text,t0.FPRINTMODEL
+ SELECT t0.FBILLNO,t0.FSRCBILLNO,0,0 FSEQ,t0.FMATERIALID,t0.FLOT,t0.FLOT_Text,t0.FPRINTMODEL
,0,0,t0.FQTY,t0.FPRODUCTDATE,t0.FEXPIRYDATE,t0.FFYLQTY,t0.FUNITID
,t0.FSRCBILLTYPE,t0.FSRCBILLENTRYID
FROM T_PRD_PACKAGEINSTOCK t0
@@ -69,7 +64,8 @@ WITH #基础数据 AS (
AND t0.FQTY > 0
)
SELECT t0.*,t1.*
-FROM #基础数据 t0
+FROM #条码信息 tt
+ INNER JOIN #基础数据 t0 on tt.FBillNo = t0.FSRCBILLNO
CROSS APPLY (
SELECT t1e.FROWID,t1e.FPARENTROWID,t1.FBILLNO
FROM T_PLN_FORECAST t1
@@ -83,7 +79,7 @@ FROM #基础数据 t0
WHERE t0.FSRCBILLTYPE = 'SAL_ORDER' AND t1e.FENTRYID = t0.FSRCBILLENTRYID
) t1
WHERE 1 = 1
- AND t0.FBILLNO = '{billNo}'
+ --AND t0.FSRCBILLNO = 'FO00001306'
ORDER BY FSeq
";
@@ -147,14 +143,15 @@ ORDER BY FSeq
this.View.Model.SetValue("FMsg", "取值成功!");
this.View.GetControl("FMsg").SetCustomPropertyValue("ForeColor", "#00994C");
- this.View.UpdateView("FEntity");
+ //this.View.UpdateView("FEntity");
}
else
{
- this.View.Model.SetValue("FMsg", "无效条码!");
+ this.View.Model.SetValue("FMsg", "条码信息不存在或组转单信息不存在!");
this.View.GetControl("FMsg").SetCustomPropertyValue("ForeColor", "#FF3300");
- return;
+ //return;
}
+
e.Value = "";
var control = this.View.GetControl("FScanBarCode");
control.SetFocus();
diff --git a/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/OperationEventPlugInEx.cs b/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/OperationEventPlugInEx.cs
index 6f642fb..ea8e854 100644
--- a/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/OperationEventPlugInEx.cs
+++ b/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/OperationEventPlugInEx.cs
@@ -19,10 +19,12 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
+using Kingdee.BOS.ServiceHelper;
+using Kingdee.K3.BD.BarCode.Core.DataModel.WebApi;
namespace GZ.LJY000.Biori.UHIK_PRD_PACKAGE_INSTOCK
{
- [HotUpdate, Description("组装单生成汇报单")]
+ [HotUpdate, Description("组装单服务插件#")]
public class OperationEventPlugInEx : AbstractOperationServicePlugIn
{
public override void OnPreparePropertys(PreparePropertysEventArgs e)
@@ -30,34 +32,59 @@ namespace GZ.LJY000.Biori.UHIK_PRD_PACKAGE_INSTOCK
base.OnPreparePropertys(e);
e.FieldKeys.Add("FPMoBillTypeId");
- e.FieldKeys.Add("FMoillTypeId_Id");
+ e.FieldKeys.Add("FPSrcBillEntryId");
+ e.FieldKeys.Add("FMoBillTypeId_Id");
e.FieldKeys.Add("FMoId");
e.FieldKeys.Add("FMoEntryId");
e.FieldKeys.Add("FMoBillTypeId");
e.FieldKeys.Add("FMOBillNo");
+ e.FieldKeys.Add("FCreateMORpt");
+ e.FieldKeys.Add("FQty");
+ e.FieldKeys.Add("FRptQty");
}
+ ///
+ ///
+ ///
+ ///
public override void EndOperationTransaction(EndOperationTransactionArgs e)
{
base.EndOperationTransaction(e);
-
+ // 保存8提交9审核1反审核26
if (this.FormOperation.OperationId == 1)
{
- var dataEntityList = new List();
+ var billNos = new List();
+ //this.Context.UserId
+ //this.Context.CurrentOrganizationInfo.ID
+ #region 生成汇报单
+ var dataEntityList = new List();
foreach (var data in e.DataEntitys)
{
- var srcBillEntryId = data["FPSrcBillEntryId"];
- if (srcBillEntryId != null && srcBillEntryId.Long2Int() > 0)
- dataEntityList.Add(data);
- if (dataEntityList.Any())
- DoCreateMoRpt(dataEntityList);
+ if (!Convert.ToBoolean(data["FCreateMORpt"]))
+ continue;
+
+ var srcBillEntryId = data["FPSrcBillEntryId"];
+
+ if (srcBillEntryId != null && srcBillEntryId.Long2Int() > 0)
+ {
+ dataEntityList.Add(data);
+ }
}
+
+ if (dataEntityList.Any())
+ DoCreateMoRpt(dataEntityList);
+
+ #endregion
+
+ #region 生成条码装箱单
+
+ #endregion
}
}
- private void DoCreateMoRpt(List dataEntitys)
+ private void DoCreateMoRpt2(List dataEntitys)
{
try
{
@@ -89,10 +116,21 @@ namespace GZ.LJY000.Biori.UHIK_PRD_PACKAGE_INSTOCK
if (policie7009 == null)
throw new Exception("转换单据中,单据类型属性类型值:7009不存在。");
+ if (policie7002 == null)
+ throw new Exception("转换单据中,单据类型属性类型值:7002不存在。");
+
+ var ids = new List();
+
foreach (var item in dataEntitys)
{
foreach (var entity in item["FEntity"] as DynamicObjectCollection)
{
+ var rptQty = Convert.ToDecimal(entity["FRptQty"]);
+ var qty = Convert.ToDecimal(entity["FQty"]);
+
+ if (qty <= rptQty)
+ continue;
+
var sourceBillTypeId = entity["FMoBillTypeId_Id"].ToString();
var billTypeMap = policie7009.BillTypeMaps.FirstOrDefault(x => x.SourceBillTypeId == sourceBillTypeId);
@@ -131,9 +169,186 @@ namespace GZ.LJY000.Biori.UHIK_PRD_PACKAGE_INSTOCK
throw new KDBusinessException("", "未知原因导致自动保存失败原因:" + JsonUtil.SerializeWithOutNull(saveResult));
}
+ ids.Add(entity["Id"].Long2Int());
+
+ #endregion
+
+ }
+ }
+
+ if (ids.Any())
+ {
+
+ var updSql = $@"/*dialect*/
+UPDATE t3e SET t3e.FRPTQTY = ISNULL(t1.选单入库合格数量,0)
+FROM T_PRD_MO t0
+ INNER JOIN T_PRD_MOENTRY t0e on t0.FID = t0e.FID
+ OUTER APPLY (
+ SELECT t1e.FMOENTRYID,t1e.FMOBILLNO,SUM(t1e.FFINISHQTY) '选单入库合格数量'
+ FROM T_PRD_MORPT t1
+ INNER JOIN T_PRD_MORPTENTRY t1e on t1.FID = t1e.FID
+ INNER JOIN T_PRD_MORPTENTRY_A t1e_a on t1e_a.FENTRYID = t1e.FENTRYID
+ WHERE t1e.FMOENTRYID = t0e.FENTRYID
+ AND t1.FDOCUMENTSTATUS = 'C'
+ GROUP BY t1e.FMOENTRYID,t1e.FMOBILLNO
+ ) t1
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t3e on t3e.FMOENTRYID = t0e.FENTRYID
+WHERE 1 = 1
+ AND t0.FDOCUMENTSTATUS = 'C'
+ AND t3e.FEntryID IN ({string.Join(",", ids)})
+
+";
+
+ var isOk = DBServiceHelper.Execute(this.Context, updSql);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+
+
+ }
+
+ private void DoCreateMoRpt(List dataEntitys)
+ {
+ try
+ {
+ IConvertService service = ServiceHelper.GetService();
+
+ //获取元数据服务
+ IMetaDataService metadataService = ServiceHelper.GetService();
+
+ //获取ViewService
+ IViewService viewService = ServiceHelper.GetService();
+ //获取源单元数据
+
+ //# *源单据标识
+ var sourceFormId = "PRD_MO";
+ //# *目标单据标识
+ var targetFormId = "PRD_MORPT";
+
+ var convertRuleId = "PRD_MO2MORPT";
+
+ var ruleMeta = service.GetConvertRule(this.Context, convertRuleId);
+
+ if (ruleMeta != null)
+ {
+ FormMetadata sourceMetada = metadataService.Load(this.Context, sourceFormId) as FormMetadata;
+
+ var policies = ruleMeta.Rule.Policies;
+ var policie7002 = policies.FirstOrDefault(x => x.ElementType == 7002) as DefaultConvertPolicyElement;
+ var policie7009 = policies.FirstOrDefault(x => x.ElementType == 7009) as BillTypeMapPolicyElement;
+ if (policie7009 == null)
+ throw new Exception("转换单据中,单据类型属性类型值:7009不存在。");
+
+ if (policie7002 == null)
+ throw new Exception("转换单据中,单据类型属性类型值:7002不存在。");
+
+ var ids = new List();
+
+ foreach (var item in dataEntitys)
+ {
+
+ var sourceBillDict = new Dictionary>();
+ var sourceBillTypeDict = new Dictionary();
+ var packEntryIds = new Dictionary>();
+
+ foreach (var entity in item["FEntity"] as DynamicObjectCollection)
+ {
+ var rptQty = Convert.ToDecimal(entity["FRptQty"]);
+ var qty = Convert.ToDecimal(entity["FQty"]);
+
+ if (qty <= rptQty)
+ continue;
+
+ var sourceBillTypeId = entity["FMoBillTypeId_Id"].ToString();
+ var billTypeMap = policie7009.BillTypeMaps.FirstOrDefault(x => x.SourceBillTypeId == sourceBillTypeId);
+
+ if (billTypeMap == null)
+ throw new Exception($"转换规则中,{sourceBillTypeId}源单单据类型不存在!");
+
+ if (!sourceBillDict.ContainsKey(sourceBillTypeId))
+ sourceBillDict.Add(sourceBillTypeId, new List());
+
+ sourceBillDict[sourceBillTypeId].Add(new ListSelectedRow("0", entity["FMoEntryId"].ToString(), 0, sourceFormId) { EntryEntityKey = policie7002.SourceEntryKey });
+
+ if (!sourceBillTypeDict.ContainsKey(sourceBillTypeId))
+ sourceBillTypeDict.Add(sourceBillTypeId, billTypeMap.TargetBillTypeId);
+
+ if (!packEntryIds.ContainsKey(sourceBillTypeId))
+ packEntryIds.Add(sourceBillTypeId, new List());
+
+ packEntryIds[sourceBillTypeId].Add(entity["Id"].Long2Int());
+ }
+
+ foreach (var dict in sourceBillDict)
+ {
+ var selectedRows = dict.Value;
+ //selectedRows.Add(new ListSelectedRow("0", entity["FMoEntryId"].ToString(), 0, sourceFormId) { EntryEntityKey = policie7002.SourceEntryKey });
+ var pushArgs = new PushArgs(ruleMeta.Rule, selectedRows.ToArray());
+ //pushArgs.TargetBillTypeId = billTypeMap.TargetBillTypeId;
+ pushArgs.TargetBillTypeId = sourceBillTypeDict[dict.Key];
+ OperateOption option = OperateOption.Create();//选项参数
+ //不按照整单下推
+ option.SetVariableValue(ConvertConst.SelectByBillId, false);
+
+ //源单数据转换目标数据
+ ConvertOperationResult convertResult = service.Push(this.Context, pushArgs, option);
+
+ DynamicObject[] destObjs = convertResult.TargetDataEntities.Select(r => r.DataEntity).ToArray();
+
+ FormMetadata destFormMetadata = metadataService.Load(this.Context, targetFormId) as FormMetadata;
+
+ string msg = string.Empty;
+
+ #region 自动保存
+ IOperationResult saveResult = ServiceHelper.GetService().SaveAndAudit(this.Context, destFormMetadata.BusinessInfo, destObjs, OperateOption.Create());
+
+ if (!saveResult.IsSuccess)
+ {
+ if (saveResult.ValidationErrors != null && saveResult.ValidationErrors.Count > 0)
+ {
+ var errorInfo = string.Join(";", saveResult.ValidationErrors.Select(x => x.Message));
+
+ throw new KDBusinessException("", "未知原因导致自动保存失败原因:" + errorInfo);
+ }
+
+ throw new KDBusinessException("", "未知原因导致自动保存失败原因:" + JsonUtil.SerializeWithOutNull(saveResult));
+ }
+
+ ids.AddRange(packEntryIds[dict.Key]);
+
#endregion
}
}
+
+ if (ids.Any())
+ {
+
+ var updSql = $@"/*dialect*/
+UPDATE t3e SET t3e.FRPTQTY = ISNULL(t1.选单入库合格数量,0)
+FROM T_PRD_MO t0
+ INNER JOIN T_PRD_MOENTRY t0e on t0.FID = t0e.FID
+ OUTER APPLY (
+ SELECT t1e.FMOENTRYID,t1e.FMOBILLNO,SUM(t1e.FFINISHQTY) '选单入库合格数量'
+ FROM T_PRD_MORPT t1
+ INNER JOIN T_PRD_MORPTENTRY t1e on t1.FID = t1e.FID
+ INNER JOIN T_PRD_MORPTENTRY_A t1e_a on t1e_a.FENTRYID = t1e.FENTRYID
+ WHERE t1e.FMOENTRYID = t0e.FENTRYID
+ AND t1.FDOCUMENTSTATUS = 'C'
+ GROUP BY t1e.FMOENTRYID,t1e.FMOBILLNO
+ ) t1
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t3e on t3e.FMOENTRYID = t0e.FENTRYID
+WHERE 1 = 1
+ AND t0.FDOCUMENTSTATUS = 'C'
+ AND t3e.FEntryID IN ({string.Join(",", ids)})
+
+";
+
+ var isOk = DBServiceHelper.Execute(this.Context, updSql);
+ }
}
}
catch (Exception ex)
diff --git a/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/OperationEventPlugInEx.py b/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/OperationEventPlugInEx.py
index 0b3bff4..b0f6501 100644
--- a/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/OperationEventPlugInEx.py
+++ b/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/OperationEventPlugInEx.py
@@ -42,100 +42,76 @@ def OnPreparePropertys(e):
def EndOperationTransaction(e):
# * 保存8提交9审核1反审核26删除3
if this.FormOperation.OperationId == 1:
- # raise Exception(JsonUtil.Serialize(e.DataEntitys))
+ billNos = List[str]();
+ for item in e.DataEntitys:
+ DoCreatePackCode(item["BillNo"])
+
+# 建立条码组装单
+def DoCreatePackCode(billNo):
+ if billNo != "":
+ sqlL = """/*dialect*/
+WITH #基础数据 AS (
+ SELECT t0.FBILLNO AS 'packBillNo',t0.FMATERIALID,0 packEntryId,0 packSeq
+ ,ISNULL(t2.FID,0) 'barCodeId'
+ ,t2.FBARCODE
+ ,ISNULL(t2.FQTY,0) FQTY,ISNULL(t3.FID,0) packId
+ ,t0.FBILLNO,1 IS_Main,1 FYLRate
+ FROM T_PRD_PACKAGEINSTOCK t0
+ LEFT JOIN T_UNW_WMS_BARCODE t2 on t2.FBILLENTRYID = t0.FSRCBILLENTRYID AND t2.FBILLFORMID = 'PLN_FORECAST'
+ LEFT JOIN T_UNW_WMS_PACKING t3 on t3.FBOXCODEID = t2.FID
+ UNION ALL
+ SELECT t0.FBILLNO AS 'packBillNo',t0e.FMATERIALID
+ ,t0e.FEntryID
+ ,t0e.FSeq
+ ,ISNULL(t2.FID,0) 'barCodeId'
+ ,t2.FBARCODE
+ ,ISNULL(t2.FQTY,0) FQTY,ISNULL(t3e.FID,0) packId
+ ,t0.FBILLNO,0,1.05
+ FROM T_PRD_PACKAGEINSTOCK t0
+ INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID
+ LEFT JOIN T_UNW_WMS_BARCODE t2 on t2.FBILLENTRYID = t0e.FMOENTRYID AND t2.FBILLFORMID = 'PRD_MO'
+ LEFT JOIN T_UNW_WMS_PACKINGENTRY t3e on t3e.FBARCODEID = t2.FID
+)
+SELECT t0.packBillNo,t0.IS_Main,t0.FMATERIALID,SUM(t0.FQTY) / t0.FYLRate FQTY,MAX(t0.barCodeId) barCodeId
+FROM #基础数据 t0
+WHERE t0.FBILLNO = '{0}'
+GROUP BY t0.packBillNo,t0.IS_Main,t0.FMATERIALID,t0.FYLRate
+ORDER BY t0.IS_Main DESC
+
+ """.format(billNo)
+ dataList = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL);
+ if dataList != None and dataList.Count > 0:
+
+ formID = "UNW_WMS_PACKING";
+
+ meta = MetaDataServiceHelper.Load(this.Context, formID)
+ objType = meta.BusinessInfo.GetDynamicObjectType();
+ newObj = DynamicObject(objType)
+
+ main = dataList[0];
+ if main["IS_Main"] == 1:
+ if main["barCodeId"] == 0:
+ raise Exception("条码装箱单套件码未生成!")
+
+ newObj["BoxCodeId_Id"] = main["barCodeId"]
+ newObj["Capacity"] = main["FQTY"]
+ newObj["CreateOrgId_Id"] = this.Context.CurrentOrganizationInfo.ID
+ newObj["CreatorId_Id"] = this.Context.UserId
+ newObj["ModifierId_Id"] = this.Context.UserId
+ entry = newObj["List"]
+ for item in dataList:
+ if item["IS_Main"] == 0:
+ if item["barCodeId"] == 0:
+ raise Exception("分录【{0}】条码未生成!".format(item["packSeq"]))
+
+ entity = entry.DynamicCollectionItemPropertyType.CreateInstance()
+ entity["BarCodeId_Id"] = item["barCodeId"]
+ entity["Qty"] = item["FQTY"]
+ entry.Add(entity)
+
+ ObjList = List[DynamicObject]();#单据的数据包集合
+ if entry.Count > 0:
+ ObjList.Add(newObj);
+ saveRslt = BusinessDataServiceHelper.Save(this.Context, meta.BusinessInfo ,ObjList.ToArray(), None, "Save");
+ # raise Exception(JsonUtil.Serialize(newObj))
- dataEntityList = List[DynamicObject]()
-
- for data in e.DataEntitys:
- srcBillEntryId = data["FPSrcBillEntryId"]
- if srcBillEntryId != None and srcBillEntryId > 0:
- dataEntityList.Add(data)
-
- if dataEntityList.Count > 0:
- DoCreateMoRpt(dataEntityList)
-
-def DoCreateMoRpt(dataEntitys):
- """组装入库单审核后生成汇报单
-
- Args:
- dataEntitys (_type_): 数据集
-
- Raises:
- Exception: _description_
- Exception: _description_
- Exception: _description_
- """
- # raise Exception(JsonUtil.Serialize(dataEntitys))
- # service = ServiceHelper.GetService[IConvertService]();
-
- ctx = this.Context;
- service = ConvertService();
- # *源单据标识
- sourceFormId = "PRD_MO";
-
- # *目标单据标识
- targetFormId = "PRD_MORPT";
-
- # ruleMetaList = service.GetRulesByFormId(this.Context,sourceFormId,targetFormId)
-
- # raise Exception(JsonUtil.Serialize(ruleMetaList))
- convertRuleId = "PRD_MO2MORPT"
- ruleMeta = service.GetConvertRule(this.Context,convertRuleId)
-
- # ! 装管公式(毫升):管数 = 数量 / 装管量(ml) / 1.05
- # ! 装管公式(微升):管数 = 数量 / 装管量(ml) / 1000 / 1.05
- if ruleMeta != None:
- policies = ruleMeta.Rule.Policies
- billTypeElement = FirstOrDefault(policies,lambda x: x.ElementType == 7009)
- if billTypeElement == None:
- raise Exception("转换单据中,单据类型属性类型值:7009不存在。")
-
- for item in dataEntitys:
- for entity in item.FEntity:
- raise Exception(JsonUtil.Serialize(entity))
- # 来源单据工单类型
- sourceBillTypeId = item["FPMoBillTypeId_Id"]
-
- # 单据转换匹配类型
- billTypeMap = FirstOrDefault(billTypeElement.BillTypeMaps,lambda x: x.SourceBillTypeId == sourceBillTypeId);
-
- if billTypeMap == None:
- raise Exception("转换规则中,工单单据类型不存在!")
-
- # 单据下推设置
- selectedRows = List[ListSelectedRow]();
- selectedRows.AddRange(list(map(lambda x : ListSelectedRow(str(x.FMoId), str(x.FMoEntryId) ,0 ,sourceFormId),item.FEntity)))
- pushArgs = PushArgs(ruleMeta.Rule, selectedRows.ToArray())
- pushArgs.TargetBillTypeId = billTypeMap.TargetBillTypeId
-
- # !转换服务
- convertResult = service.Push(this.Context , pushArgs, OperateOption.Create());
- destObjs = List[DynamicObject]()
- destObjs.AddRange(map(lambda x:x.DataEntity ,convertResult.TargetDataEntities))
- # raise Exception(JsonUtil.Serialize(destObjs))
-
- # !单据加载服务
- metaDataService = MetaDataService()
- destFormMetadata = metaDataService.Load(ctx, targetFormId)
-
- # !保存服务
- saveService = SaveService()
- saveResult = saveService.Save(ctx, destFormMetadata.BusinessInfo, destObjs.ToArray(), OperateOption.Create());
-
- msg = "";
-
- # 操作结果校验
- if saveResult.ValidationErrors != None and saveResult.ValidationErrors.Count > 0:
- errorInfoList = list(map(lambda x : x.Message,saveResult.ValidationErrors))
- errorInfo = ";".join(errorInfoList);
-
- raise Exception("未知原因导致自动保存失败原因:"+ errorInfo)
-
- # raise Exception(JsonUtil.Serialize(pushArgs))
-
-def FirstOrDefault(collection, func):
- result = filter(func, collection)
-
- if len(result) == 0: return None
-
- return result[0]
\ No newline at end of file
diff --git a/14.宝锐/GZ.LJY000.Biori/UNW_WMS_CUSTOMCODEGEN/BillEventPlugInEx.cs b/14.宝锐/GZ.LJY000.Biori/UNW_WMS_CUSTOMCODEGEN/BillEventPlugInEx.cs
new file mode 100644
index 0000000..d59e634
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/UNW_WMS_CUSTOMCODEGEN/BillEventPlugInEx.cs
@@ -0,0 +1,35 @@
+using Kingdee.BOS.Core.Bill.PlugIn;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.Util;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+
+namespace GZ.LJY000.Biori.UNW_WMS_CUSTOMCODEGEN
+{
+ [HotUpdate, Description("自定义条码生成表单插件#")]
+ public class BillEventPlugInEx : AbstractBillPlugIn
+ {
+
+
+ public override void EntryBarItemClick(BarItemClickEventArgs e)
+ {
+ base.EntryBarItemClick(e);
+ if (e.BarItemKey.StartsWith("tbConvUnit2PO", StringComparison.OrdinalIgnoreCase))
+ {
+ var details = this.View.BusinessInfo.GetEntity("FBillEntry");
+ var entrys = this.View.Model.GetEntityDataObject(details);
+
+ foreach(var entry in entrys)
+ {
+ var rowIndex = this.View.Model.GetRowIndex(details, entry);
+ //this.View.Model.SetItemValueByID()
+ //JsonUtil.Serialize()
+ }
+ }
+
+ }
+ }
+}
diff --git a/14.宝锐/GZ.LJY000.Biori/UNW_WMS_CUSTOMCODEGEN/BillEventPlugInEx.py b/14.宝锐/GZ.LJY000.Biori/UNW_WMS_CUSTOMCODEGEN/BillEventPlugInEx.py
new file mode 100644
index 0000000..0404655
--- /dev/null
+++ b/14.宝锐/GZ.LJY000.Biori/UNW_WMS_CUSTOMCODEGEN/BillEventPlugInEx.py
@@ -0,0 +1,45 @@
+import clr
+clr.AddReference("System")
+clr.AddReference("System.Xml")
+clr.AddReference("Kingdee.BOS")
+clr.AddReference("Kingdee.BOS.Core")
+clr.AddReference("Kingdee.BOS.DataEntity")
+clr.AddReference("Kingdee.BOS.App")
+clr.AddReference("Kingdee.BOS.Contracts")
+clr.AddReference("Kingdee.BOS.ServiceHelper")
+
+from Kingdee.BOS import *
+from Kingdee.BOS.Contracts import *
+from Kingdee.BOS.Core import *
+from Kingdee.BOS.Core.List import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
+from Kingdee.BOS.Core.Metadata.EntityElement import *
+from Kingdee.BOS.Core.Bill import *
+from Kingdee.BOS.Core.Metadata import *
+from Kingdee.BOS.Orm.DataEntity import *
+from Kingdee.BOS.Util import *
+from Kingdee.BOS.Core.Util import *
+from System import *
+from System.Xml import *
+from System.ComponentModel import *
+from System.Collections.Generic import *
+from System.Text import*
+from Kingdee.BOS.ServiceHelper import *
+
+def EntryBarItemClick(e):
+ if e.BarItemKey == "tbConvUnit2PO":
+ details = this.View.BusinessInfo.GetEntity("FEntity");
+ entrys = this.View.Model.GetEntityDataObject(details);
+ if entrys != None and entrys.Count > 0:
+ for entry in entrys:
+ if entry["FMaterialId"] != None and entry["FUnitId"] != None:
+ if entry["FMaterialId"]["Id"] > 0 :
+ materialPurchase = entry["FMaterialId"]["MaterialPurchase"][0];
+ if materialPurchase["PurchaseUnitID_Id"] != entry["FUnitId"]["Id"]:
+ rowIndex = this.View.Model.GetRowIndex(details, entry)
+ # raise Exception(JsonUtil.Serialize(entry["FUnitId"]))
+ this.View.Model.SetItemValueByID("FUnitId",materialPurchase["PurchaseUnitID_Id"],rowIndex);
+ this.View.InvokeFieldUpdateService("FUnitId", rowIndex);
+
+ return;
diff --git a/GZ.LJY000.PiLot/SAL_OUTSTOCK/UploadExtension/BillEventPlugInEx.cs b/GZ.LJY000.PiLot/SAL_OUTSTOCK/UploadExtension/BillEventPlugInEx.cs
index e338d65..fa1c436 100644
--- a/GZ.LJY000.PiLot/SAL_OUTSTOCK/UploadExtension/BillEventPlugInEx.cs
+++ b/GZ.LJY000.PiLot/SAL_OUTSTOCK/UploadExtension/BillEventPlugInEx.cs
@@ -49,16 +49,18 @@ namespace GZ.LJY000.PiLot.SAL_OUTSTOCK.UploadExtension
this.View.ShowErrMessage("文件未加载完毕!");
return;
}
+
if (e.Key.EndsWith("FDoUpLoad", StringComparison.OrdinalIgnoreCase))
{
var entity = this.View.Model.BillBusinessInfo.GetEntryEntity("FEntity");
var rows = this.View.Model.GetEntityDataObject(entity);
if (rows != null && rows.Any())
{
- var path = HttpContext.Current.Request.PhysicalApplicationPath + @"\FileUpLoadServices\UploadFiles\";
+ //var path = HttpContext.Current.Request.PhysicalApplicationPath + @"\FileUpLoadServices\UploadFiles\";
+ var path = HttpContext.Current.Request.PhysicalApplicationPath + @"/FileUpLoadServices/UploadFiles/";
- if (!this.Context.DBId.Equals("6735f10547df64"))
- path = "D:/Program Files (x86)/Kingdee/K3Cloud/WebSite/FileUpLoadServices/UploadFiles/";
+ //if (!this.Context.DBId.Equals("6735f10547df64"))
+ // path = "D:/Program Files (x86)/Kingdee/K3Cloud/WebSite/FileUpLoadServices/UploadFiles/";
foreach (var row in rows)
{
@@ -101,7 +103,7 @@ namespace GZ.LJY000.PiLot.SAL_OUTSTOCK.UploadExtension
Rect region = new Rect(x, y, width, height);
- resData = DecodeQRCodes(src, region, false);
+ resData = DecodeQRCodes(src, region, true);
}
}
}
@@ -118,7 +120,7 @@ namespace GZ.LJY000.PiLot.SAL_OUTSTOCK.UploadExtension
int height = srcHeight / 2;
Rect region = new Rect(x, y, width, height);
- resData = DecodeQRCodes(src, region, false);
+ resData = DecodeQRCodes(src, region, true);
}
if (resData != null)
@@ -132,12 +134,19 @@ namespace GZ.LJY000.PiLot.SAL_OUTSTOCK.UploadExtension
var base64 = FileToBase64String(fullName);
var resultJson = DoAttachmentUpload("SAL_OUTSTOCK", fileName, resData.name, fileBytesLength, fileSuffix, base64);
- var result = JsonConvert.DeserializeObject(resultJson);
- //var result = resultJson as JObject;
- var responseData = result["Result"]["ResponseStatus"];
- isSuccess = responseData["IsSuccess"].Value();
+ if (resultJson != null)
+ {
+ var result = JsonConvert.DeserializeObject(resultJson);
+ //var result = resultJson as JObject;
+ var responseData = result["Result"]["ResponseStatus"];
+ isSuccess = responseData["IsSuccess"].Value();
- resMsg = JsonConvert.SerializeObject(responseData);
+ resMsg = JsonConvert.SerializeObject(responseData);
+ }
+ else
+ {
+ resMsg = "识别单号找不到对应销售出库单!";
+ }
}
if (isSuccess)
@@ -150,11 +159,18 @@ namespace GZ.LJY000.PiLot.SAL_OUTSTOCK.UploadExtension
{
if (resMsg.IsNullOrEmpty())
resMsg = "识别失败!";
+
row["FisSucceed"] = false;
row["FResultMsg"] = resMsg;
this.View.GetControl("FFileName").SetCustomPropertyValue("ForeColor", "#FF3300");
}
}
+ else
+ {
+ row["FisSucceed"] = false;
+ row["FResultMsg"] = "未知错误导致识别失败!";
+ this.View.GetControl("FFileName").SetCustomPropertyValue("ForeColor", "#FF3300");
+ }
}
//fileUploaded = false;
@@ -287,17 +303,29 @@ namespace GZ.LJY000.PiLot.SAL_OUTSTOCK.UploadExtension
billNo = "ZHBR-XSCKD240911002";
var InterId = 0L;
+ var formBillNo = "";
var sqlL = $@"/*dialect*/
-SELECT t0.FBILLNO,t0.FID
+SELECT t0.FBILLNO,t0.FID,t0e.FENTRYID,t0e.FSEQ,t0e_lk.FSTABLENAME,t0e_lk.FSBILLID
FROM T_SAL_OUTSTOCK t0
-WHERE t0.FBILLNO = '{billNo}'
+ INNER JOIN T_SAL_OUTSTOCKENTRY t0e on t0.FID = t0e.FID
+ INNER JOIN T_SAL_OUTSTOCKENTRY_LK t0e_lk on t0e_lk.FENTRYID = t0e.FENTRYID
+ AND t0e_lk.FSTABLENAME = 'T_SAL_DELIVERYNOTICEENTRY'
+ INNER JOIN T_SAL_DELIVERYNOTICE t1 on t1.FID = t0e_lk.FSBILLID
+WHERE t1.FBILLNO = '{billNo}'
";
var data = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL);
if (data != null && data.Any())
+ {
InterId = data[0]["FID"].Long2Int();
+ formBillNo = data[0]["FBILLNO"].ToString();
+ }
+ else
+ {
+ return null;
+ }
var fileSql = @"/*dialect*/
SELECT *
@@ -316,7 +344,7 @@ ORDER BY FENABLE DESC";
""FormId"": ""{formId}"",
""IsLast"": true,
""InterId"": {InterId},
- ""BillNO"": ""{billNo}"",
+ ""BillNO"": ""{formBillNo}"",
""AliasFileName"": """",
""SendByte"": ""{base64}""
}}
@@ -333,7 +361,7 @@ ORDER BY FENABLE DESC";
""FAttachmentName"": ""{fileName}"",
""FBillType"": ""{formId}"",
""FInterID"": ""{InterId}"",
- ""FBillNo"": ""{billNo}"",
+ ""FBillNo"": ""{formBillNo}"",
""FAttachmentSize"": {fileBytesLength},
""FAttachment"":""{base64}"",
""FFILESTORAGE"":0,
@@ -381,7 +409,7 @@ ORDER BY FENABLE DESC";
var row = new DynamicObject(entity.DynamicObjectType);
var fileName = fileInfo["FileName"].ToString();
var suffix = Path.GetExtension(fileName);
- if (suffix.ToUpper().Equals(".PDF")|| suffix.ToUpper().Equals(".JPG"))
+ if (suffix.ToUpper().Equals(".PDF") || suffix.ToUpper().Equals(".JPG"))
{
row["FFileName"] = fileName;
row["FServerFileName"] = fileInfo["ServerFileName"];
diff --git a/GZ.LJY00001.HuiWei/GAT_zpjjlr/BillEventPlugInEx.cs b/GZ.LJY00001.HuiWei/GAT_zpjjlr/BillEventPlugInEx.cs
new file mode 100644
index 0000000..e43e823
--- /dev/null
+++ b/GZ.LJY00001.HuiWei/GAT_zpjjlr/BillEventPlugInEx.cs
@@ -0,0 +1,56 @@
+using Kingdee.BOS.Core.DynamicForm.PlugIn;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.ServiceHelper;
+using Kingdee.BOS.Util;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace GZ.LJY00001.HuiWei.GAT_zpjjlr
+{
+ [HotUpdate, Description("装配计件录入表单插件")]
+ public class BillEventPlugInEx : AbstractDynamicFormPlugIn
+ {
+ public override void DataChanged(DataChangedEventArgs e)
+ {
+ base.DataChanged(e);
+ if (e.Field.Key.ToUpperInvariant().Equals("F_YGNO3"))
+ {
+ var ygNo = e.NewValue.Long2Int();
+ var isSyq = 0;
+ var hw_xygzjj_id = 0;
+
+ if (ygNo > 0)
+ {
+ var date = this.View.Model.GetValue("F_DATE").ToString();
+ var sql = $@"/*dialect*/
+
+SELECT t0e.F_YGNM,CASE t0e.F_ISSYQ WHEN '是' THEN 1 ELSE 0 END 'ISSYQ',ISNULL(t1.FID,0) hw_xygzjj_id
+FROM GAT_YGCQ t0
+ INNER JOIN GAT_YGCQs t0e on t0.FID = t0e.FID
+ LEFT JOIN hw_xygzjj t1 on t1.F_YGID = t0e.F_YGNM
+WHERE t0.F_Date = '{date}'
+ AND t0e.F_YGNM = {ygNo}
+
+";
+
+ var result = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
+
+ if (result != null && result.Count > 0)
+ {
+ var data = result[0];
+ isSyq = data["ISSYQ"].Long2Int();
+ hw_xygzjj_id = data["hw_xygzjj_id"].Long2Int();
+ }
+ }
+
+ this.View.Model.SetValue("FIsSYQ", isSyq, e.Row);
+ this.View.Model.SetItemValueByID("FxygjjdjbId", hw_xygzjj_id, e.Row);
+ }
+
+ }
+ }
+}
diff --git a/GZ.LJY00001.HuiWei/GZ.LJY00001.HuiWei.csproj b/GZ.LJY00001.HuiWei/GZ.LJY00001.HuiWei.csproj
new file mode 100644
index 0000000..7a74bad
--- /dev/null
+++ b/GZ.LJY00001.HuiWei/GZ.LJY00001.HuiWei.csproj
@@ -0,0 +1,60 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {BB639BC5-BACC-48D1-B9A6-96F3C7DDD605}
+ Library
+ Properties
+ GZ.LJY00001.HuiWei
+ GZ.LJY00001.HuiWei
+ v4.0
+ 512
+ true
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+ ..\00.未分类\AllOperation\bin\Debug\Kingdee.BOS.dll
+
+
+ ..\00.未分类\AllOperation\bin\Debug\Kingdee.BOS.Core.dll
+
+
+ ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.DataEntity.dll
+
+
+ ..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.BOS.ServiceHelper.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GZ.LJY00001.HuiWei/Properties/AssemblyInfo.cs b/GZ.LJY00001.HuiWei/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..2088603
--- /dev/null
+++ b/GZ.LJY00001.HuiWei/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("GZ.LJY00001.HuiWei")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("GZ.LJY00001.HuiWei")]
+[assembly: AssemblyCopyright("Copyright © 2024")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("bb639bc5-bacc-48d1-b9a6-96f3c7ddd605")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/GateDge2023.sln b/GateDge2023.sln
index 2c9ba08..1e4eca8 100644
--- a/GateDge2023.sln
+++ b/GateDge2023.sln
@@ -116,6 +116,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GZ.LJY000.PiLot", "GZ.LJY00
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTestProject1", "UnitTestProject1\UnitTestProject1.csproj", "{29BDA1D3-0416-4C53-8809-F0A1735208A8}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GZ.LJY00001.HuiWei", "GZ.LJY00001.HuiWei\GZ.LJY00001.HuiWei.csproj", "{BB639BC5-BACC-48D1-B9A6-96F3C7DDD605}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -262,6 +264,10 @@ Global
{29BDA1D3-0416-4C53-8809-F0A1735208A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{29BDA1D3-0416-4C53-8809-F0A1735208A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{29BDA1D3-0416-4C53-8809-F0A1735208A8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BB639BC5-BACC-48D1-B9A6-96F3C7DDD605}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BB639BC5-BACC-48D1-B9A6-96F3C7DDD605}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BB639BC5-BACC-48D1-B9A6-96F3C7DDD605}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BB639BC5-BACC-48D1-B9A6-96F3C7DDD605}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -307,6 +313,7 @@ Global
{67ACDBF1-6213-42F5-8F76-7E85B0C58936} = {8A3E73AC-BCAD-4485-A956-5B7F5E559D81}
{EED214C8-4253-44D0-B2B7-39245D2C023D} = {AFDA0A08-FEAD-4570-A650-E95470CF8F2C}
{29BDA1D3-0416-4C53-8809-F0A1735208A8} = {2217EA0E-E53F-4ECC-A49D-F38BC743F47A}
+ {BB639BC5-BACC-48D1-B9A6-96F3C7DDD605} = {42311C80-7B4C-4353-BCA9-4ABD024290C8}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {16F7DBDD-F487-41D6-A856-9E9B7B3F61C5}