Esempio n. 1
0
        private void PurchaseDealUpdateMethod(new_aprove_price _proxyentity, List <new_port> _portList, OrganizationServiceContext orgContext, IOrganizationService service)
        {
            List <new_purchase_deal> _cdealListForUpdate = (from i in orgContext.CreateQuery <new_purchase_deal>()
                                                            where i.new_cropid.Id == _proxyentity.new_cropid.Id &&
                                                            (i.new_purchase_deal_stage == new OptionSetValue(100000000) ||
                                                             i.new_purchase_deal_stage == new OptionSetValue(100000002) ||
                                                             i.new_purchase_deal_stage == new OptionSetValue(100000001)) &&
                                                            i.new_opportunity_status == new OptionSetValue(100000000)
                                                            select i).ToList();

            foreach (var item in _cdealListForUpdate)
            {
                new_purchase_deal _updateDeal = new new_purchase_deal();
                _updateDeal.Id = item.Id;
                if (item.new_ship_portid == null)
                {
                    continue;
                }
                if (_portList.Where(x => x.Id == item.new_ship_portid.Id)?.FirstOrDefault()?.new_name == "Одеса")
                {
                    _updateDeal.new_recommended_price = _proxyentity.new_recom_purchase_price_odessa;
                }
                else if (_portList.Where(x => x.Id == item.new_ship_portid.Id)?.FirstOrDefault()?.new_name == "Миколаїв")
                {
                    _updateDeal.new_recommended_price = _proxyentity.new_recom_purchase_price_nikolaev;
                }
                service.Update(_updateDeal);
            }
        }
Esempio n. 2
0
        private void PurchaseDealUpdateMethod(new_aprove_price _proxyentity, List<new_port> _portList, OrganizationServiceContext orgContext, IOrganizationService service)
        {
            List<new_purchase_deal> _cdealListForUpdate = (from i in orgContext.CreateQuery<new_purchase_deal>()
                                                           where i.new_cropid.Id == _proxyentity.new_cropid.Id &&
                                                           (i.new_purchase_deal_stage == new OptionSetValue(100000000) ||
                                                           i.new_purchase_deal_stage == new OptionSetValue(100000002) ||
                                                           i.new_purchase_deal_stage == new OptionSetValue(100000001)) &&
                                                           i.new_opportunity_status == new OptionSetValue(100000000)
                                                           select i).ToList();

            foreach ( var item in _cdealListForUpdate )
            {
                new_purchase_deal _updateDeal = new new_purchase_deal();
                _updateDeal.Id = item.Id;
                if ( item.new_ship_portid == null )
                    continue;
                if ( _portList.Where(x => x.Id == item.new_ship_portid.Id)?.FirstOrDefault()?.new_name == "Одеса" )
                {
                    _updateDeal.new_recommended_price = _proxyentity.new_recom_purchase_price_odessa;
                }
                else if ( _portList.Where(x => x.Id == item.new_ship_portid.Id)?.FirstOrDefault()?.new_name == "Миколаїв" )
                {
                    _updateDeal.new_recommended_price = _proxyentity.new_recom_purchase_price_nikolaev;
                }
                service.Update(_updateDeal);
            }
        }
Esempio n. 3
0
        private void PurchaseTaskUpdateMethod(new_aprove_price _proxyentity, List <new_port> _portList, OrganizationServiceContext orgContext, IOrganizationService service)
        {
            List <new_purchase_task> _taskListForUpdate = (from i in orgContext.CreateQuery <new_purchase_task>()
                                                           where i.new_product.Id == _proxyentity.new_cropid.Id &&
                                                           i.new_status == new OptionSetValue(100000000)
                                                           select i).ToList();

            foreach (var item in _taskListForUpdate)
            {
                new_purchase_task _updateTask = new new_purchase_task();
                _updateTask.Id = item.Id;
                if (item.new_port == null)
                {
                    continue;
                }
                if (_portList.Where(x => x.Id == item.new_port.Id).FirstOrDefault().new_name == "Одеса")
                {
                    _updateTask.new_aprove_purchase_price = _proxyentity.new_recom_purchase_price_odessa;
                }
                else if (_portList.Where(x => x.Id == item.new_port.Id).FirstOrDefault().new_name == "Миколаїв")
                {
                    _updateTask.new_aprove_purchase_price = _proxyentity.new_recom_purchase_price_nikolaev;
                }
                service.Update(_updateTask);
            }
        }
