Beispiel #1
0
        /// <summary>
        /// 获取Kis同步数据
        /// </summary>
        /// <param name="model">Kis</param>
        /// <returns></returns>
        /// <remarks>2013-9-27 杨浩 添加</remarks>
        public Result <string> GetData(CBLiJiaSyncLog model)
        {
            var easModel = new Hyt.Model.LiJiaSyncLog
            {
                SysNo   = model.SysNo,
                Data    = model.Data,
                DataMd5 = model.DataMd5
            };
            var iType  = (接口类型)(model.InterfaceType);
            var result = new Result <string> {
            };

            switch (iType)
            {
            case 接口类型.配送员借货还货:
                var borrow = model.Data.ToObject <BorrowInfoWraper>();
                result = LiJiaCore.OtherIssueBillFacade(borrow.Model, borrow.Type, borrow.Description, "", model.DataMd5, true, true, true);
                break;

            case 接口类型.销售出库退货:
                //var sale = model.Data.ToObject<SaleInfoWraper>();
                result = LiJiaCore.SaleIssueBillFacade(easModel, false, true, true, true);
                break;

            case 接口类型.收款单据导入:
                var receiving = model.Data.ToObject <ReceivingInfoWraper>();
                result = LiJiaCore.ReceivingBillFacade(0, receiving.Model, receiving.ReceivingType, receiving.Customer, receiving.Description, "", model.DataMd5, true, true, true);
                break;
            }
            return(result);
        }
Beispiel #2
0
        /// <summary>
        /// 记录日志
        /// </summary>
        /// <param name="datajson">同步数据</param>
        /// <param name="result">返回结果</param>
        /// <param name="watch">同步耗时</param>
        /// <param name="name">接口名称</param>
        /// <param name="interfaceType">接口类型</param>
        /// <param name="warehouseSysNo">仓库编号</param>
        /// <param name="remarks">记录商城原单据</param>
        /// <param name="flowIdentify">流程编号</param>
        /// <param name="voucherAmount">单据金额</param>
        /// <param name="status">同步状态</param>
        /// <param name="isAgain">是否开始同步</param>
        /// <remarks>2013-10-24 杨浩 创建</remarks>
        private static int WriteLog(string datajson, Result <string> result, Stopwatch watch, string name,
                                    接口类型 interfaceType, int warehouseSysNo, string remarks, string flowIdentify, decimal voucherAmount, 步状态 status, bool isAgain)
        {
            //是否为自动同步
            if (isAgain)
            {
                return(0);
            }
            //是否为自营
            if (!IsSelfSupport(warehouseSysNo))
            {
                return(0);
            }
            int    elapsedMilliseconds = 0;
            string message             = string.Empty;
            var    dataMd5             = Helper.MD5Encrypt(datajson);

            var isImport = Hyt.DataAccess.Sys.ILiJiaDao.Instance.IsImport(dataMd5);

            if (isImport)
            {
                return(0);
            }

            elapsedMilliseconds = (int)watch.ElapsedMilliseconds;
            message             = result.Message != null
                ? (result.Message.Length > 500 ? result.Message.Substring(0, 500) : result.Message)
                : string.Empty;

            var log = new Hyt.Model.LiJiaSyncLog()
            {
                VoucherNo      = result.Data,
                CreatedDate    = DateTime.Now,
                Data           = datajson,
                DataMd5        = dataMd5,
                ElapsedTime    = elapsedMilliseconds,
                InterfaceType  = (int)interfaceType,
                Message        = message,
                Name           = name,
                Status         = (int)status,
                StatusCode     = result.StatusCode,
                CreatedBy      = Hyt.Model.SystemPredefined.User.SystemUser,
                Remarks        = remarks,
                FlowIdentify   = flowIdentify,
                FlowType       = (接口类型.配送员借货还货 == interfaceType ? 20 : 10),
                LastupdateDate = DateTime.Now,
                WarehouseSysNo = warehouseSysNo,
                VoucherAmount  = voucherAmount,
                LastsyncTime   = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue,
            };

            return(Hyt.DataAccess.Sys.ILiJiaDao.Instance.LiJiaSyncLogCreate(log));
        }
Beispiel #3
0
        /// <summary>
        /// 销售退货
        /// </summary>
        /// <param name="model">退货明细</param>
        /// <param name="customer">分销商erp编号</param>
        /// <param name="description">单据摘要(商城订单号/升舱订单号)</param>
        /// <param name="flowIdentify"></param>
        /// <returns></returns>
        /// <remarks>2013-9-27 杨浩 添加</remarks>
        public Result SaleInStock(List <SaleInfo> model, string customer, string description, string flowIdentify)
        {
            var datajson = new SaleInfoWraper
            {
                Model       = model,
                Type        = 出库状态.退货,
                Customer    = customer,
                Description = description
            }.ToJson();

            var easModel = new Hyt.Model.LiJiaSyncLog
            {
                Data         = datajson,
                FlowIdentify = flowIdentify
            };
            var status = LiJiaCore.SaleIssueBillFacade(easModel);

            return(status);
        }
