public void Run(Context ctx, Schedule schedule)
        {
            //0、获取本次同步订单数据
            DynamicObjectCollection salNoCol = getSalNo(ctx);

            if (salNoCol != null && salNoCol.Count() > 0)
            {
                //1、同步物料
                List <string> salNosList_1 = SyncMaterial(ctx, salNoCol);
                if (salNosList_1 != null)
                {
                    //2、同步BOM清单
                    List <string> salNosList_2 = SyncBomBill(ctx, salNosList_1);
                    if (salNosList_2.Count() > 0 && salNosList_2 != null)
                    {
                        //3、同步销售订单
                        SyncSalBill(ctx, salNosList_2);
                    }
                }
            }
            else
            {
                string saleBIllNos = "";
                IsDelBill(ctx, saleBIllNos);
            }
        }
Exemple #2
0
        /// <summary>
        /// 点击按钮传递平均单价
        /// </summary>
        /// <param name="e"></param>
        public override void AfterButtonClick(AfterButtonClickEventArgs e)
        {
            base.AfterButtonClick(e);
            if (e.Key.ToUpperInvariant().Equals("FPASSONMEDPRICE"))
            {
                string strSql = string.Format(@"/*dialect*/SELECT MAT.FNUMBER,
         sum(spData.FAMOUNT)/sum(spData.FACTUALQTY) avgPrice
FROM T_SP_PICKMTRL sp
INNER JOIN T_SP_PICKMTRLDATA spData
    ON sp.FID = spData.FID
INNER JOIN T_BD_MATERIAL MAT
    ON spData.FMATERIALID = MAT.FMATERIALID
WHERE sp.FPRDORGID = 111934 

group by MAT.FNUMBER");
                DynamicObjectCollection result = DBUtils.ExecuteDynamicObject(this.Context, strSql);
                if (result != null && result.Count() > 0)
                {
                    string sJson = CreateJson(result);
                    if (!sJson.Equals("传递参数拼接失败"))
                    {
                        WebMesTest.MaterialMessageFromCappServiceService requestMes = new WebMesTest.MaterialMessageFromCappServiceService();
                        requestMes.WeightingAvgNumerAsync(sJson);

                        //ResManager
                        //调用MES提供的接口
                    }
                }
            }
        }
        public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx)
        {
            if (dataEntities == null)
            {
                return;
            }
            Field billNoField = validateContext.BusinessInfo.GetBillNoField();

            if (dataEntities != null && dataEntities.Count() > 0)
            {
                List <long> lstFids = new List <long>();

                foreach (var data in dataEntities)
                {
                    lstFids.Add(Convert.ToInt64(data.DataEntity["ID"]));
                }

                if (lstFids.Count() <= 0)
                {
                    return;
                }

                SqlParam param = new SqlParam("@FID", KDDbType.udt_inttable, lstFids.ToArray());

                string sql = string.Format(@"
                select b.FID,c.FEntryID,c.FSeq
                from JN_T_SAL_ForecastBack a
                inner join JN_T_SAL_ForecastChange b on a.FSALEORGID=b.FJNSALEORGID and a.FSALERID=b.FJNSALERID 
                and a.FSaleDeptId=b.FJNSaleDeptId 
                inner join JN_T_SAL_ForecastChangeEntry c on b.FID=c.FID and a.FMATERIALID=c.FJNMATERIALID 
                and a.FAUXPROPID=c.FJNAUXPROP  and  c.FJNBaseUnitID=a.FUnitID
                inner join TABLE(fn_StrSplit(@FID,',',1)) tb on b.Fid=tb.Fid
                where b.FDirection='A' and a.FQTY-c.FJNBaseUnitQty<0");

                DynamicObjectCollection docForecast = DBUtils.ExecuteDynamicObject(this.Context, sql, null, null, CommandType.Text, new SqlParam[] { param });

                if (docForecast == null || docForecast.Count() <= 0)
                {
                    return;
                }

                foreach (var data in dataEntities)
                {
                    List <DynamicObject> docSelect = docForecast.Where(p => Convert.ToInt64(data.DataEntity["ID"]) == Convert.ToInt64(p["FID"])).ToList();

                    if (docSelect == null || docSelect.Count() <= 0)
                    {
                        continue;
                    }

                    foreach (var item in docSelect)
                    {
                        AddMsg(validateContext, data, billNoField.Key
                               , string.Format(@"第{0}行审核之后结余数小于0,不能反审核!", item["FSeq"]));
                    }
                }
            }
        }
Exemple #4
0
        public override void AfterConvert(Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args.AfterConvertEventArgs e)
        {
            base.AfterConvert(e);

            ExtendedDataEntity[] entityArray = e.Result.FindByEntityKey("FbillHead");

            if (entityArray == null || entityArray.Count() <= 0)
            {
                return;
            }

            List <long> lstMaterialID = new List <long>();

            foreach (ExtendedDataEntity entity in entityArray)
            {
                if (!lstMaterialID.Contains(Convert.ToInt64(entity.DataEntity["MaterialId_Id"])))
                {
                    lstMaterialID.Add(Convert.ToInt64(entity.DataEntity["MaterialId_Id"]));
                }
            }

            if (lstMaterialID.Count() <= 0)
            {
                return;
            }

            SqlParam param = new SqlParam("@FID", KDDbType.udt_inttable, lstMaterialID.ToArray());

            string strSql = string.Format(@"select a.FID,a.FMaterialId from T_ENG_BOM a
                                          INNER JOIN TABLE(fn_StrSplit(@FID,',',1)) b on a.FMaterialId=b.FID ");

            DynamicObjectCollection dycBomCollections = DBUtils.ExecuteDynamicObject(this.Context, strSql, null, null, CommandType.Text, new SqlParam[] { param });

            if (dycBomCollections == null || dycBomCollections.Count() <= 0)
            {
                return;
            }

            foreach (ExtendedDataEntity entity in entityArray)
            {
                DynamicObject dycBom = entity["BomId"] as DynamicObject;
                if (dycBom == null || Convert.ToInt64(dycBom["Id"]) == 0)
                {
                    DynamicObject dycSelect = dycBomCollections.Where(o => Convert.ToInt64(o["FMaterialId"]) == Convert.ToInt64(entity.DataEntity["MaterialId_Id"])).FirstOrDefault();
                    if (dycSelect != null)
                    {
                        entity.DataEntity["BomId_Id"] = dycSelect["FID"];
                    }
                }
                Kingdee.BOS.ServiceHelper.DBServiceHelper.LoadReferenceObject(this.Context, new DynamicObject[] { entity.DataEntity }, e.TargetBusinessInfo.GetDynamicObjectType());
            }
        }
        /// <summary>
        /// 根据合同号判断是否到全货
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="ContractNo">合同号</param>
        /// <param name="orp">是否反写采购合同到全日期,默认 0,1为反写</param>
        /// <returns></returns>
        public Boolean isSendAllMaterial(Context ctx, string ContractNo, string orp)
        {
            string strSql = string.Format(@"/*dialect*/select porderid,poorderno ,sum(fstockinqty)-sum(fqty) qty
from (
select  poorder.fid porderid, --采购订单单据ID
poorder.fbillno poorderno, --采购订单号
orderentry.fentryid entryid, --采购订单分录id
orderentry_r.freceiveqty, --累计收料数量
orderentry_r.fstockinqty,
orderentry.fqty
from t_PUR_POOrder poorder   --采购订单
inner join t_PUR_POOrderEntry orderentry on orderentry.fid = poorder.fid--采购订单明细分录
inner join t_Pur_Poorderentry_r orderentry_r on orderentry_r.fentryid = orderentry.fentryid-- 扩展表
inner join t_Pur_Poorderentry_lk lk      on lk.fentryid = orderentry.fentryid -- 关联表
inner join T_PUR_CONTRACT contract  on contract.fid=lk.fsbillid  --采购合同单据头
where contract.F_HTBH = '{0}'
)
group by porderid, poorderno
having sum(fstockinqty) - sum(fqty) >= 0 ", ContractNo);
//            StringBuilder sql = new StringBuilder();
//            sql.AppendFormat(@"select porderid,poorderno ,sum(fstockinqty)-sum(fqty)
//from (
//select  poorder.fid porderid, --采购订单单据ID
//poorder.fbillno poorderno, --采购订单号
//orderentry.fentryid entryid, --采购订单分录id
//orderentry_r.freceiveqty, --累计收料数量
//orderentry_r.fstockinqty,
//orderentry.fqty
//from t_PUR_POOrder poorder   --采购订单
//inner join t_PUR_POOrderEntry orderentry on orderentry.fid = poorder.fid--采购订单明细分录
//inner join t_Pur_Poorderentry_r orderentry_r on orderentry_r.fentryid = orderentry.fentryid-- 扩展表
//inner join t_Pur_Poorderentry_lk lk      on lk.fentryid = orderentry.fentryid -- 关联表
//inner join T_PUR_CONTRACT contract  on contract.fid=lk.fsbillid  --采购合同单据头
//where contract.fbillno = '{0}' ", ContractNo );
//sql.AppendFormat(@" )
//group by porderid, poorderno
//having sum(fstockinqty) - sum(fqty) >= 0 ");
            DynamicObjectCollection orderCol = DBUtils.ExecuteDynamicObject(ctx, strSql);

            if (orderCol.Count() > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
            // throw new NotImplementedException();
        }
        /// <summary>
        /// 同步销售订单
        /// </summary>
        /// <param name="saleBIllNos"></param>
        /// <param name="ctx"></param>
        public string SyncSaleBill(Context ctx, string saleBIllNos)
        {
            //获取同步销售订单的数据
            string strSql = string.Format(@"/*dialect*/SELECT FID, FSALBILLNO, FDATE, FORGNO, FCUSTNO, FPROJECTNO, FREMARK
                                                         FROM SALE_MAIN
                                                         WHERE FSALBILLNO in ({0})", saleBIllNos);
            DynamicObjectCollection queryResult = DBUtils.ExecuteDynamicObject(ctx, strSql) as DynamicObjectCollection;

            if (queryResult != null && queryResult.Count() > 0)
            {
                foreach (DynamicObject qResult in queryResult)
                {
                    saveSaleBill(ctx, qResult);
                }
            }
            return(null);
        }
Exemple #7
0
 public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
 {
     base.AfterExecuteOperationTransaction(e);
     if (e.DataEntitys != null && e.DataEntitys.Count <DynamicObject>() > 0)
     {
         foreach (DynamicObject item in e.DataEntitys)
         {
             long materialId = Convert.ToInt64(item["id"]);
             //查询批号主档,确认该物料是否在系统中存在历史批号
             //通过物料id获取masterID
             string masterSql = string.Format(@"/*dialect*/SELECT FMASTERID FROM T_BD_MATERIAL WHERE FMATERIALID = {0}", materialId);
             long   masterId  = DBUtils.ExecuteScalar <long>(this.Context, masterSql, 0, null);
             if (masterId != 0)
             {
                 //通过masterId获取所有materialIds
                 string materialidSql        = string.Format(@"/*dialect*/SELECT FMATERIALID FROM T_BD_MATERIAL WHERE FMASTERID = {0}", masterId);
                 DynamicObjectCollection doc = DBUtils.ExecuteDynamicObject(this.Context, materialidSql) as DynamicObjectCollection;
                 string materialIds          = "";
                 foreach (DynamicObject dt in doc)
                 {
                     materialIds += "," + Convert.ToInt64(dt["FMATERIALID"]) + "";
                 }
                 materialIds = materialIds.Substring(1);
                 string phSql  = string.Format(@"/*dialect*/ SELECT FNUMBER FROM T_BD_LOTMASTER WHERE FMATERIALID in ({0})", materialIds);
                 string result = DBUtils.ExecuteScalar <string>(this.Context, phSql, "noResult", null);
                 DynamicObjectCollection phcol = DBUtils.ExecuteDynamicObject(this.Context, phSql) as DynamicObjectCollection;
                 if (phcol.Count() <= 0)
                 {
                     //更新语句
                     string strSql = string.Format(@"/*dialect*/UPDATE T_BD_MATERIALINVPTY SET FISAFFECTCOST=1 WHERE FINVPTYID=10004 and FISENABLE=1 and FISAFFECTCOST=0 and FMATERIALID = {0}", materialId);
                     DBUtils.Execute(this.Context, strSql);
                 }
                 ////批号主档没有对应物料批号
                 //if (result.Equals("noResult"))
                 //{
                 //    //更新语句
                 //    string strSql = string.Format(@"/*dialect*/UPDATE T_BD_MATERIALINVPTY SET FISAFFECTCOST=1 WHERE FINVPTYID=10004 and FISENABLE=1 and FISAFFECTCOST=0 and FMATERIALID = {0}", materialId);
                 //    DBUtils.Execute(this.Context, strSql);
                 //}
             }
         }
     }
 }
Exemple #8
0
        private void GetNonSychroRevSalOrder(Context ctx, DateTime begin, DateTime end)
        {
            DateTime firstDay = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
            string   sql      = string.Format(@"/*dialect*/ select distinct FBillNo,FDate,j.FNUMBER as custNo,o.FNumber,F_HS_RateToUSA,a.F_HS_TransactionID,d.FBillAmount,q.FNUMBER as paymentMehtod
                                                    from T_SAL_ORDER a 
                                                    inner join T_SAL_ORDERENTRY b on b.FID = a.FID
                                                    inner join T_SAL_ORDERENTRY_F c on c.FENTRYID = b.FENTRYID and c.FID = b.FID
                                                    inner join T_SAL_ORDERFIN d on d.FID = a.FID
                                                    inner join T_BD_CUSTOMER e on e.FCUSTID= a.FCUSTID
                                                    inner join T_BAS_ASSISTANTDATAENTRY_L f ON a.F_HS_SaleOrderSource=f.FENTRYID
                                                    inner join T_BAS_ASSISTANTDATAENTRY g ON f.FentryID=g.FentryID
                                                    left join T_BAS_BILLTYPE h on a.FBILLTypeID=h.FBILLTypeID
													inner join T_ORG_ORGANIZATIONS z on a.FSALEORGID=z.FORGID
													inner join T_BD_CUSTOMER j on j.FCUSTID = a.F_HS_B2CCUSTID
													inner join T_BD_CURRENCY o on o.FCURRENCYID = d.FSettleCurrId
													inner join T_BAS_ASSISTANTDATAENTRY_L p ON a.F_HS_PaymentModeNew=p.FENTRYID
                                                    inner join T_BAS_ASSISTANTDATAENTRY q ON q.FentryID=p.FentryID
                                                    where a.FDOCUMENTSTATUS = 'C'and a.FsaleOrgID = 100035 and a.FCANCELSTATUS<>'B' and h.FNUMBER='XSDD01_SYS' and z.FNUMBER='100.01' and g.FNUMBER = 'HCWebProcessingOder'
													and a.FCREATEDATE between '{0} 00:00:00' and getdate()
                                                    and a.fbillno not in 
													(select l.FRECEIVEITEM from T_AR_RECEIVEBILL k
													inner join  T_AR_RECEIVEBILLENTRY l on l.FID = K.FID
													where k.FCREATEDATE between '{1} 00:00:00' and getdate()
													and l.FRECEIVEITEM not like 'SO%' and l.FRECEIVEITEM <> '')"                                                    , firstDay, firstDay

                                              );
            DynamicObjectCollection coll = SQLUtils.GetObjects(ctx, sql);

            if (coll != null && coll.Count() > 0)
            {
                foreach (var item in coll)
                {
                    if (item != null)
                    {
                    }
                }
            }
        }
        public List <DateTime> getDateListByContract(Context ctx, string ContractNo, string o)
        {
            StringBuilder   sql  = new StringBuilder();
            List <DateTime> list = new List <DateTime>();

            sql.AppendFormat(@"   ---采购入库单 --采购订单 --收料通知单
select distinct inst.fapprovedate instdate, recbill.fapprovedate recbilldate, inst.fdate, inste.FSRCBILLNO,FSRCROWID,FSRCBILLTYPEID,recbill.fbillno
from t_STK_InStock inst    --采购入库单
inner join T_STK_INSTOCKENTRY    inste on inst.fid=inste.fid   ---采购入库单明细
inner join  t_PUR_POOrderEntry  orderentry on   orderentry.fentryid=   inste.FPOORDERENTRYID   ---采购订单明细分录
inner join t_PUR_POOrder poorder  on poorder.fid=orderentry.fid   --采购订单单据头
inner join t_Stk_Instockentry_Lk lk on lk.fentryid=inste.fentryid  ---采购入库单关联关系表
inner join  T_PUR_ReceiveEntry recrentry on lk.fsid=recrentry.fentryid and recrentry.fid=lk.fsbillid --采购收料通知单 明细
inner join T_PUR_Receive recbill on recbill.fid =recrentry.fid  --采购收入通知单头
where   inst.fapprovedate is not null and  poorder.fbillno='{0}' ,", ContractNo);
            sql.AppendFormat(@" order by recbill.fapprovedate desc, inst.fapprovedate desc ");
            DynamicObjectCollection orderCol = DBUtils.ExecuteDynamicObject(ctx, sql.ToString());

            if (orderCol.Count() > 0)
            {
                if (orderCol[0]["instdate"] != null)
                {
                    list.Add(Convert.ToDateTime(orderCol[0]["instdate"]));
                }

                if (orderCol[0]["recbilldate"] != null)
                {
                    list.Add(Convert.ToDateTime(orderCol[0]["recbilldate"]));
                }
            }
            else
            {
                return(null);
            }
            return(null);
        }