Esempio n. 4
0
        public void Execute(IServiceProvider serviceProvider)
        {
            var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            var factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            var service = factory.CreateOrganizationService(context.UserId);

            Entity _correntEntity;

            using (var orgContext = new OrganizationServiceContext(service))
            {
                if (context.MessageName.ToLower() == "create")
                {
                    _correntEntity = (Entity)context.InputParameters["Target"];
                }
                else if (context.MessageName.ToLower() == "update")
                {
                    _correntEntity = context.PostEntityImages["Post"];
                }
                else
                {
                    return;
                }

                new_aprove_price _proxyentity = _correntEntity.ToEntity <new_aprove_price>();

                if (_proxyentity.new_cropid == null ||
                    _proxyentity.new_approve == false)
                {
                    return;
                }

                if (_proxyentity.new_recom_purchase_price_nikolaev == null &&
                    _proxyentity.new_recom_purchase_price_odessa == null)
                {
                    return;
                }

                List <new_port> _portList = (from port in orgContext.CreateQuery <new_port>()
                                             where port.new_name == "Одеса" ||
                                             port.new_name == "Миколаїв"
                                             select port).ToList();

                PurchaseOrderUpdateMethod(_proxyentity, _portList, orgContext, service);
                PurchaseTaskUpdateMethod(_proxyentity, _portList, orgContext, service);
                PurchaseCropUpdateMethod(_proxyentity, _portList, orgContext, service);
                PurchaseDealUpdateMethod(_proxyentity, _portList, orgContext, service);
            }
        }
Esempio n. 5
0
        private void PurchaseCropUpdateMethod(new_aprove_price _proxyentity, List <new_port> _portList, OrganizationServiceContext orgContext, IOrganizationService service)
        {
            List <Guid> _cropListForUpdate = (from i in orgContext.CreateQuery <new_purchase_crop>()
                                              where i.new_crop.Id == _proxyentity.new_cropid.Id &&
                                              i.new_offer_status == new OptionSetValue(100000000)
                                              select i.Id).ToList();

            foreach (var item in _cropListForUpdate)
            {
                new_purchase_crop _updateCrop = new new_purchase_crop();
                _updateCrop.Id = item;
                _updateCrop.new_recom_price_mykolaiv = _proxyentity.new_recom_purchase_price_nikolaev;
                _updateCrop.new_recom_price_odesa    = _proxyentity.new_recom_purchase_price_odessa;
                service.Update(_updateCrop);
            }
        }
Esempio n. 6
0
        private void PurchaseCropUpdateMethod(new_aprove_price _proxyentity, List<new_port> _portList, OrganizationServiceContext orgContext, IOrganizationService service)
        {
            List<Guid> _cropListForUpdate = (from i in orgContext.CreateQuery<new_purchase_crop>()
                                             where i.new_crop.Id == _proxyentity.new_cropid.Id &&
                                             i.new_offer_status == new OptionSetValue(100000000)
                                             select i.Id).ToList();

            foreach ( var item in _cropListForUpdate )
            {
                new_purchase_crop _updateCrop = new new_purchase_crop();
                _updateCrop.Id = item;
                _updateCrop.new_recom_price_mykolaiv = _proxyentity.new_recom_purchase_price_nikolaev;
                _updateCrop.new_recom_price_odesa = _proxyentity.new_recom_purchase_price_odessa;
                service.Update(_updateCrop);
            }
        }
Esempio n. 7
0
        private void PurchaseOrderUpdateMethod(new_aprove_price _proxyentity, List <new_port> _portList, OrganizationServiceContext orgContext, IOrganizationService service)
        {
            List <new_purchase_order> _orderListForUpdate = (from i in orgContext.CreateQuery <new_purchase_order>()
                                                             where i.new_cropid.Id == _proxyentity.new_cropid.Id &&
                                                             (i.new_status == new OptionSetValue(100000000) ||
                                                              i.new_status == new OptionSetValue(100000001))
                                                             select i).ToList();

            if (_orderListForUpdate != null)
            {
                foreach (var item in _orderListForUpdate)
                {
                    new_purchase_order_change _newChangeOrder = new new_purchase_order_change();
                    _newChangeOrder.new_cropid         = item.new_cropid;
                    _newChangeOrder.new_purchase_price = item.new_purchase_price;
                    _newChangeOrder.new_purchase_order = new EntityReference()
                    {
                        Id = item.Id, LogicalName = item.LogicalName
                    };
                    service.Create(_newChangeOrder);

                    new_purchase_order _updateOrder = new new_purchase_order();
                    _updateOrder.Id = item.Id;
                    if (item.new_portid == null)
                    {
                        continue;
                    }
                    if (_portList.Where(x => x.Id == item.new_portid.Id).FirstOrDefault().new_name == "Одеса")
                    {
                        _updateOrder.new_purchase_price = _proxyentity.new_recom_purchase_price_odessa;
                    }
                    else if (_portList.Where(x => x.Id == item.new_portid.Id).FirstOrDefault().new_name == "Миколаїв")
                    {
                        _updateOrder.new_purchase_price = _proxyentity.new_recom_purchase_price_nikolaev;
                    }

                    service.Update(_updateOrder);
                }
            }
        }
