Exemplo n.º 1
0
        public IActionResult Create([FromBody] SaleOrderDTO salesorderDTO)
        {
            SalesOrder SalesOrder = new SalesOrder();

            SalesOrder.EnterpriseName = salesorderDTO.EnterpriseName;
            //productType.CreatedBy = User.Identity.Name;
            var saleorderEntity = _salesorderService.Create(SalesOrder);
            var sales           = _mapper.Map <SaleOrderDTO>(saleorderEntity);


            return(Ok(SalesOrder));
        }
        public async Task <IActionResult> AddSale(SaleOrderDTO saleOrderDTO)
        {
            try
            {
                bool resp = await _saleOrderServices.AddSale(saleOrderDTO);

                if (!resp)
                {
                    return(StatusCode(StatusCodes.Status404NotFound, resp));
                }

                return(StatusCode(StatusCodes.Status201Created, saleOrderDTO));
            }
            catch (Exception e)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, e.Message));
            }
        }
Exemplo n.º 3
0
        public async Task <bool> AddSale(SaleOrderDTO saleOrderDTO)
        {
            using (var db = new SocialNetworkDeveloperContext())
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        var seller = await _userServices.GetUserByID((int)saleOrderDTO.IdUsuario);

                        var buyer = await _userServices.GetUserByID((int)saleOrderDTO.IdComprador);

                        var publication = await _publicationServices.GetPublicationById((int)saleOrderDTO.IdPublicacion);

                        var saleOrder = _mapper.Map <OrdenesVenta>(saleOrderDTO);
                        saleOrder.FechaHoraOrdenVenta = DateTime.Now;
                        //saleOrder.TotalVentaConIva = saleOrderDTO.Cantidad * (publication.Precio + (publication.Precio * 0.13m));
                        saleOrder.TotalVenta       = saleOrderDTO.Cantidad * publication.Precio;
                        saleOrder.EstadoOrdenVenta = 1; //pendiente
                        db.OrdenesVentas.Add(saleOrder);
                        await db.SaveChangesAsync();

                        //Creacion de orden de compra
                        OrdenesCompra objCompra = new OrdenesCompra()
                        {
                            IdOrdenVenta         = saleOrder.IdOrdenVenta,
                            IdPublicacion        = publication.IdPublicacion,
                            IdUsuario            = buyer.IdUsuario,
                            FechaHoraOrdenCompra = DateTime.Now,
                            //TotalCompraConIva = saleOrderDTO.Cantidad * (publication.Precio + (publication.Precio * 0.13m)),
                            TotalCompra       = saleOrderDTO.Cantidad * publication.Precio,
                            EstadoOrdenCompra = 1, //pendiente
                            Cantidad          = saleOrderDTO.Cantidad
                        };
                        db.OrdenesCompras.Add(objCompra);
                        await db.SaveChangesAsync();

                        EmailDTO emailDTO = new EmailDTO()
                        {
                            EmailBuyer     = buyer.CorreoElectronico,
                            EmailSeller    = seller.CorreoElectronico,
                            Title          = string.Format("Se Realizo una solicitud de compra/venta de la Publicaicon {0}", publication.Titulo),
                            MessagesSeller = string.Format(@"Estimado/a <b>{0}</b> se ha realizado una solicitud de venta a travez de nuestra aplicación, 
                                                    <br/> 
                                                    Detalle De la Venta 
                                                    <br/>
                                                    Publicación: <b>{1}</b>
                                                    <br/>
                                                    Cantidad: <b>{2}</b>
                                                     <br/>
                                                    Cliente: <b>{3}</b>
                                                    <br/> 
                                                    Telefono: <b>{4}</b>
                                                    <br/> 
                                                    Dirección Entrega: <b>{5}</b>
                                                    <br/> 
                                                    Comentario: <b>{6}</b>"
                                                           , seller.NombreCompleto, publication.Titulo, saleOrderDTO.Cantidad, buyer.NombreCompleto, buyer.TelefonoContacto, saleOrderDTO.DireccionEntrega, saleOrderDTO.Comentario),

                            MessagesBuyer = string.Format(@"Estimado/a <b>{0}</b> se ha realizado una solicitud de compra a travez de nuestra aplicación, 
                                                    <br/> 
                                                    Detalle De la Compra 
                                                    <br/>
                                                    Publicación: <b>{1}</b>
                                                    <br/>
                                                    Cantidad: <b>{2}</b>"

                                                          , buyer.NombreCompleto, publication.Titulo, saleOrderDTO.Cantidad),
                        };
                        //si falla envio correo no registrar la venta
                        var email = await _emailServices.SendEmail(emailDTO);

                        if (!email)
                        {
                            throw new Exception();
                        }

                        //envio sms twilio
                        var smsSeller = await _twilioServices.SendSMS(seller.TelefonoContacto, "Se Realizo una solicitud de compra/venta en SNB&S");

                        if (!smsSeller)
                        {
                            throw new Exception();
                        }

                        var smsBuyer = await _twilioServices.SendSMS(buyer.TelefonoContacto, "Acabas de realizar una solicitud de compra en SNB&S");

                        if (!smsBuyer)
                        {
                            throw new Exception();
                        }

                        await transaction.CommitAsync();

                        return(true);
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                        return(false);
                    }
                }
            }
        }
