Пример #1
0
        public override AbsSynchroDataInfo BuildSynchroData(Context ctx, string json, AbsSynchroDataInfo data = null)
        {
            K3SalOrderInfo so   = null;
            JObject        jobj = JsonUtils.ParseJson2JObj(ctx, this.DataType, json);

            if (jobj != null)
            {
                so = new K3SalOrderInfo();
                string payStatus = JsonUtils.GetFieldValue(jobj, "order_status");

                if ("1".Equals(payStatus))
                {
                    so.F_HS_SaleOrderSource = "HCWebPendingOder"; //订单来源
                    so.F_HS_PaymentStatus   = "2";                //未付款
                }
                else if ("2".Equals(payStatus))
                {
                    so.F_HS_SaleOrderSource = "HCWebProcessingOder"; //订单来源
                    so.F_HS_PaymentStatus   = "3";                   //已到款
                }
                so.FBillNo             = JsonUtils.GetFieldValue(jobj, "orders_id");
                so.F_HS_PaymentModeNew = JsonUtils.GetFieldValue(jobj, "payment");

                so.F_HS_IsSameAdress = IsSameAddress(ctx, so, jobj);
            }

            return(so);
        }
Пример #2
0
        public override List <K3SalOrderInfo> GetSelectedSalOrders(Context ctx)
        {
            K3SalOrderInfo order = new K3SalOrderInfo();
            DynamicObject  obj   = null;

            obj = this.View.Model.GetValue("FBillTypeId") as DynamicObject;
            order.FBillTypeId = SQLUtils.GetFieldValue(obj, "Number");

            order.FBillNo         = GetValue("FBillNo");
            order.FDocumentStatus = GetValue("FDocumentStatus");

            order.FCloseStatus       = GetValue("FCloseStatus");
            order.FCancelStatus      = GetValue("FCancelStatus");
            order.F_HS_PaymentStatus = GetValue("F_HS_PaymentStatus");

            obj = this.View.Model.GetValue("F_HS_B2CCustId") as DynamicObject;
            order.F_HS_B2CCustId = SQLUtils.GetFieldValue(obj, "Number");

            List <K3SalOrderInfo> orders = new List <K3SalOrderInfo>()
            {
                order
            };

            return(orders);
        }
