1. 程式人生 > >K/3 Cloud 產品報價單_表單插件開發示例

K/3 Cloud 產品報價單_表單插件開發示例

ted pac upd chan sele RKE order .exe lis

using Kingdee.BOS;
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;

namespace MyPlugIn.PRODUCTQUOTE.PlugIn
{
    [Description(
"產品報價單表單插件")] public class PlugIn : AbstractDynamicFormPlugIn { /// <summary> /// 數據變更時 /// </summary> /// <param name="e"></param> public override void DataChanged(DataChangedEventArgs e) { List<string> lstField = new
List<string> { "F_KD_SHL", // 材料損耗率% "F_KD_BZGS", // 標準工時 "F_KD_GFL", // 工費率(元/H) "F_KD_ZZFYL", // 制造費用率% "F_KD_FTSL", // 模具分攤數量 "F_KD_MLL", // 毛利率 "
F_KD_WBREBATE", // 外幣(Rebate)/客戶傭金 "F_KD_WBHL", // 匯率 "F_KD_RMBREBATE", // 人民幣(Rebate) "F_KD_TAXRATE", // 增值稅率 "F_KD_GXFL", // 管銷費率 "FTAXPRICE", // 材料含稅單價 "FUSAGE", // 材料用量 "FTAXAMOUNT", // 材料含稅金額 "FMDPRICE" // 模具單價 }; string strKey = e.Field.FieldName.Trim().ToUpper(); if (lstField.Contains(strKey)) { Compute(); } else if ((strKey == "FSUBMATERIALID") || (strKey == "FBASEUNIT")) { DynamicObject dynobj = (DynamicObject)this.View.Model.GetValue("FSUBMATERIALID", e.Row); DynamicObject dynobjunit = (DynamicObject)this.View.Model.GetValue("FBASEUNIT", e.Row); System.Int64 intUnitId = (dynobjunit.IsNullOrEmptyOrWhiteSpace()) ? 0 : (System.Int64)dynobjunit["Id"]; Boolean blnIsNewMat = true; int intFSUPPLIERID = 0; Decimal decFCONPRICE = 0; Decimal decFMAXTAXPRICE = 0; Decimal decFMINTAXPRICE = 0; Decimal decFQTAXPRICE = 0; System.DateTime? dtFORDEERDATE = null; Decimal decFUSAGE = (Decimal)this.Model.GetValue("FUSAGE", e.Row); Decimal decAmount = 0; if (dynobj.IsNullOrEmptyOrWhiteSpace() == false) { System.Int64 intMatId = (System.Int64)dynobj["Id"]; string strSql = @"SELECT TOP 1 1 FROM T_PUR_PRICELISTENTRY WHERE FMATERIALID=@MATID "; List<SqlParam> lstParams = new List<SqlParam>(); lstParams.Add(new SqlParam("@MATID", KDDbType.Int64, intMatId)); DynamicObjectCollection objcol = DBUtils.ExecuteDynamicObject(this.Context, strSql, null, null, System.Data.CommandType.Text, lstParams.ToArray()); if ((objcol.IsNullOrEmptyOrWhiteSpace() == false) && (objcol.Count > 0)) { blnIsNewMat = false; } lstParams.Clear(); strSql = @"/*dialect*/GetPurPrice @MATID,@UNITID "; lstParams.Add(new SqlParam("@MATID", KDDbType.Int64, intMatId)); lstParams.Add(new SqlParam("@UNITID", KDDbType.Int64, intUnitId)); DynamicObjectCollection objcol2 = DBUtils.ExecuteDynamicObject(this.Context, strSql, null, null, System.Data.CommandType.Text, lstParams.ToArray()); if ((objcol2.IsNullOrEmptyOrWhiteSpace() == false) && (objcol2.Count > 0)) { DynamicObject dyn1 = objcol2[0]; if (dyn1.IsNullOrEmptyOrWhiteSpace() == false) { intFSUPPLIERID = (int)dyn1["FSUPPLIERID"]; decFCONPRICE = (Decimal)dyn1["FCONPRICE"]; decFMAXTAXPRICE = (Decimal)dyn1["FMAXTAXPRICE"]; decFMINTAXPRICE = (Decimal)dyn1["FMINTAXPRICE"]; decFQTAXPRICE = (Decimal)dyn1["FQTAXPRICE"]; decAmount = decFUSAGE * decFCONPRICE; dtFORDEERDATE = (DateTime?)dyn1["FDATE"]; } } } this.Model.SetValue("FISNEWMAT", blnIsNewMat, e.Row); this.Model.SetValue("FSUPPLIERID", intFSUPPLIERID, e.Row); this.Model.SetValue("FTAXPRICE", decFCONPRICE, e.Row); this.Model.SetValue("FTAXAMOUNT", decAmount, e.Row); this.Model.SetValue("FMAXPRICE", decFMAXTAXPRICE, e.Row); this.Model.SetValue("FMINPRICE", decFMINTAXPRICE, e.Row); this.Model.SetValue("FQPRICE", decFQTAXPRICE, e.Row); this.Model.SetValue("FORDERDATE", dtFORDEERDATE, e.Row); } base.DataChanged(e); } /// <summary> /// 財務計算 /// </summary> private void Compute() { DynamicObjectCollection dyncolobj = (DynamicObjectCollection)this.Model.DataObject["FEntity"]; DynamicObjectCollection dyncolmdobj = (DynamicObjectCollection)this.Model.DataObject["FMDEntity"]; String strFMJFY=(String)this.Model.DataObject["FMJFY"]; Decimal decSumMatAmount = 0; Decimal decSumMdAmount = 0; Decimal decAmount = 0; Decimal decUsage = 0; Decimal decPRICE = 0; if (dyncolobj.IsNullOrEmptyOrWhiteSpace() == false && dyncolobj.Count > 0) { int intRow = 0; foreach (DynamicObject dynobj in dyncolobj) { decUsage = (Decimal)dynobj["FUSAGE"]; decPRICE = (Decimal)dynobj["FTAXPRICE"]; decAmount = decUsage * decPRICE; decSumMatAmount = decSumMatAmount + decAmount; dynobj["FTAXAMOUNT"] = decAmount; this.View.UpdateView("FTAXAMOUNT", intRow++); } } if (dyncolmdobj.IsNullOrEmptyOrWhiteSpace() == false && dyncolmdobj.Count > 0) { foreach (DynamicObject dynobj in dyncolmdobj) { decAmount = (Decimal)dynobj["FMDPRICE"]; decSumMdAmount = decSumMdAmount + decAmount; } } Decimal decFMATCOST = decSumMatAmount; // 材料成本 Decimal decF_KD_SHL = (Decimal)this.Model.DataObject["F_KD_SHL"]; // 材料損耗率% Decimal decF_KD_SH = decFMATCOST * decF_KD_SHL / 100; // 材料損耗=材料成本*材料損耗率%/100 Decimal decF_KD_HSCLXJ = decFMATCOST + decF_KD_SH; // 含稅材料小計=材料成本+材料損耗 Decimal decF_KD_WSCLXJ = decF_KD_HSCLXJ * 100 / ((Decimal)this.Model.DataObject["F_KD_TAXRATE"]+100); // 未稅材料小計 Decimal decF_KD_BZGS = (Decimal)this.Model.DataObject["F_KD_BZGS"]; // 標準工時 Decimal decF_KD_GFL = (Decimal)this.Model.DataObject["F_KD_GFL"]; // 工費率(元/H) Decimal decF_KD_RGCBXJ = decF_KD_BZGS * decF_KD_GFL / 3600; // 人工成本小計=標準工時*工費率(元/H)/3600 Decimal decF_KD_ZZFYL = (Decimal)this.Model.DataObject["F_KD_ZZFYL"]; // 制造費用率% Decimal decF_KD_SCCBXJ = (decF_KD_ZZFYL == 100) ? 0 : ((decF_KD_WSCLXJ + decF_KD_RGCBXJ) * 100 / (100 - decF_KD_ZZFYL)); // 生產成本小計=(未稅材料小計+人工成本小計)*100/(100-制造費用率) Decimal decF_KD_MJFY = decSumMdAmount; // 模具費用 Decimal decF_KD_FTSL = (Decimal)this.Model.DataObject["F_KD_FTSL"]; // 模具分攤數量 Decimal decF_KD_MJFTCB = 0; if (strFMJFY.IsNullOrEmptyOrWhiteSpace() == false && strFMJFY == "1") // 模具費用為公司承擔時,進行模具成本分攤 { decF_KD_MJFTCB = (decF_KD_FTSL == 0) ? decF_KD_MJFY : (decF_KD_MJFY / decF_KD_FTSL); // 模具分攤成本=模具費用/模具分攤數量 } Decimal decF_KD_MLL = (Decimal)this.Model.DataObject["F_KD_MLL"]; // 毛利率 Decimal decF_KD_WBREBATE = (Decimal)this.Model.DataObject["F_KD_WBREBATE"]; // 外幣(Rebate)/客戶傭金 Decimal decF_KD_WBHL = (Decimal)this.Model.DataObject["F_KD_WBHL"]; // 匯率 // 外幣報價=(生產成本合計 / (1 - 毛利率) + 模具分攤成本 + 外幣Rebate) / 匯率 Decimal decF_KD_WBBJ = ((decF_KD_MLL == 100) || (decF_KD_WBHL == 0)) ? 0 : ((decF_KD_SCCBXJ * 100 / (100 - decF_KD_MLL) + decF_KD_MJFTCB + decF_KD_WBREBATE) / decF_KD_WBHL); Decimal decF_KD_RMBREBATE = (Decimal)this.Model.DataObject["F_KD_RMBREBATE"]; // 人民幣(Rebate) Decimal decF_KD_TAXRATE = (Decimal)this.Model.DataObject["F_KD_TAXRATE"]; // 增值稅率 // 人民幣報價(含稅)=(生產成本合計/(1-毛利率)+模具分攤成本+人民幣Rebate)*(1+增值稅率) Decimal decF_KD_RMBBJ = (decF_KD_MLL == 100) ? 0 : ((decF_KD_SCCBXJ * 100 / (100 - decF_KD_MLL) + decF_KD_MJFTCB + decF_KD_RMBREBATE) * (100 + decF_KD_TAXRATE) / 100); // 人民幣報價(含稅)=(生產成本合計/(1-毛利率)+模具分攤成本+人民幣Rebate)*(1+增值稅率) Decimal decF_KD_WBJSR = (decF_KD_WBBJ - decF_KD_WBREBATE) * decF_KD_WBHL; // 外幣凈收入=(外幣報價 - 外幣Rebate) * 匯率 Decimal decF_KD_RMBJSR = decF_KD_RMBBJ * 100 / (100 + decF_KD_TAXRATE) - decF_KD_RMBREBATE; // 人民幣凈收入=人民幣報價(含稅)/(1+增值稅率)-人民幣Rebate Decimal decF_KD_BWBJSR = (decF_KD_RMBJSR > 0) ? decF_KD_RMBJSR : decF_KD_WBJSR; // 本位幣凈收入 //取值(人民幣凈收入 > 0, 人民幣凈收入, 外幣凈收入) Decimal decF_KD_MLR = decF_KD_BWBJSR * decF_KD_MLL / 100; // 毛利潤=本位幣凈收入*毛利率 Decimal decF_KD_GXFL = (Decimal)this.Model.DataObject["F_KD_GXFL"]; // 管銷費率 Decimal decF_KD_GXFY = decF_KD_BWBJSR * decF_KD_GXFL / 100; // 管銷費用=本位幣凈收入*管銷費率 Decimal decF_KD_SQLR = decF_KD_MLR - decF_KD_GXFY; // 稅前利潤=毛利潤-管銷費用 Decimal decF_KD_SQLRL = (decF_KD_BWBJSR == 0) ? 0 : (decF_KD_SQLR / decF_KD_BWBJSR * 100); // 稅前利潤率=稅前利潤/本位幣凈收入 this.Model.SetValue("FMATCOST", decFMATCOST); // 材料成本 this.Model.SetValue("F_KD_SH", decF_KD_SH); // 材料損耗 this.Model.SetValue("F_KD_HSCLXJ", decF_KD_HSCLXJ); // 含稅材料小計 this.Model.SetValue("F_KD_WSCLXJ", decF_KD_WSCLXJ); // 未稅材料小計 this.Model.SetValue("F_KD_RGCBXJ", decF_KD_RGCBXJ); // 人工成本小計 this.Model.SetValue("F_KD_MJFY", decF_KD_MJFY); // 模具費用 this.Model.SetValue("F_KD_MJFTCB", decF_KD_MJFTCB); // 模具分攤成本 this.Model.SetValue("F_KD_SCCBXJ", decF_KD_SCCBXJ); // 生產成本小計 this.Model.SetValue("F_KD_WBBJ", decF_KD_WBBJ); // 外幣報價 this.Model.SetValue("F_KD_RMBBJ", decF_KD_RMBBJ); // 人民幣報價(含稅) this.Model.SetValue("F_KD_WBJSR", decF_KD_WBJSR); // 外幣凈收入 this.Model.SetValue("F_KD_RMBJSR", decF_KD_RMBJSR); // 人民幣凈收入 this.Model.SetValue("F_KD_BWBJSR", decF_KD_BWBJSR); // 本位幣凈收入 this.Model.SetValue("F_KD_MLR", decF_KD_MLR); // 毛利潤 this.Model.SetValue("F_KD_GXFY", decF_KD_GXFY); // 管銷費用 this.Model.SetValue("F_KD_SQLR", decF_KD_SQLR); // 稅前利潤 this.Model.SetValue("F_KD_SQLRL", decF_KD_SQLRL); // 稅前利潤率 } } }

K/3 Cloud 產品報價單_表單插件開發示例