Exemplo n.º 4
0
 // protected override string ResolveCore(SalesOrder source)
 public static string ResolveCore(SaleOrderDTO source)
 {
     return($"{source.FullName } lives at {source.AddressLineOne} {source.AddressLineTwo}");
 }
Exemplo n.º 5
0
 public SaleOrderDTO Save(SaleOrderDTO saleOrderDTO)
 {
     context.Set <SaleOrderDTO>().AddOrUpdate(saleOrderDTO);
     context.SaveChanges();
     return(saleOrderDTO);
 }
Exemplo n.º 6
0
        public override object Do(object obj)
        {
            CreateSOSV bpObj = (CreateSOSV)obj;

            //get business operation context is as follows
            //IContext context = ContextManager.Context

            //auto generating code end,underside is user custom code
            //and if you Implement replace this Exception Code...

            CreateSOSV    svCreateSO = new CreateSOSV();
            StringBuilder strbResult = new StringBuilder();
            string        strSOInfo  = "<SOInfo DocNo=\"{0}\" />";

            if (string.IsNullOrEmpty(bpObj.DocInfo))
            {
                //logger.Error(string.Format("创建料品失败:传入参数BOMItemInfo为空。"));
                strbResult.AppendFormat(string.Format("<ResultInfo Error=\"{0}\" />", "创建销售订单失败:传入参数DocInfo为空。"));
                return(strbResult.ToString());
            }
            SOInfo      soInfo  = new SOInfo();
            ContextInfo cxtInfo = new ContextInfo();

            #region 校验数据有效性
            try
            {
                soInfo  = XmlSerializerHelper.XmlDeserialize <SOInfo>(bpObj.DocInfo, Encoding.Unicode);
                cxtInfo = XmlSerializerHelper.XmlDeserialize <ContextInfo>(bpObj.ContextInfo, Encoding.Unicode);
            }
            catch (Exception ex)
            {
                strbResult.AppendFormat(string.Format("<ResultInfo Error=\"{0}\" />", string.Format("反序列化销售订单DocInfo失败:{0}", bpObj.DocInfo)));
                return(strbResult.ToString());
            }
            if (soInfo.Lines.Count <= 0)
            {
                strbResult.AppendLine(string.Format("<ResultInfo Error=\"{0}\" />", "传入的DocInfo中没有订货信息"));
                return(strbResult.ToString());
            }

            Organization beOrgContext = Organization.FindByCode(cxtInfo.OrgCode);

            //单据类型
            string soDocTypeCode = string.Empty;
            if (!string.IsNullOrEmpty(bpObj.DocTypeCode))
            {
                soDocTypeCode = bpObj.DocTypeCode;
            }
            else
            {
                soDocTypeCode = cxtInfo.SoDocTypeCode;
            }
            if (string.IsNullOrEmpty(soDocTypeCode))
            {
                strbResult.AppendLine(string.Format("<ResultInfo Error=\"{0}\" />", "不能建立生成销售订单单据类型"));
                return(strbResult.ToString());
            }

            //客户
            if (string.IsNullOrEmpty(soInfo.CustCode))
            {
                strbResult.AppendLine(string.Format("<ResultInfo Error=\"{0}\" />", "来源客户不能为空"));
                return(strbResult.ToString());
            }

            Customer itemCust = Customer.FindByCode(beOrgContext, soInfo.CustCode);
            if (itemCust == null)
            {
                strbResult.AppendLine(string.Format("<ResultInfo Error=\"{0}\" />", string.Format("客户编号{0}在U9中不存在", soInfo.CustCode)));
                return(strbResult.ToString());
            }

            //订单日期
            if (string.IsNullOrEmpty(soInfo.BusinessDate))
            {
                strbResult.AppendLine(string.Format("<ResultInfo Error=\"{0}\" />", "订单日期不能为空"));
                return(strbResult.ToString());
            }

            #endregion

            CommonCreateSOSRV   sv       = new CommonCreateSOSRV();
            List <SaleOrderDTO> lstSODTO = new List <SaleOrderDTO>();

            try
            {
                SaleOrderDTO dtoSO = CreateSOHead(beOrgContext, soDocTypeCode, itemCust, soInfo);
                CreateSOLines(beOrgContext, soInfo, dtoSO, itemCust);

                lstSODTO.Add(dtoSO);
                sv.SOs = lstSODTO;
                List <CommonArchiveDataDTO> lstSORlt = new List <CommonArchiveDataDTO>();
                lstSORlt = sv.Do();

                strbResult.AppendLine("<ResultInfo>");
                if (lstSORlt.Count > 0)
                {
                    strbResult.AppendLine(string.Format(strSOInfo, lstSODTO[0].DocNo));
                }
                else
                {
                    strbResult.AppendLine("<Error Desc=\"未能生成U9销售订单\" ></Error>");
                }
                strbResult.AppendLine("</ResultInfo>");

                return(strbResult.ToString());
            }
            catch (Exception ex)
            {
                strbResult.AppendFormat(string.Format("<ResultInfo error={0} />", string.Format("创建U9销售订单失败:{0}", bpObj.DocInfo)));
                return(strbResult.ToString());
            }
        }