Esempio n. 8
0
        public void Execute(IServiceProvider serviceProvider)
        {
            try
            {
                IPluginExecutionContext     context        = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
                IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                IOrganizationService        service        = serviceFactory.CreateOrganizationService(context.UserId);

                if (context.PrimaryEntityName != new_monitoring.EntityLogicalName)
                {
                    return;
                }

                Entity entity = null;
                if (context.MessageName.ToLower() == "create")
                {
                    entity = (Entity)context.InputParameters["Target"];
                }
                else if (context.MessageName.ToLower() == "update")
                {
                    entity = (Entity)context.PostEntityImages["Post"];
                }
                else
                {
                    return;
                }

                var correnctEntity = entity.ToEntity <new_monitoring>();
                if (!isTrust(correnctEntity.new_accountid, service))
                {
                    return;
                }

                if (correnctEntity.new_cropid == null)
                {
                    return;
                }

                /* if (DateTime.Now < DateTime.Now.Date.AddHours(11).AddMinutes(05))*/
                using (var orgContext = new OrganizationServiceContext(service))
                {
                    var          haveAprove = CheckaprovedEntity(orgContext, correnctEntity.new_cropid.Id);
                    var          currency   = getCurrency(orgContext) ?? 0;
                    new_constant cons       = getConstanta(orgContext);

                    if (cons == null)
                    {
                        throw new InvalidPluginExecutionException("Створіть запис константи");
                    }

                    var    margin         = cons.new_purchase_margin ?? new Money(0);
                    var    coefficient    = cons.GetAttributeValue <double?>("new_vat_return_coefficient") ?? 1;
                    double nikolaevUSD    = 0;
                    Money  nikolaevRec    = new Money(0);
                    double odesaUSD       = 0;
                    Money  odesaRec       = new Money(0);
                    double odesaRecUSD    = 0;
                    double nikolaevRecUSD = 0;

                    if (correnctEntity.new_purchase_price_nikolaev != null &&
                        correnctEntity.new_purchase_price_nikolaev.Value != 0)
                    {
                        nikolaevUSD    = ((double)correnctEntity.new_purchase_price_nikolaev?.Value / currency) * coefficient;
                        nikolaevRec    = new Money(correnctEntity.new_purchase_price_nikolaev.Value - margin.Value);
                        nikolaevRecUSD = ((double)nikolaevRec.Value / currency) * coefficient;
                    }
                    if (correnctEntity.new_purchase_price_odessa != null &&
                        correnctEntity.new_purchase_price_odessa.Value != 0)
                    {
                        odesaUSD    = ((double)correnctEntity.new_purchase_price_odessa?.Value / currency) * coefficient;
                        odesaRec    = new Money(correnctEntity.new_purchase_price_odessa.Value - margin.Value);
                        odesaRecUSD = ((double)odesaRec.Value / currency) * coefficient;
                    }

                    if (haveAprove == null)
                    {
                        var checkPurchase = (from i in orgContext.CreateQuery <new_aprove_price>()
                                             where i.CreatedOn >= DateTime.Now.Date.ToUniversalTime() &&
                                             i.CreatedOn <= DateTime.Now.AddDays(1).Date.ToUniversalTime() &&
                                             i.new_cropid.Id == correnctEntity.new_cropid.Id &&
                                             i.new_aproved != new OptionSetValue(100000002)
                                             select i).FirstOrDefault();

                        if (checkPurchase == null)
                        {
                            new_aprove_price CreateRecord = new new_aprove_price()
                            {
                                new_max_purchase_price_odessa   = correnctEntity.new_purchase_price_odessa,
                                new_max_purchase_price_nikolaev = correnctEntity.new_purchase_price_nikolaev,
                                new_cropid            = correnctEntity.new_cropid,
                                new_aproved           = new OptionSetValue(100000001),
                                new_trader_Odesaid    = correnctEntity.new_accountid,
                                new_trader_Mykolaivid = correnctEntity.new_accountid,

                                new_dollar_rate = currency,
                                new_max_purchase_mykolaiv_usd      = nikolaevUSD,
                                new_dollar_purchase_price_nikolaev = nikolaevRecUSD,
                                new_recom_purchase_price_nikolaev  = nikolaevRec,
                                new_recom_purchase_price_odessa    = odesaRec,
                                new_max_purchase_odesa_usd         = odesaUSD,
                                new_dollar_purchase_price_odessa   = odesaRecUSD,
                                new_purchase_margin = margin
                            };
                            service.Create(CreateRecord);
                        }
                        else
                        {
                            new_aprove_price UpdateRecord = new new_aprove_price();
                            UpdateRecord.Id = checkPurchase.Id;
                            bool flag = false;

                            if (checkPurchase.new_max_purchase_price_odessa?.Value < correnctEntity.new_purchase_price_odessa?.Value)
                            {
                                UpdateRecord.new_max_purchase_price_odessa = correnctEntity.new_purchase_price_odessa;
                                UpdateRecord.new_trader_Odesaid            = correnctEntity.new_accountid;
                                UpdateRecord.new_aproved        = new OptionSetValue(100000001);
                                UpdateRecord.new_trader_Odesaid = correnctEntity.new_accountid;
                                UpdateRecord.new_recom_purchase_price_odessa  = odesaRec;
                                UpdateRecord.new_max_purchase_odesa_usd       = odesaUSD;
                                UpdateRecord.new_dollar_purchase_price_odessa = odesaRecUSD;
                                UpdateRecord.new_purchase_margin = margin;
                                UpdateRecord.new_dollar_rate     = currency;
                                flag = true;
                            }

                            /* else
                             * {
                             *   UpdateRecord.new_max_purchase_price_odessa = checkPurchase.new_max_purchase_price_odessa;
                             *   UpdateRecord.new_trader_Odesaid = checkPurchase.new_trader_Odesaid;
                             *   UpdateRecord.new_dollar_rate = checkPurchase.new_dollar_rate;
                             *   UpdateRecord.new_max_purchase_odesa_usd = checkPurchase.new_max_purchase_mykolaiv_usd;
                             *   UpdateRecord.new_dollar_purchase_price_odessa = checkPurchase.new_dollar_purchase_price_nikolaev;
                             *   UpdateRecord.new_recom_purchase_price_odessa = checkPurchase.new_recom_purchase_price_nikolaev;
                             *   UpdateRecord.new_purchase_margin = checkPurchase.new_purchase_margin;
                             * }*/

                            if (checkPurchase.new_max_purchase_price_nikolaev?.Value < correnctEntity.new_purchase_price_nikolaev?.Value)
                            {
                                UpdateRecord.new_max_purchase_price_nikolaev = correnctEntity.new_purchase_price_nikolaev;
                                UpdateRecord.new_trader_Mykolaivid           = correnctEntity.new_accountid;
                                UpdateRecord.new_aproved                        = new OptionSetValue(100000001);
                                UpdateRecord.new_trader_Mykolaivid              = correnctEntity.new_accountid;
                                UpdateRecord.new_dollar_rate                    = currency;
                                UpdateRecord.new_max_purchase_mykolaiv_usd      = nikolaevUSD;
                                UpdateRecord.new_dollar_purchase_price_nikolaev = nikolaevRecUSD;
                                UpdateRecord.new_recom_purchase_price_nikolaev  = nikolaevRec;
                                UpdateRecord.new_purchase_margin                = margin;
                                flag = true;
                            }

                            /* else
                             * {
                             *   UpdateRecord.new_max_purchase_price_nikolaev = checkPurchase.new_max_purchase_price_nikolaev;
                             *   UpdateRecord.new_trader_Mykolaivid = checkPurchase.new_trader_Mykolaivid;
                             *   UpdateRecord.new_dollar_rate = checkPurchase.new_dollar_rate;
                             *   UpdateRecord.new_max_purchase_mykolaiv_usd = checkPurchase.new_max_purchase_mykolaiv_usd;
                             *   UpdateRecord.new_dollar_purchase_price_nikolaev = checkPurchase.new_dollar_purchase_price_nikolaev;
                             *   UpdateRecord.new_recom_purchase_price_nikolaev = checkPurchase.new_recom_purchase_price_nikolaev;
                             *   UpdateRecord.new_purchase_margin = checkPurchase.new_purchase_margin;
                             * }*/
                            if (flag)
                            {
                                service.Update(UpdateRecord);
                            }
                        }
                    }
                    else
                    {
                        new_aprove_price CreateRecord = new new_aprove_price();
                        bool             flag         = false;

                        if (haveAprove.new_max_purchase_price_odessa?.Value < correnctEntity.new_purchase_price_odessa?.Value)
                        {
                            CreateRecord.new_max_purchase_price_odessa = correnctEntity.new_purchase_price_odessa;
                            CreateRecord.new_trader_Odesaid            = correnctEntity.new_accountid;
                            CreateRecord.new_aproved                      = new OptionSetValue(100000001);
                            CreateRecord.new_cropid                       = correnctEntity.new_cropid;
                            CreateRecord.new_dollar_rate                  = currency;
                            CreateRecord.new_max_purchase_odesa_usd       = odesaUSD;
                            CreateRecord.new_recom_purchase_price_odessa  = odesaRec;
                            CreateRecord.new_dollar_purchase_price_odessa = odesaRecUSD;
                            CreateRecord.new_purchase_margin              = margin;
                            flag = true;
                        }
                        else
                        {
                            CreateRecord.new_max_purchase_price_odessa = haveAprove.new_max_purchase_price_odessa;
                            CreateRecord.new_trader_Odesaid            = haveAprove.new_trader_Odesaid;
                        }
                        if (haveAprove.new_max_purchase_price_nikolaev?.Value < correnctEntity.new_purchase_price_nikolaev?.Value)
                        {
                            CreateRecord.new_max_purchase_price_nikolaev = correnctEntity.new_purchase_price_nikolaev;
                            CreateRecord.new_trader_Mykolaivid           = correnctEntity.new_accountid;
                            CreateRecord.new_aproved     = new OptionSetValue(100000001);
                            CreateRecord.new_cropid      = correnctEntity.new_cropid;
                            CreateRecord.new_dollar_rate = currency;
                            CreateRecord.new_max_purchase_mykolaiv_usd      = nikolaevUSD;
                            CreateRecord.new_recom_purchase_price_nikolaev  = nikolaevRec;
                            CreateRecord.new_dollar_purchase_price_nikolaev = nikolaevRecUSD;
                            CreateRecord.new_purchase_margin = margin;
                            flag = true;
                        }
                        else
                        {
                            CreateRecord.new_max_purchase_price_nikolaev = haveAprove.new_max_purchase_price_nikolaev;
                            CreateRecord.new_trader_Mykolaivid           = haveAprove.new_trader_Mykolaivid;
                        }
                        if (flag)
                        {
                            service.Create(CreateRecord);
                            new_aprove_price updateToClose = new new_aprove_price();
                            updateToClose.Id = haveAprove.Id;
                            //updateToClose.new_aproved = new OptionSetValue(100000002);
                            service.Update(updateToClose);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw new InvalidPluginExecutionException(ex.Message);
            }
        }
Esempio n. 9
0
        private void PurchaseTaskUpdateMethod(new_aprove_price _proxyentity, List<new_port> _portList, OrganizationServiceContext orgContext, IOrganizationService service)
        {
            List<new_purchase_task> _taskListForUpdate = (from i in orgContext.CreateQuery<new_purchase_task>()
                                                          where i.new_product.Id == _proxyentity.new_cropid.Id &&
                                                          i.new_status == new OptionSetValue(100000000)
                                                          select i).ToList();

            foreach ( var item in _taskListForUpdate )
            {
                new_purchase_task _updateTask = new new_purchase_task();
                _updateTask.Id = item.Id;
                if ( item.new_port == null )
                    continue;
                if ( _portList.Where(x => x.Id == item.new_port.Id).FirstOrDefault().new_name == "Одеса" )
                {
                    _updateTask.new_aprove_purchase_price = _proxyentity.new_recom_purchase_price_odessa;
                }
                else if ( _portList.Where(x => x.Id == item.new_port.Id).FirstOrDefault().new_name == "Миколаїв" )
                {
                    _updateTask.new_aprove_purchase_price = _proxyentity.new_recom_purchase_price_nikolaev;
                }
                service.Update(_updateTask);
            }
        }
Esempio n. 10
0
        private void PurchaseOrderUpdateMethod(new_aprove_price _proxyentity, List<new_port> _portList, OrganizationServiceContext orgContext, IOrganizationService service)
        {
            List<new_purchase_order> _orderListForUpdate = (from i in orgContext.CreateQuery<new_purchase_order>()
                                                            where i.new_cropid.Id == _proxyentity.new_cropid.Id &&
                                                            (i.new_status == new OptionSetValue(100000000) ||
                                                             i.new_status == new OptionSetValue(100000001))
                                                            select i).ToList();
            if ( _orderListForUpdate != null )
            {
                foreach ( var item in _orderListForUpdate )
                {
                    new_purchase_order_change _newChangeOrder = new new_purchase_order_change();
                    _newChangeOrder.new_cropid = item.new_cropid;
                    _newChangeOrder.new_purchase_price = item.new_purchase_price;
                    _newChangeOrder.new_purchase_order = new EntityReference() { Id = item.Id, LogicalName = item.LogicalName };
                    service.Create(_newChangeOrder);

                    new_purchase_order _updateOrder = new new_purchase_order();
                    _updateOrder.Id = item.Id;
                    if ( item.new_portid == null )
                        continue;
                    if ( _portList.Where(x => x.Id == item.new_portid.Id).FirstOrDefault().new_name == "Одеса" )
                    {
                        _updateOrder.new_purchase_price = _proxyentity.new_recom_purchase_price_odessa;
                    }
                    else if ( _portList.Where(x => x.Id == item.new_portid.Id).FirstOrDefault().new_name == "Миколаїв" )
                    {
                        _updateOrder.new_purchase_price = _proxyentity.new_recom_purchase_price_nikolaev;
                    }

                    service.Update(_updateOrder);
                }
            }
        }
Esempio n. 11
0
        public void Execute(IServiceProvider serviceProvider)
        {
            try
            {
                IPluginExecutionContext context = (IPluginExecutionContext) serviceProvider.GetService(typeof(IPluginExecutionContext));
                IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory) serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

                if ( context.PrimaryEntityName != new_monitoring.EntityLogicalName )
                    return;

                Entity entity = null;
                if ( context.MessageName.ToLower() == "create" )
                {
                    entity = (Entity) context.InputParameters["Target"];

                }
                else if ( context.MessageName.ToLower() == "update" )
                {
                    entity = (Entity) context.PostEntityImages["Post"];
                }
                else
                {
                    return;
                }

                var correnctEntity = entity.ToEntity<new_monitoring>();
                if ( !isTrust(correnctEntity.new_accountid, service) )
                    return;

                if ( correnctEntity.new_cropid == null )
                    return;

                /* if (DateTime.Now < DateTime.Now.Date.AddHours(11).AddMinutes(05))*/
                using ( var orgContext = new OrganizationServiceContext(service) )
                {
                    var haveAprove = CheckaprovedEntity(orgContext, correnctEntity.new_cropid.Id);
                    var currency = getCurrency(orgContext) ?? 0;
                    new_constant cons = getConstanta(orgContext);

                    if (cons == null)
                        throw new InvalidPluginExecutionException("Створіть запис константи");

                    var margin = cons.new_purchase_margin ?? new Money(0);
                    var coefficient = cons.GetAttributeValue<double?>("new_vat_return_coefficient") ?? 1;
                    double nikolaevUSD = 0;
                    Money nikolaevRec = new Money(0);
                    double odesaUSD = 0;
                    Money odesaRec = new Money(0);
                    double odesaRecUSD = 0;
                    double nikolaevRecUSD = 0;

                    if ( correnctEntity.new_purchase_price_nikolaev != null &&
                        correnctEntity.new_purchase_price_nikolaev.Value != 0 )
                    {
                        nikolaevUSD = ((double) correnctEntity.new_purchase_price_nikolaev?.Value / currency)* coefficient;
                        nikolaevRec = new Money(correnctEntity.new_purchase_price_nikolaev.Value - margin.Value);
                        nikolaevRecUSD = ((double) nikolaevRec.Value / currency) * coefficient;
                    }
                    if ( correnctEntity.new_purchase_price_odessa != null &&
                        correnctEntity.new_purchase_price_odessa.Value != 0 )
                    {
                        odesaUSD = ((double) correnctEntity.new_purchase_price_odessa?.Value / currency)* coefficient;
                        odesaRec = new Money(correnctEntity.new_purchase_price_odessa.Value - margin.Value);
                        odesaRecUSD = ((double) odesaRec.Value / currency)*coefficient;
                    }

                    if ( haveAprove == null )
                    {
                        var checkPurchase = (from i in orgContext.CreateQuery<new_aprove_price>()
                                             where i.CreatedOn >= DateTime.Now.Date.ToUniversalTime() &&
                                                  i.CreatedOn <= DateTime.Now.AddDays(1).Date.ToUniversalTime() &&
                                                  i.new_cropid.Id == correnctEntity.new_cropid.Id &&
                                                  i.new_aproved != new OptionSetValue(100000002)
                                             select i).FirstOrDefault();

                        if ( checkPurchase == null )
                        {
                            new_aprove_price CreateRecord = new new_aprove_price()
                            {
                                new_max_purchase_price_odessa = correnctEntity.new_purchase_price_odessa,
                                new_max_purchase_price_nikolaev = correnctEntity.new_purchase_price_nikolaev,
                                new_cropid = correnctEntity.new_cropid,
                                new_aproved = new OptionSetValue(100000001),
                                new_trader_Odesaid = correnctEntity.new_accountid,
                                new_trader_Mykolaivid = correnctEntity.new_accountid,

                                new_dollar_rate = currency,
                                new_max_purchase_mykolaiv_usd = nikolaevUSD,
                                new_dollar_purchase_price_nikolaev = nikolaevRecUSD,
                                new_recom_purchase_price_nikolaev = nikolaevRec,
                                new_recom_purchase_price_odessa = odesaRec,
                                new_max_purchase_odesa_usd = odesaUSD,
                                new_dollar_purchase_price_odessa = odesaRecUSD,
                                new_purchase_margin = margin
                            };
                            service.Create(CreateRecord);
                        }
                        else
                        {
                            new_aprove_price UpdateRecord = new new_aprove_price();
                            UpdateRecord.Id = checkPurchase.Id;
                            bool flag = false;

                            if ( checkPurchase.new_max_purchase_price_odessa?.Value < correnctEntity.new_purchase_price_odessa?.Value )
                            {
                                UpdateRecord.new_max_purchase_price_odessa = correnctEntity.new_purchase_price_odessa;
                                UpdateRecord.new_trader_Odesaid = correnctEntity.new_accountid;
                                UpdateRecord.new_aproved = new OptionSetValue(100000001);
                                UpdateRecord.new_trader_Odesaid = correnctEntity.new_accountid;
                                UpdateRecord.new_recom_purchase_price_odessa = odesaRec;
                                UpdateRecord.new_max_purchase_odesa_usd = odesaUSD;
                                UpdateRecord.new_dollar_purchase_price_odessa = odesaRecUSD;
                                UpdateRecord.new_purchase_margin = margin;
                                UpdateRecord.new_dollar_rate = currency;
                                flag = true;
                            }
                           /* else
                            {
                                UpdateRecord.new_max_purchase_price_odessa = checkPurchase.new_max_purchase_price_odessa;
                                UpdateRecord.new_trader_Odesaid = checkPurchase.new_trader_Odesaid;
                                UpdateRecord.new_dollar_rate = checkPurchase.new_dollar_rate;
                                UpdateRecord.new_max_purchase_odesa_usd = checkPurchase.new_max_purchase_mykolaiv_usd;
                                UpdateRecord.new_dollar_purchase_price_odessa = checkPurchase.new_dollar_purchase_price_nikolaev;
                                UpdateRecord.new_recom_purchase_price_odessa = checkPurchase.new_recom_purchase_price_nikolaev;
                                UpdateRecord.new_purchase_margin = checkPurchase.new_purchase_margin;
                            }*/

                            if ( checkPurchase.new_max_purchase_price_nikolaev?.Value < correnctEntity.new_purchase_price_nikolaev?.Value )
                            {
                                UpdateRecord.new_max_purchase_price_nikolaev = correnctEntity.new_purchase_price_nikolaev;
                                UpdateRecord.new_trader_Mykolaivid = correnctEntity.new_accountid;
                                UpdateRecord.new_aproved = new OptionSetValue(100000001);
                                UpdateRecord.new_trader_Mykolaivid = correnctEntity.new_accountid;
                                UpdateRecord.new_dollar_rate = currency;
                                UpdateRecord.new_max_purchase_mykolaiv_usd = nikolaevUSD;
                                UpdateRecord.new_dollar_purchase_price_nikolaev = nikolaevRecUSD;
                                UpdateRecord.new_recom_purchase_price_nikolaev = nikolaevRec;
                                UpdateRecord.new_purchase_margin = margin;
                                flag = true;
                            }
                           /* else
                            {
                                UpdateRecord.new_max_purchase_price_nikolaev = checkPurchase.new_max_purchase_price_nikolaev;
                                UpdateRecord.new_trader_Mykolaivid = checkPurchase.new_trader_Mykolaivid;
                                UpdateRecord.new_dollar_rate = checkPurchase.new_dollar_rate;
                                UpdateRecord.new_max_purchase_mykolaiv_usd = checkPurchase.new_max_purchase_mykolaiv_usd;
                                UpdateRecord.new_dollar_purchase_price_nikolaev = checkPurchase.new_dollar_purchase_price_nikolaev;
                                UpdateRecord.new_recom_purchase_price_nikolaev = checkPurchase.new_recom_purchase_price_nikolaev;
                                UpdateRecord.new_purchase_margin = checkPurchase.new_purchase_margin;
                            }*/
                            if ( flag )
                            {
                                service.Update(UpdateRecord);
                            }
                        }
                    }
                    else
                    {
                        new_aprove_price CreateRecord = new new_aprove_price();
                        bool flag = false;

                        if ( haveAprove.new_max_purchase_price_odessa?.Value < correnctEntity.new_purchase_price_odessa?.Value )
                        {
                            CreateRecord.new_max_purchase_price_odessa = correnctEntity.new_purchase_price_odessa;
                            CreateRecord.new_trader_Odesaid = correnctEntity.new_accountid;
                            CreateRecord.new_aproved = new OptionSetValue(100000001);
                            CreateRecord.new_cropid = correnctEntity.new_cropid;
                            CreateRecord.new_dollar_rate = currency;
                            CreateRecord.new_max_purchase_odesa_usd = odesaUSD;
                            CreateRecord.new_recom_purchase_price_odessa = odesaRec;
                            CreateRecord.new_dollar_purchase_price_odessa = odesaRecUSD;
                            CreateRecord.new_purchase_margin = margin;
                            flag = true;
                        }
                        else
                        {
                            CreateRecord.new_max_purchase_price_odessa = haveAprove.new_max_purchase_price_odessa;
                            CreateRecord.new_trader_Odesaid = haveAprove.new_trader_Odesaid;
                        }
                        if ( haveAprove.new_max_purchase_price_nikolaev?.Value < correnctEntity.new_purchase_price_nikolaev?.Value )
                        {
                            CreateRecord.new_max_purchase_price_nikolaev = correnctEntity.new_purchase_price_nikolaev;
                            CreateRecord.new_trader_Mykolaivid = correnctEntity.new_accountid;
                            CreateRecord.new_aproved = new OptionSetValue(100000001);
                            CreateRecord.new_cropid = correnctEntity.new_cropid;
                            CreateRecord.new_dollar_rate = currency;
                            CreateRecord.new_max_purchase_mykolaiv_usd = nikolaevUSD;
                            CreateRecord.new_recom_purchase_price_nikolaev = nikolaevRec;
                            CreateRecord.new_dollar_purchase_price_nikolaev = nikolaevRecUSD;
                            CreateRecord.new_purchase_margin = margin;
                            flag = true;
                        }
                        else
                        {
                            CreateRecord.new_max_purchase_price_nikolaev = haveAprove.new_max_purchase_price_nikolaev;
                            CreateRecord.new_trader_Mykolaivid = haveAprove.new_trader_Mykolaivid;
                        }
                        if ( flag )
                        {
                            service.Create(CreateRecord);
                            new_aprove_price updateToClose = new new_aprove_price();
                            updateToClose.Id = haveAprove.Id;
                            //updateToClose.new_aproved = new OptionSetValue(100000002);
                            service.Update(updateToClose);
                        }
                    }
                }
            }
            catch ( Exception ex )
            {
                throw new InvalidPluginExecutionException(ex.Message);
            }
        }