Пример #3
0
        /// <summary>
        /// 数据库查询需要生成收款单对应销售订单的信息
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="orderNos"></param>
        /// <returns></returns>
        private List <K3SalOrderInfo> GetSalOrdersByDb(Context ctx, List <string> orderNos)
        {
            List <K3SalOrderInfo> orders = null;;
            K3SalOrderInfo        order  = null;

            if (orderNos != null && orderNos.Count > 0)
            {
                string sql = string.Format(@"/*dialect*/ select distinct FBillNo,FDate,j.FNUMBER  as FCUSTID,j.FNUMBER  as F_HS_B2CCustId,m.FNUMBER as FSalerId,n.FNUMBER as FSALEDEPTID,z.FNUMBER as FSaleOrgId,o.FNumber as FSettleCurrId,F_HS_RateToUSA,a.F_HS_TransactionID,F_HS_PayTotal,q.FNUMBER as F_HS_PaymentModeNew
			                                    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
												inner join V_BD_SALESMAN m on m.FID = a.FSALERID
												inner join T_BD_DEPARTMENT n on n.FDEPTID = m.FDEPTID
			                                    where a.FCANCELSTATUS<>'B' 
			                                    and h.FNUMBER='XSDD01_SYS' 
			                                    and z.FNUMBER='100.01'
			                                    and a.FBILLNO in('{0}')"            , string.Join("','", orderNos));

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

                if (coll != null && coll.Count > 0)
                {
                    orders = new List <K3SalOrderInfo>();

                    foreach (var item in coll)
                    {
                        if (item != null)
                        {
                            order = new K3SalOrderInfo();

                            order.FBillNo             = SQLUtils.GetFieldValue(item, "FBILLNO");
                            order.FDate               = Convert.ToDateTime(SQLUtils.GetFieldValue(item, "FDATE"));
                            order.FCustId             = SQLUtils.GetFieldValue(item, "FCUSTID");
                            order.F_HS_B2CCustId      = SQLUtils.GetFieldValue(item, "F_HS_B2CCustId");
                            order.FSalerId            = SQLUtils.GetFieldValue(item, "FSalerId");
                            order.FSaleDeptId         = SQLUtils.GetFieldValue(item, "FSALEDEPTID");
                            order.FSaleOrgId          = SQLUtils.GetFieldValue(item, "FSaleOrgId");
                            order.FSettleCurrId       = SQLUtils.GetFieldValue(item, "FSettleCurrId");
                            order.F_HS_PaymentModeNew = SQLUtils.GetFieldValue(item, "F_HS_PaymentModeNew");
                            order.F_HS_TransactionID  = SQLUtils.GetFieldValue(item, "F_HS_TransactionID");
                            order.F_HS_PayTotal       = SQLUtils.GetFieldValue(item, "F_HS_PayTotal");
                            order.F_HS_RateToUSA      = Convert.ToDecimal(SQLUtils.GetFieldValue(item, "F_HS_RateToUSA"));

                            orders.Add(order);
                        }
                    }
                }
            }
            return(orders);
        }
Пример #4
0
        private JArray BuildBillSkdRecEntry(K3SalOrderInfo order)
        {
            JArray FBILLSKDRECENTRY = null;

            if (order != null)
            {
            }

            return(FBILLSKDRECENTRY);
        }
Пример #5
0
        /// <summary>
        /// 判断单据是否有下游单据
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="order"></param>
        /// <returns></returns>
        public virtual bool IsPush(Context ctx, K3SalOrderInfo order)
        {
            DynamicObjectCollection coll = null;

            if (order != null)
            {
                string sql = string.Format(@" /*dialect*/select h.FBILLNO, b.F_HS_UnUSATruePrice, a.F_HS_RateToUSA 
                                                        from T_SAL_DELIVERYNOTICE a 
                                                        inner join T_SAL_DELIVERYNOTICEENTRY b on a.fid=b.fid
                                                        inner join T_SAL_DELIVERYNOTICEENTRY_LK f on b.fentryid=f.fentryid
                                                        inner join T_SAL_OrderEntry g on  f.fsbillID=g.fid and f.fsid=g.fentryID
                                                        inner join T_SAL_Order h on g.fid=h.fid
                                                        where h.FBILLNO='{0}'", order.FBillNo
                                           );
                coll = SQLUtils.GetObjects(ctx, sql);
            }

            return((coll != null && coll.Count > 0) ? true : false);
        }
Пример #6
0
        public List <string> GetSelectedSalOrderNos()
        {
            ListSelectedRowCollection rows    = this.ListView.SelectedRowsInfo;
            List <string>             billNos = null;
            List <K3SalOrderInfo>     orders  = null;
            K3SalOrderInfo            order   = null;

            if (rows != null && rows.Count > 0)
            {
                orders  = new List <K3SalOrderInfo>();
                billNos = new List <string>();

                foreach (var row in rows)
                {
                    if (row != null)
                    {
                        order = new K3SalOrderInfo();
                        billNos.Add(row.BillNo);
                    }
                }
            }
            return(billNos);
        }
Пример #7
0
        public List <K3SalOrderInfo> GetOrders(List <DynamicObject> dynObjects)
        {
            List <K3SalOrderInfo> orders = null;
            K3SalOrderInfo        order  = null;

            if (dynObjects != null && dynObjects.Count > 0)
            {
                orders = new List <K3SalOrderInfo>();

                foreach (var obj in dynObjects)
                {
                    if (obj != null)
                    {
                        order = new K3SalOrderInfo();

                        order.F_HS_B2CCustId = SQLUtils.GetCustomerNo(this.Context, obj, "F_HS_B2CCustId_Id");
                        order.FBillNo        = SQLUtils.GetFieldValue(obj, "BillNo");

                        orders.Add(order);
                    }
                }
            }
            return(orders);
        }
Пример #8
0
        public override List <K3SalOrderInfo> GetSelectedSalOrders(Context ctx)
        {
            List <K3SalOrderInfo> orders = null;
            K3SalOrderInfo        order  = null;

            List <string>           billNos = GetSelectedSalOrderNos();
            DynamicObjectCollection coll    = GetCollection(ctx, billNos);

            var groups = from o in coll
                         group o by o["FBillNo"] into g
                         select g;

            if (groups != null && groups.Count() > 0)
            {
                orders = new List <K3SalOrderInfo>();

                foreach (var group in groups)
                {
                    if (group != null && group.Count() > 0)
                    {
                        order                       = new K3SalOrderInfo();
                        order.FBillNo               = SQLUtils.GetFieldValue(group.ElementAt(0), "FBillNo");
                        order.FDocumentStatus       = SQLUtils.GetFieldValue(group.ElementAt(0), "FDOCUMENTSTATUS");
                        order.FCloseStatus          = SQLUtils.GetFieldValue(group.ElementAt(0), "FCLOSESTATUS");
                        order.FCancelStatus         = SQLUtils.GetFieldValue(group.ElementAt(0), "FCANCELSTATUS");
                        order.F_HS_PaymentStatus    = SQLUtils.GetFieldValue(group.ElementAt(0), "F_HS_PAYMENTSTATUS");
                        order.F_HS_B2CCustId        = SQLUtils.GetCustomerNo(ctx, group.ElementAt(0), "F_HS_B2CCustId");
                        order.F_HS_RecipientCountry = SQLUtils.GetCountryNo(ctx, group.ElementAt(0), "F_HS_RECIPIENTCOUNTRY");
                        order.FSettleCurrId         = SQLUtils.GetSettleCurrNo(ctx, group.ElementAt(0), "FSETTLECURRID");
                    }

                    orders.Add(order);
                }
            }
            return(orders);
        }
Пример #9
0
        /// <summary>
        /// 获取销售订单
        /// </summary>
        /// <param name="coll"></param>
        /// <returns></returns>
        private List <K3SalOrderInfo> GetK3SalOrderInfo(DynamicObjectCollection coll)
        {
            K3SalOrderInfo        order  = null;
            List <K3SalOrderInfo> orders = null;

            if (coll != null && coll.Count > 0)
            {
                orders = new List <K3SalOrderInfo>();

                foreach (var obj in coll)
                {
                    if (obj != null)
                    {
                        if (SQLUtils.GetFieldValue(obj, "FBillNo").StartsWith("SO"))
                        {
                            order = new K3SalOrderInfo();

                            order.SrcNo   = SQLUtils.GetFieldValue(obj, "FBillNo");
                            order.FBillNo = SQLUtils.GetFieldValue(obj, "FBillNo");                                   //订单号
                            order.F_HS_OriginOnlineOrderNo = SQLUtils.GetFieldValue(obj, "F_HS_OriginOnlineOrderNo"); //原线下订单单号
                            order.FDate = Convert.ToDateTime(SQLUtils.GetFieldValue(obj, "FDate"));                   //订单日期

                            order.PurseDate      = TimeHelper.GetTimeStamp(order.FDate);
                            order.FCustId        = SQLUtils.GetFieldValue(obj, "FCUSTID");                                                           //客户编码
                            order.F_HS_B2CCustId = SQLUtils.GetFieldValue(obj, "F_HS_B2CCustId");                                                    //客户真是编码
                            order.FSalerId       = SQLUtils.GetSellerNo(this.K3CloudContext, obj, "FSalerId");                                       //销售员编码

                            order.OrderSource = SQLUtils.GetFieldValue(obj, "F_HS_SaleOrderSource");                                                 //订单来源

                            order.FSettleCurrId  = SQLUtils.GetFieldValue(obj, "FSettleCurrId");                                                     //结算币别
                            order.F_HS_RateToUSA = Convert.ToDecimal(SQLUtils.GetFieldValue(obj, "F_HS_RateToUSA"));                                 //汇率

                            order.F_HS_RecipientCountry  = SQLUtils.GetFieldValue(obj, "F_HS_RecipientCountry");                                     //国家
                            order.F_HS_DeliveryProvinces = SQLUtils.GetFieldValue(obj, "F_HS_DeliveryProvinces");                                    //省份/州

                            order.F_HS_DeliveryCity    = SQLUtils.GetFieldValue(obj, "F_HS_DeliveryCity");                                           //城市
                            order.F_HS_DeliveryAddress = SQLUtils.GetFieldValue(obj, "F_HS_DeliveryAddress");                                        //具体地址

                            order.F_HS_PostCode     = SQLUtils.GetFieldValue(obj, "F_HS_PostCode");                                                  //邮编
                            order.F_HS_DeliveryName = SQLUtils.GetFieldValue(obj, "F_HS_DeliveryName");                                              //收货人姓名

                            order.F_HS_BillAddress = SQLUtils.GetFieldValue(obj, "F_HS_BillAddress");                                                //账单地址
                            order.F_HS_MobilePhone = SQLUtils.GetFieldValue(obj, "F_HS_MobilePhone");                                                //收货人联系电话

                            order.F_HS_ShippingMethod = SQLUtils.GetFieldValue(obj, "F_HS_ShippingMethod");                                          //发货方式
                            order.F_HS_PaymentModeNew = SQLUtils.GetFieldValue(obj, "F_HS_PaymentModeNew");                                          //付款方式

                            order.F_HS_PaymentStatus = SQLUtils.GetFieldValue(obj, "F_HS_PaymentStatus");                                            //付款状态
                            order.F_HS_Shipping      = Convert.ToDecimal(SQLUtils.GetFieldValue(obj, "F_HS_Shipping"));                              //运费

                            order.FCustLevel = SQLUtils.GetFieldValue(obj, "F_HS_FGroup");                                                           //分组
                            order.FNote      = SQLUtils.GetFieldValue(obj, "FNOTE");                                                                 //备注

                            order.F_HS_Channel      = SQLUtils.GetFieldValue(obj, "F_HS_OnlineOrderWay");                                            //订单渠道
                            order.F_HS_CouponAmount = Convert.ToDecimal(SQLUtils.GetFieldValue(obj, "F_HS_CouponAmount"));                           //优惠金额

                            order.F_HS_IntegralDeduction = Convert.ToDecimal(SQLUtils.GetFieldValue(obj, "F_HS_IntegralDeduction"));                 //积分金额
                            order.F_HS_DiscountedAmount  = Convert.ToDecimal(SQLUtils.GetFieldValue(obj, "F_HS_DiscountedAmount"));                  //已优惠金额
                            order.FApproveDate           = TimeHelper.GetTimeStamp(Convert.ToDateTime(SQLUtils.GetFieldValue(obj, "FApproveDate"))); //订单审核时间

                            order.F_HS_CollectionTime = Convert.ToDateTime(SQLUtils.GetFieldValue(obj, "F_HS_CollectionTime"));                      //CEO特批已到款时间
                            order.PayedTime           = TimeHelper.GetTimeStamp(order.F_HS_CollectionTime);                                          //CEO特批已到款时间(时间戳)

                            K3SalOrderEntryInfo entry = new K3SalOrderEntryInfo();

                            entry.FMaterialId         = SQLUtils.GetFieldValue(obj, "FMaterialId");                                            //物料编码
                            entry.FTAXPRICE           = Convert.ToDecimal(SQLUtils.GetFieldValue(obj, "FTAXPRICE"));                           //单价
                            entry.FTAXAmt             = Convert.ToDecimal(SQLUtils.GetFieldValue(obj, "FAmount"));                             //商品总价
                            entry.FQTY                = Convert.ToDecimal(SQLUtils.GetFieldValue(obj, "FQTY"));                                //数量
                            entry.FStockId            = SQLUtils.GetFieldValue(obj, "F_HS_StockID");                                           //仓库地理编码
                            entry.F_HS_IsVirtualEntry = SQLUtils.GetFieldValue(obj, "F_HS_IsVirtualEntry").CompareTo("1") == 1 ? true : false; //是否虚拟
                            entry.F_HS_IsEmptyStock   = SQLUtils.GetFieldValue(obj, "F_HS_IsEmptyStock").CompareTo("1") == 1 ? true : false;   //是否清仓
                            entry.FIsFree             = SQLUtils.GetFieldValue(obj, "FIsFree").CompareTo("1") == 1 ? true : false;             //是否为赠品

                            order.OrderEntry.Add(entry);
                            orders.Add(order);
                        }
                    }
                }
            }
            return(orders);
        }
Пример #10
0
        /// <summary>
        /// 获取销售订单明细
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="fieldName"></param>
        /// <returns></returns>
        private List <K3SalOrderEntryInfo> GetOrderEntry(DynamicObject obj, string fieldName, K3SalOrderInfo order)
        {
            List <K3SalOrderEntryInfo> entries = null;
            K3SalOrderEntryInfo        entry   = null;

            if (obj != null && !string.IsNullOrWhiteSpace(fieldName))
            {
                DynamicObjectCollection coll = obj[fieldName] as DynamicObjectCollection;

                if (coll != null && coll.Count > 0)
                {
                    entries = new List <K3SalOrderEntryInfo>();
                    foreach (var item in coll)
                    {
                        if (SQLUtils.GetMaterialNo(this.Context, item, "MaterialID_Id").CompareTo("99.01") != 0)
                        {
                            entry             = new K3SalOrderEntryInfo();
                            entry.FMaterialId = SQLUtils.GetMaterialNo(this.Context, item, "MaterialID_Id");                    //物料编码
                            entry.FTAXPRICE   = Convert.ToDecimal(SQLUtils.GetFieldValue(item, "TaxPrice"));                    //单价
                            entry.FTAXAmt     = Convert.ToDecimal(SQLUtils.GetFieldValue(item, "AllAmount"));
                            entry.FQTY        = Convert.ToDecimal(SQLUtils.GetFieldValue(item, "Qty"));                         //数量
                            entry.FStockId    = SQLUtils.GetStockNo(this.Context, item, "F_HS_StockID_Id");                     //仓库编码

                            entry.F_HS_IsVirtualEntry = Convert.ToBoolean(SQLUtils.GetFieldValue(item, "F_HS_IsVirtualEntry")); //是否为虚拟
                            entry.FIsFree             = Convert.ToBoolean(SQLUtils.GetFieldValue(item, "IsFree"));              //是否为赠品
                            entry.F_HS_IsEmptyStock   = Convert.ToBoolean(SQLUtils.GetFieldValue(item, "F_HS_IsEmptyStock"));   //是否为清仓

                            entries.Add(entry);
                        }
                        else
                        {
                            order.F_HS_Shipping = Convert.ToDecimal(SQLUtils.GetFieldValue(item, "AllAmount"));//运费
                        }

                        order.F_HS_Subtotal += Convert.ToDecimal(SQLUtils.GetFieldValue(item, "AllAmount"));//产品总金额
                    }
                }
            }

            return(entries);
        }
Пример #11
0
        /// <summary>
        /// 判断销售订单状态
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="orders"></param>
        /// <returns></returns>
        private string JudgeSalOrderStatus(Context ctx, List <K3SalOrderInfo> orders)
        {
            string message = string.Empty;

            if (orders != null && orders.Count > 0)
            {
                for (int i = 0; i < orders.Count; i++)
                {
                    K3SalOrderInfo order = orders[i];

                    if (order != null)
                    {
                        if (i < orders.Count - 1)
                        {
                            if (order.FDocumentStatus.CompareTo(BillDocumentStatus.Auditing) == 0)
                            {
                                message += "销售订单【" + order.FBillNo + "】状态为审核中,请先撤销" + System.Environment.NewLine;
                            }
                            if (order.FDocumentStatus.CompareTo(BillDocumentStatus.Audit) == 0)
                            {
                                if (IsPush(ctx, order))
                                {
                                    message += "销售订单【" + order.FBillNo + "】有下游单据,请先删除下游单据" + System.Environment.NewLine;
                                }
                                else
                                {
                                    message += "销售订单【" + order.FBillNo + "】状态为已审核,请先反审核" + System.Environment.NewLine;
                                }
                            }
                            if (order.FCloseStatus.CompareTo(BillCloseStatus.Close) == 0)
                            {
                                message += "销售订单【" + order.FBillNo + "】状态为已关闭,不能参与改单或合单" + System.Environment.NewLine;
                            }
                            if (order.FCancelStatus.CompareTo(BillCancelStatus.Cancel) == 0)
                            {
                                message += "销售订单【" + order.FBillNo + "】状态为已作废,不能参与改单或合单" + System.Environment.NewLine;
                            }
                            if (order.F_HS_PaymentStatus.CompareTo("3") == 0 || order.F_HS_PaymentStatus.CompareTo("1") == 0)
                            {
                                message += "销售订单【" + order.FBillNo + "】付款状态为已付款!" + System.Environment.NewLine;
                            }
                        }
                        else if (i == orders.Count - 1)
                        {
                            if (order.FDocumentStatus.CompareTo(BillDocumentStatus.Auditing) == 0)
                            {
                                message += "销售订单【" + order.FBillNo + "】状态为审核中,请先撤销";
                            }
                            if (order.FDocumentStatus.CompareTo(BillDocumentStatus.Audit) == 0)
                            {
                                if (IsPush(ctx, order))
                                {
                                    message += "销售订单【" + order.FBillNo + "】有下游单据,请先删除下游单据";
                                }
                                else
                                {
                                    message += "销售订单【" + order.FBillNo + "】状态为已审核,请先反审核";
                                }
                            }
                            if (order.FCloseStatus.CompareTo(BillCloseStatus.Close) == 0)
                            {
                                message += "销售订单【" + order.FBillNo + "】状态为已关闭,不能参与改单或合单";
                            }
                            if (order.FCancelStatus.CompareTo(BillCancelStatus.Cancel) == 0)
                            {
                                message += "销售订单【" + order.FBillNo + "】状态为已作废,不能参与改单或合单";
                            }
                            if (order.F_HS_PaymentStatus.CompareTo("3") == 0 || order.F_HS_PaymentStatus.CompareTo("1") == 0)
                            {
                                message += "销售订单【" + order.FBillNo + "】付款状态为已付款!" + System.Environment.NewLine;
                            }
                        }
                    }
                }
            }
            return(message);
        }
Пример #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="customerNo">客户编码</param>
        /// <param name="customerLevel">客户等级(1-8,默认1)</param>
        /// <param name="countryNo">国家编码</param>
        /// <param name="city">城市</param>
        /// <param name="zipCode">邮编</param>
        /// <param name="currencyNo">币别</param>
        /// <param name="inLogisWay">发货方式</param>
        public static Dictionary <string, string> GetFreight(Context ctx, AbsSynchroDataInfo info)
        {
            #region 参数
            Dictionary <string, object> dict = null;

            if (info != null)
            {
                K3SalOrderInfo order = info as K3SalOrderInfo;

                if (order != null)
                {
                    long   timeStamp = GetTimeStamp(DateTime.Now);                                              //时间戳
                    string phpKey    = "ERPSHIPPINGFREE";                                                       //签名key
                    string signMsg   = MD5Encrypt(order.FCustId + timeStamp + phpKey, Encoding.UTF8).ToUpper(); //签名(需大写)

                    JSONObject jObj = new JSONObject();
                    jObj.Add("customer_id", order.FCustId);
                    jObj.Add("whole", !string.IsNullOrWhiteSpace(order.FCustLevel) ? order.FCustLevel.Substring(order.FCustLevel.Length - 1, 1) : "");
                    jObj.Add("country", order.F_HS_RecipientCountry.ToUpper()); //国家代号(例如:US)
                    jObj.Add("city", order.F_HS_DeliveryCity);                  //收货地址城市
                    jObj.Add("code", order.F_HS_PostCode);                      //收货地址邮编
                    jObj.Add("currency", order.FSettleCurrId);                  //货币类型(例如:USD)(首字母要大写)
                    jObj.Add("time_stamp", timeStamp);                          //时间戳
                    jObj.Add("signMsg", signMsg);                               //签名

                    JSONArray  rows      = null;
                    JSONObject products  = null;
                    JSONObject row       = null;
                    string     dlcHSName = string.Empty;

                    if (order.OrderEntry != null && order.OrderEntry.Count > 0)
                    {
                        var groups = from o in order.OrderEntry
                                     where !string.IsNullOrWhiteSpace(o.FMaterialId) && !string.IsNullOrWhiteSpace(o.FStockId)
                                     group o by o.FStockId
                                     into g
                                     select g;

                        if (groups != null && groups.Count() > 0)
                        {
                            products = new JSONObject();

                            foreach (var group in groups)
                            {
                                if (group != null && group.Count() > 0)
                                {
                                    rows      = new JSONArray();
                                    dlcHSName = GetStockName(ctx, group.FirstOrDefault().FStockId);

                                    foreach (var item in group)
                                    {
                                        if (item != null && !item.FMaterialId.StartsWith("99."))
                                        {
                                            row = new JSONObject();
                                            row.Add("fix_id", item.FMaterialId);
                                            row.Add("quantity", item.FQTY);

                                            rows.Add(row);
                                        }
                                    }

                                    if (!string.IsNullOrWhiteSpace(dlcHSName) && rows.Count > 0)
                                    {
                                        products.Add(dlcHSName, rows);
                                    }
                                }
                            }

                            jObj.Add("products", products);
                        }
                    }

                    #endregion
                    StringBuilder sb = new StringBuilder();
                    List <Dictionary <string, string> > lstDic = CommonMethod.GetFreight(ctx, jObj, out sb);

                    if (lstDic != null && lstDic.Count > 0)
                    {
                        foreach (var dic in lstDic)
                        {
                            if (dic.ContainsKey("F_HS_FreAmount") || dic.ContainsKey("F_HS_FreTiltle") || dic.ContainsKey("F_HS_AmountNoteUSD"))
                            {
                                return(dic);
                            }
                        }
                    }
                }
            }

            return(null);
        }
Пример #13
0
        public override IEnumerable <AbsSynchroDataInfo> GetK3Datas(Context ctx, List <DynamicObject> objects, ref HttpResponseResult result)
        {
            K3SalOrderInfo        order  = null;
            List <K3SalOrderInfo> orders = null;

            result         = new HttpResponseResult();
            result.Success = true;

            if (objects != null && objects.Count > 0)
            {
                orders = new List <K3SalOrderInfo>();

                foreach (var item in objects)
                {
                    if (item != null)
                    {
                        if (SQLUtils.GetBillTypeNo(this.Context, item, "BillTypeId_Id").CompareTo("XSDD01_SYS") == 0 && SQLUtils.GetSaleOrderSourceNo(this.Context, item, "F_HS_SaleOrderSource_Id").CompareTo("XXBJDD") == 0 &&
                            SQLUtils.GetFieldValue(item, "DocumentStatus").CompareTo("C") == 0 && SQLUtils.GetFieldValue(item, "BillNo").StartsWith("SO") &&
                            !SQLUtils.GetFieldValue(item, "BillNo").Contains("_") && SQLUtils.GetFieldValue(item, "SaleOrgId_Id").CompareTo("100035") == 0)
                        {
                            order = new K3SalOrderInfo();

                            K3SaleOrderFinance finance = GetOrderFinance(item, "SaleOrderFinance");//财务信息

                            order.SrcNo   = SQLUtils.GetFieldValue(item, "BillNo");
                            order.FBillNo = SQLUtils.GetFieldValue(item, "BillNo");                                    //订单号
                            order.F_HS_OriginOnlineOrderNo = SQLUtils.GetFieldValue(item, "F_HS_OriginOnlineOrderNo"); //原线上订单单号
                            order.FDate     = Convert.ToDateTime(SQLUtils.GetFieldValue(item, "Date"));                //订单日期
                            order.PurseDate = TimeHelper.GetTimeStamp(order.FDate);                                    //订单日期(时间戳)
                            order.FNote     = SQLUtils.GetFieldValue(item, "FNote");                                   //备注

                            DynamicObject cust = item["CustId"] as DynamicObject;                                      //客户
                            order.FCustId = SQLUtils.GetFieldValue(cust, "Number");

                            DynamicObject realCust = item["F_HS_B2CCustId"] as DynamicObject;//客户真实ID
                            order.F_HS_B2CCustId = SQLUtils.GetFieldValue(realCust, "Number");

                            DynamicObject saler = item["SalerId"] as DynamicObject;
                            order.FSalerId = SQLUtils.GetFieldValue(saler, "Number");

                            DynamicObject source = item["F_HS_SaleOrderSource"] as DynamicObject;
                            order.OrderSource = SQLUtils.GetFieldValue(source, "FNumber");                          //订单来源

                            order.F_HS_PaymentStatus = SQLUtils.GetFieldValue(item, "F_HS_PaymentStatus");          //付款状态
                            order.FSettleCurrId      = finance.FSettleCurrID;                                       //结算币别

                            order.F_HS_RateToUSA = Convert.ToDecimal(SQLUtils.GetFieldValue(item, "ExchangeRate")); //汇率

                            DynamicObject country = item["F_HS_RecipientCountry"] as DynamicObject;
                            order.F_HS_RecipientCountry = SQLUtils.GetFieldValue(country, "Number");               //国家

                            order.F_HS_DeliveryProvinces = SQLUtils.GetFieldValue(item, "F_HS_DeliveryProvinces"); //省份
                            order.F_HS_DeliveryCity      = SQLUtils.GetFieldValue(item, "F_HS_DeliveryCity");      //城市

                            order.F_HS_DeliveryAddress = SQLUtils.GetFieldValue(item, "F_HS_DeliveryAddress");     //具体地址
                            order.F_HS_PostCode        = SQLUtils.GetFieldValue(item, "F_HS_PostCode");            //邮编

                            order.F_HS_DeliveryName = SQLUtils.GetFieldValue(item, "F_HS_DeliveryName");           //收货人
                            order.F_HS_BillAddress  = SQLUtils.GetFieldValue(item, "F_HS_BillAddress");            //账单地址

                            order.F_HS_MobilePhone    = SQLUtils.GetFieldValue(item, "F_HS_MobilePhone");          //联系人手机
                            order.F_HS_ShippingMethod = SQLUtils.GetFieldValue(item, "F_HS_ShippingMethod");       //发货方式

                            DynamicObject met = item["F_HS_PaymentModeNew"] as DynamicObject;
                            order.F_HS_PaymentModeNew = SQLUtils.GetFieldValue(met, "Number");                              //付款方式

                            order.FCustLevel = SQLUtils.GetCustGroupNo(this.Context, item, "F_HS_FGroup_Id");               //客户分组

                            order.FNote        = SQLUtils.GetFieldValue(item, "Note");                                      //备注
                            order.F_HS_Channel = SQLUtils.GetFieldValue(item, "F_HS_OnlineOrderWay");                       //下单方式

                            order.F_HS_CouponAmount = Convert.ToDecimal(SQLUtils.GetFieldValue(item, "F_HS_CouponAmount")); //优惠券金额
                            //order.F_HS_Shipping = Convert.ToDecimal(SQLUtils.GetFieldValue(item, "F_HS_Shipping"));//运费

                            order.F_HS_Points = Convert.ToDecimal(SQLUtils.GetFieldValue(item, "F_HS_Points"));                                                                           //积分

                            order.OrderEntry          = GetOrderEntry(item, "SaleOrderEntry", order);                                                                                     //订单明细
                            order.F_HS_Total          = order.F_HS_Subtotal - order.F_HS_CouponAmount - order.F_HS_IntegralDeduction - order.F_HS_DiscountedAmount + order.F_HS_Shipping; //优惠后金额
                            order.FApproveDate        = TimeHelper.GetTimeStamp(Convert.ToDateTime(SQLUtils.GetFieldValue(item, "ApproveDate")));
                            order.F_HS_CollectionTime = Convert.ToDateTime(SQLUtils.GetFieldValue(item, "F_HS_CollectionTime"));                                                          //CEO特批已到款时间
                            order.PayedTime           = TimeHelper.GetTimeStamp(order.F_HS_CollectionTime);                                                                               //CEO特批已到款时间(时间戳)
                            orders.Add(order);
                        }
                    }
                }
            }

            return(orders);
        }
Пример #14
0
        /// <summary>
        /// 获取未生成收款单的销售订单(定时任务)
        /// </summary>
        /// <param name="ctx"></param>
        /// <returns></returns>
        private List <K3SalOrderInfo> GetNonSynRevSalOrder(Context ctx)
        {
            List <K3SalOrderInfo> orders = null;
            K3SalOrderInfo        order  = null;

            string sql = string.Format(@"/*dialect*/ select distinct FBillNo,FDate,j.FNUMBER  as FCUSTID,j.FNUMBER  as F_HS_B2CCustId,m.FNUMBER as FSalerId,n.FNUMBER as FSALEDEPTID,z.FNUMBER as FSaleOrgId,o.FNumber as FSettleCurrId,F_HS_RateToUSA,a.F_HS_TransactionID,F_HS_PayTotal,q.FNUMBER as F_HS_PaymentModeNew
                                                    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
													inner join V_BD_SALESMAN m on m.FID = a.FSALERID
													inner join T_BD_DEPARTMENT n on n.FDEPTID = m.FDEPTID
                                                    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 >= DATEADD(MONTH,-1,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 >= DATEADD(MONTH,-1,GETDATE())
													and l.FRECEIVEITEM not like 'SO%' and l.FRECEIVEITEM <> '')"                                                    );

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

            if (coll != null && coll.Count > 0)
            {
                orders = new List <K3SalOrderInfo>();

                foreach (var item in coll)
                {
                    if (item != null)
                    {
                        order = new K3SalOrderInfo();

                        order.FBillNo             = SQLUtils.GetFieldValue(item, "FBillNo");
                        order.FDate               = Convert.ToDateTime(SQLUtils.GetFieldValue(item, "FDate"));
                        order.FCustId             = SQLUtils.GetFieldValue(item, "FCUSTID");
                        order.F_HS_B2CCustId      = SQLUtils.GetFieldValue(item, "FCUSTID");
                        order.FSalerId            = SQLUtils.GetFieldValue(item, "FSalerId");
                        order.FSaleDeptId         = SQLUtils.GetFieldValue(item, "FSALEDEPTID");
                        order.FSaleOrgId          = SQLUtils.GetFieldValue(item, "FSaleOrgId");
                        order.FSettleCurrId       = SQLUtils.GetFieldValue(item, "FSettleCurrId");
                        order.F_HS_RateToUSA      = Convert.ToDecimal(SQLUtils.GetFieldValue(item, "F_HS_RateToUSA"));
                        order.F_HS_TransactionID  = SQLUtils.GetFieldValue(item, "F_HS_TransactionID");
                        order.F_HS_PayTotal       = SQLUtils.GetFieldValue(item, "F_HS_PayTotal");
                        order.F_HS_PaymentModeNew = SQLUtils.GetFieldValue(item, "F_HS_PaymentModeNew");

                        orders.Add(order);
                    }
                }
            }

            return(orders);
        }
Пример #15
0
        /// <summary>
        /// 收款明细
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        private JArray BuildReceiveBillEntry(Context ctx, AbsSynchroDataInfo data)
        {
            JArray  FRECEIVEBILLENTRY = null;
            JObject baseData          = null;

            if (data != null)
            {
                if (data.GetType() == typeof(K3SalOrderInfo))
                {
                    K3SalOrderInfo order = data as K3SalOrderInfo;

                    FRECEIVEBILLENTRY = new JArray();
                    baseData          = new JObject();

                    JObject FSETTLETYPEID = new JObject();//结算方式"JSFS01_SYS"
                    FSETTLETYPEID.Add("FNumber", SQLUtils.GetSettleTypeNo(K3CloudContext, SQLUtils.GetPaymentMethodId(K3CloudContext, order.F_HS_PaymentModeNew)));
                    baseData.Add("FSETTLETYPEID", FSETTLETYPEID);

                    JObject FPURPOSEID = new JObject();//收款用途
                    FPURPOSEID.Add("FNumber", "SFKYT02_SYS");
                    baseData.Add("FPURPOSEID", FPURPOSEID);

                    baseData.Add("FRECEIVEITEMTYPE", "1");                                                //预收项目类型
                    baseData.Add("FRECEIVEITEM", order.FBillNo);                                          //销售订单
                    baseData.Add("FSaleOrderID", SQLUtils.GetSaleOrderId(K3CloudContext, order.FBillNo)); //销售订单内码


                    if (Convert.ToDecimal(order.F_HS_PayTotal) > 0)
                    {
                        if (order.FSettleCurrId.CompareTo("JPY") == 0)
                        {
                            baseData.Add("FRECTOTALAMOUNTFOR", Math.Truncate(Convert.ToDecimal(order.F_HS_PayTotal) * order.F_HS_RateToUSA));//财务实收金额
                        }
                        else
                        {
                            baseData.Add("FRECTOTALAMOUNTFOR", Convert.ToDecimal(order.F_HS_PayTotal) * order.F_HS_RateToUSA);//财务实收金额
                        }
                    }
                    else if (string.IsNullOrWhiteSpace(order.F_HS_PayTotal))
                    {
                        if (order.FSettleCurrId.CompareTo("JPY") == 0)
                        {
                            baseData.Add("FRECTOTALAMOUNTFOR", Math.Truncate(order.F_HS_Total));//财务实收金额
                        }
                        else
                        {
                            baseData.Add("FRECTOTALAMOUNTFOR", order.F_HS_Total);//财务实收金额
                        }
                    }

                    JObject FACCOUNTID = new JObject();//我方银行账号
                    FACCOUNTID.Add("FNumber", SQLUtils.GetBankAccountNo(K3CloudContext, SQLUtils.GetBankAccountId(K3CloudContext, order.F_HS_PaymentModeNew)));
                    baseData.Add("FACCOUNTID", FACCOUNTID);

                    baseData.Add("FSETTLENO", order.F_HS_TransactionID.Trim());//结算号

                    FRECEIVEBILLENTRY.Add(baseData);
                }
                else if (data.GetType() == typeof(AbsDataInfo))
                {
                    AbsDataInfo info = data as AbsDataInfo;

                    FRECEIVEBILLENTRY = new JArray();
                    baseData          = new JObject();

                    JObject FSETTLETYPEID = new JObject();//结算方式"JSFS01_SYS"
                    FSETTLETYPEID.Add("FNumber", info.FSettleTypeId);
                    baseData.Add("FSETTLETYPEID", FSETTLETYPEID);

                    JObject FPURPOSEID = new JObject();//收款用途
                    FPURPOSEID.Add("FNumber", "SFKYT02_SYS");
                    baseData.Add("FPURPOSEID", FPURPOSEID);

                    if (Convert.ToDecimal(info.FRealAmountFor) > 0)
                    {
                        baseData.Add("FRECTOTALAMOUNTFOR", info.FRealAmountFor);//财务实收金额
                    }

                    JObject FACCOUNTID = new JObject();//我方银行账号
                    FACCOUNTID.Add("FNumber", SQLUtils.GetBankAccountNo(K3CloudContext, SQLUtils.GetBankAccountId(K3CloudContext, info.FSettleTypeId)));
                    baseData.Add("FACCOUNTID", FACCOUNTID);

                    baseData.Add("FSETTLENO", "");//结算号
                    baseData.Add("F_HS_YNRecharge", false);
                    baseData.Add("F_HS_SynchronizedRecharge", false);

                    FRECEIVEBILLENTRY.Add(baseData);
                }
            }

            return(FRECEIVEBILLENTRY);
        }
Пример #16
0
        /// <summary>
        /// 获取全部线下订单
        /// </summary>
        /// <param name="flag"></param>
        /// <param name="saleOrderNo"></param>
        /// <returns></returns>
        public List <K3SalOrderInfo> GetAllSalOrders(bool flag = true, string saleOrderNo = null)
        {
            List <K3SalOrderInfo> orders = null;
            K3SalOrderInfo        order  = null;

            List <K3SalOrderEntryInfo> entries = null;
            string sql = string.Empty;

            if (flag)
            {
                sql = string.Format(@"/*dialect*/select FBillNo,F_HS_OriginOnlineOrderNo,FDate,a.FNOTE,r.FNUMBER  as FCUSTID,o.FNUMBER as F_HS_B2CCustId,FSalerId,g.FNUMBER as F_HS_SaleOrderSource,w.FNUMBER as FSettleCurrId,F_HS_RateToUSA,x.FNUMBER as F_HS_RecipientCountry,F_HS_DeliveryProvinces
                                        ,F_HS_DeliveryCity,F_HS_DeliveryAddress,F_HS_PostCode,F_HS_DeliveryName,F_HS_BillAddress,F_HS_MobilePhone,F_HS_ShippingMethod,n.FNUMBER as F_HS_PaymentModeNew          
                                        ,F_HS_PaymentStatus,F_HS_ShippingMethodRemark,F_HS_OnlineOrderWay,F_HS_CouponAmount,F_HS_IntegralDeduction,v.FNUMBER as FMaterialId,c.FTAXPRICE,FAmount,FQty,k.FNUMBER as F_HS_StockID
                                        ,F_HS_IsVirtualEntry,F_HS_IsEmptyStock,c.FIsFree,a.FApproveDate,F_HS_CollectionTime 
                                        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 and f.FLOCALEID = 2052
                                        inner join T_BAS_ASSISTANTDATAENTRY g ON f.FENTRYID=g.FENTRYID
                                        inner join T_BAS_ASSISTANTDATAENTRY_L m ON a.F_HS_PaymentModeNew=m.FENTRYID and m.FLOCALEID = 2052
                                        inner join T_BAS_ASSISTANTDATAENTRY n ON m.FENTRYID=n.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 VW_BAS_ASSISTANTDATA_CountryName x on x.FCountry = a.F_HS_RecipientCountry
                                        inner join T_BD_MATERIAL v on v.FMATERIALID = b.FMATERIALID
                                        inner join T_BD_CURRENCY w on w.FCURRENCYID = d.FSETTLECURRID
                                        inner join T_BD_CUSTOMER r on r.FCUSTID = a.FCUSTID
										inner join T_BD_CUSTOMER o on o.FCUSTID = a.F_HS_B2CCustId
                                        left join T_BD_STOCK i on i.FSTOCKID=b.F_HS_StockID
										left join T_BAS_ASSISTANTDATAENTRY_L j ON i.F_HS_DLC=j.FENTRYID and j.FLOCALEID = 2052
                                        left join T_BAS_ASSISTANTDATAENTRY k ON j.FentryID=k.FentryID
                                        where (a.FDate >= DATEADD(day,-180,GETDATE()) or a.F_HS_CollectionTime >= DATEADD(day,-180,GETDATE()))and a.FDOCUMENTSTATUS = 'C' and g.fnumber = 'XXBJDD' and FBillNo like 'SO%' and a.FsaleOrgID = 100035 and a.FCANCELSTATUS<>'B' and h.FNUMBER='XSDD01_SYS' and z.FNUMBER='100.01'
                                        and not exists(select * From  T_SAL_ORDERentry where fid=a.fid and  a.FCLOSESTATUS='B' and FMRPCLOSESTATUS='A')
                                        and  a.fchangeDate>= DATEADD(day,-180,GETDATE())
                                        ");
            }
            else
            {
                sql = string.Format(@"/*dialect*/select FBillNo,F_HS_OriginOnlineOrderNo,FDate,a.FNOTE,r.FNUMBER  as FCUSTID,o.FNUMBER as F_HS_B2CCustId,FSalerId,g.FNUMBER as F_HS_SaleOrderSource,w.FNUMBER as FSettleCurrId,F_HS_RateToUSA,x.FNUMBER as F_HS_RecipientCountry,F_HS_DeliveryProvinces
                                        ,F_HS_DeliveryCity,F_HS_DeliveryAddress,F_HS_PostCode,F_HS_DeliveryName,F_HS_BillAddress,F_HS_MobilePhone,F_HS_ShippingMethod,n.FNUMBER as F_HS_PaymentModeNew          
                                        ,F_HS_PaymentStatus,F_HS_ShippingMethodRemark,F_HS_OnlineOrderWay,F_HS_CouponAmount,F_HS_IntegralDeduction,v.FNUMBER as FMaterialId,c.FTAXPRICE,FAmount,FQty,k.FNUMBER as F_HS_StockID
                                        ,F_HS_IsVirtualEntry,F_HS_IsEmptyStock,c.FIsFree,a.FApproveDate,F_HS_CollectionTime 
                                        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 and f.FLOCALEID = 2052
                                        inner join T_BAS_ASSISTANTDATAENTRY g ON f.FENTRYID=g.FENTRYID
                                        inner join T_BAS_ASSISTANTDATAENTRY_L m ON a.F_HS_PaymentModeNew=m.FENTRYID and m.FLOCALEID = 2052
                                        inner join T_BAS_ASSISTANTDATAENTRY n ON m.FENTRYID=n.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 VW_BAS_ASSISTANTDATA_CountryName x on x.FCountry = a.F_HS_RecipientCountry
                                        inner join T_BD_MATERIAL v on v.FMATERIALID = b.FMATERIALID
                                        inner join T_BD_CURRENCY w on w.FCURRENCYID = d.FSETTLECURRID
                                        inner join T_BD_CUSTOMER r on r.FCUSTID = a.FCUSTID
										inner join T_BD_CUSTOMER o on o.FCUSTID = a.F_HS_B2CCustId
                                        left join T_BD_STOCK i on i.FSTOCKID=b.F_HS_StockID
										left join T_BAS_ASSISTANTDATAENTRY_L j ON i.F_HS_DLC=j.FENTRYID and j.FLOCALEID = 2052
                                        left join T_BAS_ASSISTANTDATAENTRY k ON j.FentryID=k.FentryID
                                        where (a.FDate >= DATEADD(day,-45,GETDATE()) or a.F_HS_CollectionTime >= DATEADD(day,-45,GETDATE()))and a.FDOCUMENTSTATUS = 'C' and g.fnumber = 'XXBJDD' and FBillNo like 'SO%' and a.FsaleOrgID = 100035 and a.FCANCELSTATUS<>'B' and h.FNUMBER='XSDD01_SYS' and z.FNUMBER='100.01'
                                        and not exists(select * From  T_SAL_ORDERentry where fid=a.fid and  a.FCLOSESTATUS='B' and FMRPCLOSESTATUS='A')
                                        ");
            }

            DynamicObjectCollection coll = SQLUtils.GetObjects(this.K3CloudContext, sql);

            orders = GetK3SalOrderInfo(coll);

            if (orders != null && orders.Count > 0)
            {
                var group = from o in orders group o by o.FBillNo into g select g;

                if (group != null && group.Count() > 0)
                {
                    orders  = new List <K3SalOrderInfo>();
                    entries = new List <K3SalOrderEntryInfo>();

                    foreach (var g in group)
                    {
                        if (g != null && g.Count() > 0)
                        {
                            order = g.ElementAt(0) as K3SalOrderInfo;;

                            entries          = GetK3SalOrderEntryInfo(g.ToList <K3SalOrderInfo>());
                            order.OrderEntry = null;
                            order.OrderEntry = entries;

                            order.F_HS_Total = order.F_HS_Subtotal + order.F_HS_Shipping;//优惠后金额
                            orders.Add(order);
                        }
                    }
                }
            }

            return(orders);
        }
Пример #17
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="customerNo">客户编码</param>
        /// <param name="customerLevel">客户等级(1-8,默认1)</param>
        /// <param name="countryNo">国家编码</param>
        /// <param name="city">城市</param>
        /// <param name="zipCode">邮编</param>
        /// <param name="currencyNo">币别</param>
        /// <param name="inLogisWay">发货方式</param>
        public static Dictionary <string, object> GetFrei123(Context ctx, AbsSynchroDataInfo info)
        {
            #region 参数
            Dictionary <string, object> dict = null;

            if (info != null)
            {
                K3SalOrderInfo order = info as K3SalOrderInfo;

                if (order != null)
                {
                    long   timeStamp = GetTimeStamp(DateTime.Now);                                              //时间戳
                    string phpKey    = "ERPSHIPPINGFREE";                                                       //签名key
                    string signMsg   = MD5Encrypt(order.FCustId + timeStamp + phpKey, Encoding.UTF8).ToUpper(); //签名(需大写)

                    JSONObject jObj = new JSONObject();
                    jObj.Add("customer_id", order.FCustId);
                    jObj.Add("whole", !string.IsNullOrWhiteSpace(order.FCustLevel) ? order.FCustLevel.Substring(order.FCustLevel.Length - 1, 1) : "");
                    jObj.Add("country", order.F_HS_RecipientCountry.ToUpper()); //国家代号(例如:US)
                    jObj.Add("city", order.F_HS_DeliveryCity);                  //收货地址城市
                    jObj.Add("code", order.F_HS_PostCode);                      //收货地址邮编
                    jObj.Add("currency", order.FSettleCurrId);                  //货币类型(例如:USD)(首字母要大写)
                    jObj.Add("time_stamp", timeStamp);                          //时间戳
                    jObj.Add("signMsg", signMsg);                               //签名

                    JSONArray  rows      = null;
                    JSONObject products  = null;
                    JSONObject row       = null;
                    string     dlcHSName = string.Empty;

                    if (order.OrderEntry != null && order.OrderEntry.Count > 0)
                    {
                        var groups = from o in order.OrderEntry
                                     where !string.IsNullOrWhiteSpace(o.FMaterialId) && !string.IsNullOrWhiteSpace(o.FStockId)
                                     group o by o.FStockId
                                     into g
                                     select g;

                        if (groups != null && groups.Count() > 0)
                        {
                            products = new JSONObject();

                            foreach (var group in groups)
                            {
                                if (group != null && group.Count() > 0)
                                {
                                    rows      = new JSONArray();
                                    dlcHSName = GetStockName(ctx, group.FirstOrDefault().FStockId);

                                    foreach (var item in group)
                                    {
                                        if (item != null && !item.FMaterialId.StartsWith("99."))
                                        {
                                            row = new JSONObject();
                                            row.Add("fix_id", item.FMaterialId);
                                            row.Add("quantity", item.FQTY);

                                            rows.Add(row);
                                        }
                                    }

                                    if (!string.IsNullOrWhiteSpace(dlcHSName) && rows.Count > 0)
                                    {
                                        products.Add(dlcHSName, rows);
                                    }
                                }
                            }

                            jObj.Add("products", products);
                        }
                    }


                    #endregion

                    //获取运费
                    HttpClient http = new HttpClient()
                    {
                        IsProxy = true
                    };
                    //http.Url = "https://test.healthcabin.net/index.php?t_method=shipping";  //测试地址
                    http.Url     = "https://www.healthcabin.net/index.php?t_method=shipping"; //正式地址
                    http.Content = "";                                                        //清除之前的记录
                    http.Content = string.Concat("&ERP=", jObj.ToString());                   //线上那边要求以键值对参数的形式传过去
                    string result = "";
                    try
                    {
                        result = http.PostData();
                    }
                    catch (Exception)
                    {
                        //服务器在美国,存在连不上远程服务器的情况,此时等待一秒再请求
                        System.Threading.Thread.Sleep(1000);
                        result = http.PostData();
                    }
                    StringBuilder errorMes = new StringBuilder();
                    List <Dictionary <string, string> > lstFreiInfo = AnalysisResult(result, ref errorMes);
                    if (errorMes.Length > 0)
                    {
                    }

                    var freiData = lstFreiInfo.Where(o => o["F_HS_FreTiltle"].Contains(order.F_HS_DropShipDeliveryChannel)).FirstOrDefault();

                    if (freiData != null)
                    {
                        dict = new Dictionary <string, object>();

                        string outLogisWay   = freiData["F_HS_FreTiltle"];     //线上发货方式
                        string freiAmount    = freiData["F_HS_FreAmount"];     //运费金额(结算币别)
                        string freiAmountUSD = freiData["F_HS_AmountNoteUSD"]; //各发货仓运费(USD)


                        dict.Add("F_HS_FreTiltle", outLogisWay == null ? "": outLogisWay);
                        dict.Add("F_HS_FreAmount", freiAmount);
                        dict.Add("F_HS_AmountNoteUSD", freiAmountUSD == null ?"": freiAmountUSD);
                    }
                }
            }

            return(dict);
        }
Пример #18
0
        private List <K3SalOrderInfo> GetK3SalOrderInfos(List <DynamicObject> objs)
        {
            List <K3SalOrderInfo> orders = null;
            K3SalOrderInfo        order  = null;
            string message = string.Empty;

            if (objs != null && objs.Count > 0)
            {
                orders = new List <K3SalOrderInfo>();

                foreach (var obj in objs)
                {
                    if (obj != null)
                    {
                        string documentstatus = SQLUtils.GetFieldValue(obj, "DocumentStatus");
                        bool   isSyn          = Convert.ToBoolean(SQLUtils.GetFieldValue(obj, "F_HS_YNSyncCollection"));

                        DynamicObject oSrc    = obj["F_HS_SaleOrderSource"] as DynamicObject;
                        string        oSource = SQLUtils.GetFieldValue(oSrc, "FNumber");

                        if (documentstatus.CompareTo("C") == 0 && !isSyn && oSource.CompareTo("HCWebProcessingOder") == 0)
                        {
                            if (Convert.ToDecimal(SQLUtils.GetFieldValue(obj, "F_HS_PayTotal")) > 0)
                            {
                                order = new K3SalOrderInfo();

                                order.FDate   = Convert.ToDateTime(SQLUtils.GetFieldValue(obj, "Date"));
                                order.FBillNo = SQLUtils.GetFieldValue(obj, "BillNo");

                                DynamicObject cust = obj["CustId"] as DynamicObject;
                                order.FCustId = SQLUtils.GetFieldValue(cust, "Number");

                                DynamicObject b2cCust = obj["F_HS_B2CCustId"] as DynamicObject;
                                order.F_HS_B2CCustId = SQLUtils.GetFieldValue(b2cCust, "Number");

                                DynamicObject saler = obj["SalerId"] as DynamicObject;
                                order.FSalerId = SQLUtils.GetFieldValue(saler, "Number");

                                DynamicObject saleOrg = obj["SaleOrgId"] as DynamicObject;
                                order.FSaleOrgId = SQLUtils.GetFieldValue(saleOrg, "Number");

                                DynamicObject saleDept = obj["SaleDeptId"] as DynamicObject;
                                order.FSaleDeptId = SQLUtils.GetFieldValue(saleDept, "Number");

                                DynamicObject pay = obj["F_HS_PaymentModeNew"] as DynamicObject;
                                order.F_HS_PaymentModeNew = SQLUtils.GetFieldValue(pay, "FNumber");

                                order.F_HS_TransactionID = SQLUtils.GetFieldValue(obj, "F_HS_TransactionID");
                                order.F_HS_PayTotal      = SQLUtils.GetFieldValue(obj, "F_HS_PayTotal");
                                order.F_HS_RateToUSA     = Convert.ToDecimal(SQLUtils.GetFieldValue(obj, "F_HS_RateToUSA"));

                                K3SaleOrderFinance fin = GetK3SaleOrderFinance(obj);
                                if (fin != null)
                                {
                                    order.FSettleCurrId = fin.FSettleCurrID;
                                }

                                orders.Add(order);
                            }
                            else
                            {
                                message += "销售订单:【" + SQLUtils.GetFieldValue(obj, "BillNo") + "】的Pay_Total的金额小于零,不允许生成收款单!" + Environment.NewLine;
                            }
                        }
                        else
                        {
                            message += "销售订单:【" + SQLUtils.GetFieldValue(obj, "BillNo") + "】收款单生成只能是processing和未生成收款单的销售订单" + Environment.NewLine;
                        }
                    }
                }
            }
            if (!string.IsNullOrWhiteSpace(message))
            {
                _result         = new HttpResponseResult();
                _result.Message = message;
                _result.Success = false;
            }
            return(orders);
        }