Beispiel #4
0
        /// <summary>
        /// 销售出库、退货
        /// </summary>
        /// <param name="easModel">Kis数据</param>
        /// <param name="isSave">是否保存为提交状态</param>
        /// <param name="isAgain">是否重新导入</param>
        /// <param name="enableEas">是否启用Kis</param>
        /// <param name="isData">是否只取xml数据</param>
        /// <returns>Result</returns>
        /// <remarks>2013-9-22 杨浩 创建</remarks>
        public static Result <string> SaleIssueBillFacade(Hyt.Model.LiJiaSyncLog easModel, bool isSave = false, bool isAgain = false, bool enableEas = true, bool isData = false)
        {
            var sale = easModel.Data.ToObject <SaleInfoWraper>();

            List <SaleInfo> model        = sale.Model;
            出库状态            type         = sale.Type;
            string          customer     = sale.Customer;
            string          description  = sale.Description;
            string          flowIdentify = easModel.FlowIdentify;
            string          dataMd5      = easModel.DataMd5;


            var name  = 出库状态.出库 == type ? "销售出库" : "销售退货";
            var watch = new Stopwatch();

            watch.Start();
            var result = new Eas.SaleIssueBillFacade.Result();

            #region 数据初始
            var     firstModel       = model.FirstOrDefault();
            int     warehouseSysNo   = firstModel != null ? firstModel.WarehouseSysNo : 0;              //仓库编号
            decimal voucherAmount    = model.Sum(q => q.Amount);
            var     organizationCode = firstModel != null ? firstModel.OrganizationCode : string.Empty; //组织架构
            if (出库状态.退货 == type)
            {
                voucherAmount = -voucherAmount;
            }


            if (firstModel.WarehouseNumber.Contains("-"))
            {
                firstModel.WarehouseNumber = firstModel.WarehouseNumber.Split('-')[0];
            }


            var saleInfo = model.FirstOrDefault();

            string billNo = "XSCK" + (saleInfo.ItemID ?? 0) + easModel.FlowIdentify;

            var request = new  StockOutAddRequset()
            {
                FBillNo      = billNo,
                FEntryID     = "0",
                Fdate        = DateTime.Now.ToString("yyyy-MM-dd"),
                FConsignee   = _userName,
                FDeptID      = "",
                FEmpID       = organizationCode,
                FExplanation = "",
                FFetchAdd    = "",
                FFManagerID  = "",
                FSaleStyle   = "线上电商平台",
                FSManagerID  = "",
                FCustID      = string.IsNullOrWhiteSpace(saleInfo.DeliveryCustomer) ? config.FCustID : saleInfo.DeliveryCustomer,// "01.001.003",
                FDCStockID   = firstModel.WarehouseNumber,
                FROB         = 出库状态.出库 == type?"1":"-1",
            };


            request.item = model.Select((q, i) => new JsonItem()
            {
                FItemID         = q.ErpCode,
                Fauxqty         = q.Quantity.ToString(),
                FItemName       = "",
                FDCStockID      = q.WarehouseNumber.Contains("-") ? q.WarehouseNumber.Split('-')[0] : q.WarehouseNumber,
                FUnitID         = config.FUnitID,// "ping",
                FConsignPrice   = decimal.Round(q.Amount / q.Quantity, 2).ToString("0.00"),
                FConsignAmount  = q.Amount.ToString("0.00"),
                FDiscountAmount = q.DiscountAmount.ToString("0.00"),
            }).ToList();

            string json = request.ToJson();

            var datajson = new SaleInfoWraper
            {
                Model       = model,
                Type        = type,
                Customer    = customer,
                Description = description
            }.ToJson();


            if (isData)
            {
                return(new Result <string>
                {
                    Data = json
                });
            }

            #endregion

            #region 调用利嘉接口
            步状态 status = 步状态.等待同步;
            if (enableEas && isAgain)
            {
                try
                {
                    using (var service = new Pisen.Framework.Service.Proxy.ServiceProxy <Grand.Platform.Api.Contract.IErpService>())
                    {
                        var response = service.Channel.LiJiaStockOutAdd(request);
                        status            = !response.IsError ?  步状态.成功 :  步状态.失败;
                        result.status     = !response.IsError;
                        result.message    = response.ErrMsg;
                        result.statusCode = response.ErrCode;
                        result.data       = response.FBillNo; //_result.Data != null && _result.Data.Count > 0 ? _result.Data.First().OutFBillNo : "";
                    }
                }
                catch (Exception e)
                {
                    result.message = e.Message;
                    result.status  = false;
                    status         = 步状态.失败;
                }
            }
            else
            {
                result.message = enableEas ? Model.EasConstant.EAS_WAIT : Model.EasConstant.EAS_MESSAGE_CLOSE;
                result.status  = false;
                status         = 步状态.等待同步;
            }

            #endregion

            watch.Stop();

            var resultData = new Result <string>
            {
                Data       = (result.data != null ?result.data.ToString() :""),
                Status     = result.status,
                StatusCode = result.statusCode,
                Message    = result.message
            };
            //记录日志
            int sysno = WriteLog(datajson, resultData, watch, name, 接口类型.销售出库退货, warehouseSysNo, description, flowIdentify, voucherAmount, status, isAgain);
            easModel.SysNo = sysno == 0 ? easModel.SysNo : sysno;
            //临时记录 检查是否重复
            var content = " 订单编号:" + description + " 外部编号:" + request.FBillNo + " 请求时间:" + request.Fdate +
                          " 返回结果:" + (result.status?result.data:result.message) + " 返回状态:" + result.status + "," + result.statusCode + " ElapseTime:" + watch.ElapsedMilliseconds;
            WriteLog(easModel.SysNo, content, request.Fdate, isAgain);

            return(resultData);
        }