Exemplo n.º 7
0
        private void CreateSOLines(Organization org, SOInfo soInfo, SaleOrderDTO dtoSO, Customer customer)
        {
            CustomerSite         cs           = CustomerSite.Finder.Find("Customer  ='" + customer.ID + "'");
            CustomerSiteMISCInfo customerSite = new CustomerSiteMISCInfo();

            customerSite.CustomerSite = cs;
            customerSite.Code         = cs.Code;
            customerSite.Name         = cs.Name;

            foreach (var itemLine in soInfo.Lines)
            {
                UFIDA.U9.ISV.SM.SOLineDTO soLine = new UFIDA.U9.ISV.SM.SOLineDTO();
                //料品
                soLine.ItemInfo = new UFIDA.U9.CBO.SCM.Item.ItemInfo();

                ItemMaster beItemMaster = ItemMaster.Finder.Find("Code = @code and Org = @orgID",
                                                                 new OqlParam[2] {
                    new OqlParam(itemLine.ItemMasterCode), new OqlParam(org.ID)
                });
                if (beItemMaster == null)
                {
                    throw new Exception(string.Format("物料编码{0}在U9中不存在", itemLine.ItemMasterCode));
                }

                soLine.ItemInfo.ItemID = beItemMaster;

                //soLine.BomOwner = new UFIDA.U9.CBO.Pub.Controller.CommonArchiveDataDTO();
                //soLine.BomOwner.ID = org.ID;
                //soLine.BomOwner.Code = org.Code;
                //soLine.BomOwner.Name = org.Name;

                //数量
                soLine.ChoiceResult = 0;
                soLine.OrderByQtyTU = itemLine.Qty;
                //扩展字段
                soLine.DescFlexField = new UFIDA.U9.Base.FlexField.DescFlexField.DescFlexSegments();
                //收款条件
                if (customer.RecervalTerm != null)
                {
                    soLine.RecTerm      = new CommonArchiveDataDTO();
                    soLine.RecTerm.Code = customer.RecervalTerm.Code;
                }
                //立账位置
                if (customer.CustomerSites != null)
                {
                    if (customer.CustomerSites.Count > 0)
                    {
                        soLine.BillToSite                 = customerSite;
                        soLine.BillToSite.Code            = customerSite.Code;
                        soLine.BillToSite.CustomerSiteKey = customerSite.CustomerSiteKey;
                    }
                }

                //定价方式
                soLine.CooperatePriceStyle = -1;
                //免费品类型
                soLine.FreeType = FreeTypeEnum.GetFromValue(-1);
                //免费品原因
                soLine.FreeReason = DonationReasonEnum.GetFromValue(-1);
                //台阶划分依据
                soLine.StepBy = -1;
                //预收环节
                soLine.PreRecObject = -1;
                //原币-额币
                soLine.TCToCCExchRateType = ExchangeRateTypesEnum.GetFromValue(0);
                //来源单据类别
                soLine.SrcDocType = SOSourceTypeEnum.GetFromValue(0);
                //成套收发货标志
                soLine.ShipTogetherFlag = KITShipModeEnum.GetFromValue(-1);
                //数量类型
                soLine.QuantityType = UsageQuantityTypeEnum.GetFromValue(-1);
                //资源成本计费基础
                soLine.ChargeBasis = ChargeBasisEnum.GetFromValue(-1);
                //价格来源
                soLine.PriceSource = PriceSourceEnum.GetFromValue(1);
                //是否消耗信用额度
                soLine.IsEngrossCreditLimit = true;

                //添加销售订单上的计划行
                soLine.SOShiplines = new List <SOShipLineDTO>();
                SOShipLineDTO soship = new SOShipLineDTO();
                soship.ItemInfo          = new UFIDA.U9.CBO.SCM.Item.ItemInfo();
                soship.ItemInfo.ItemID   = beItemMaster;
                soship.ItemInfo.ItemCode = beItemMaster.Code;
                soship.ItemInfo.ItemName = beItemMaster.Name;
                soship.RequireDate       = DateTime.Parse(itemLine.DeliveryDate);
                soship.DescFlexField     = new UFIDA.U9.Base.FlexField.DescFlexField.DescFlexSegments();

                //区域位置
                soship.ShipToSite = new CustomerSiteMISCInfo();
                soship.ShipToSite.CustomerSite = customerSite.CustomerSite;
                soship.ShipToSite.Code         = customerSite.Code;
                soship.ShipToSite.Name         = customerSite.Name;

                //单价
                soLine.OrderPriceTC = itemLine.TCPrice;
                soLine.SOShiplines.Add(soship);

                dtoSO.SOLines.Add(soLine);
            }
        }
Exemplo n.º 8
0
        private SaleOrderDTO CreateSOHead(Organization org, string soDocTypeCode, Customer itemCust, SOInfo soInfo)
        {
            SaleOrderDTO dtoSOHead = new SaleOrderDTO();
            //单据类型
            long doctypeID = GetProfileValue(soDocTypeCode);//销售订单单据类型
            CommonArchiveDataDTO dtoDocType = new CommonArchiveDataDTO();

            dtoDocType.ID          = doctypeID;
            dtoSOHead.DocumentType = dtoDocType;

            //客户
            CustomerMISCInfo customer = new CustomerMISCInfo();

            customer.Code     = itemCust.Code;
            dtoSOHead.OrderBy = customer;

            //订单日期
            dtoSOHead.BusinessDate = DateTime.Parse(soInfo.BusinessDate);

            Profile profDept = Base.Profile.Profile.Finder.Find("Application.Code = @appCode and Code = @code ", new OqlParam[2] {
                new OqlParam("0503"), new OqlParam("SD051")
            });                                                                                                                                                                   //销售管理-参数设置-默认销售部门
            Profile profEmployee = Base.Profile.Profile.Finder.Find("Application.Code = @appCode and Code = @code ", new OqlParam[2] {
                new OqlParam("0503"), new OqlParam("SD052")
            });                                                                                                                                                                       //销售管理-参数设置-默认销售员

            //部门
            dtoSOHead.SaleDepartment    = new CommonArchiveDataDTO();
            dtoSOHead.SaleDepartment.ID = Convert.ToInt64(profDept.GetProfileValue().ToString());
            //业务员
            dtoSOHead.Seller    = new CommonArchiveDataDTO();
            dtoSOHead.Seller.ID = Convert.ToInt64(profEmployee.GetProfileValue().ToString());

            //立账位置
            dtoSOHead.IsPriceIncludeTax = true;
            CustomerSite         cs  = CustomerSite.Finder.Find("Customer  ='" + itemCust.ID + "'");
            CustomerSiteMISCInfo cdd = new CustomerSiteMISCInfo();

            cdd.CustomerSite = cs;
            //收货位置
            dtoSOHead.ShipToSite      = cdd;
            dtoSOHead.ShipToSite.Code = cdd.Code;
            dtoSOHead.ShipToSite.Name = cdd.Name;
            //立账位置
            dtoSOHead.BillToSite      = cdd;
            dtoSOHead.BillToSite.Code = cdd.Code;
            dtoSOHead.BillToSite.Name = cdd.Name;
            //付款位置
            dtoSOHead.PayerSite      = cdd;
            dtoSOHead.PayerSite.Code = cdd.Code;
            dtoSOHead.PayerSite.Name = cdd.Name;

            //币种
            if (itemCust.TradeCurrency != null)
            {
                dtoSOHead.TC      = new UFIDA.U9.CBO.Pub.Controller.CommonArchiveDataDTO();
                dtoSOHead.TC.Code = itemCust.TradeCurrency.Code;
            }

            //优先级
            dtoSOHead.SOPriority = SOPRIEnum.GetFromValue(99);
            //核算组织
            dtoSOHead.AccountOrg      = new UFIDA.U9.CBO.Pub.Controller.CommonArchiveDataDTO();
            dtoSOHead.AccountOrg.Code = org.Code;
            //开票组织
            dtoSOHead.InvoiceOrg      = new UFIDA.U9.CBO.Pub.Controller.CommonArchiveDataDTO();
            dtoSOHead.InvoiceOrg.Code = org.Code;
            //出货原则
            if (itemCust.ShippmentRule != null)
            {
                dtoSOHead.ShipRule      = new UFIDA.U9.CBO.Pub.Controller.CommonArchiveDataDTO();
                dtoSOHead.ShipRule.Code = itemCust.ShippmentRule.Code;
            }
            //立账条件
            if (itemCust.ARConfirmTerm != null)
            {
                dtoSOHead.ConfirmTerm      = new UFIDA.U9.CBO.Pub.Controller.CommonArchiveDataDTO();
                dtoSOHead.ConfirmTerm.Code = itemCust.ARConfirmTerm.Code;
            }
            //成交方式
            dtoSOHead.BargainMode = BargainEnum.GetFromValue(-1);
            //运费支付
            dtoSOHead.TransPayMode = UFIDA.U9.CBO.SCM.Enums.FreightPaymentEnum.GetFromValue(-1);
            //扩展段
            dtoSOHead.DescFlexField = new UFIDA.U9.Base.FlexField.DescFlexField.DescFlexSegments();
            return(dtoSOHead);
        }