コード例 #1
0
        public static decimal GetCompanyRevenuePercent(int opprotunityId)
        {
            var    recordset = (Recordset)SapDiConnection.Instance.GetBusinessObject(BoObjectTypes.BoRecordset);
            string sql       = "select ifnull(\"U_Opporcomm\",0) from \"OPR1\" where \"Line\" = \r\n(select max(\"Line\") from \"OPR1\" where \"OpprId\" = \'{0}\' )\r\nand \"OpprId\" = \'{0}\'";

            sql = String.Format(sql, opprotunityId);
            recordset.DoQuery(sql);
            recordset.MoveFirst();

            return(InternalConverters.ConvertStringToDecimal(recordset.Fields.Item(0).Value.ToString()));
        }
コード例 #2
0
        private void BindOpportunityToForm()
        {
            try
            {
                _opportunity.GetByKey(_opportunityNumber);
                EditText0.Value  = _opportunityNumber.ToString();
                EditText3.Value  = _opportunity.OpportunityName;
                EditText1.Value  = _opportunity.CardCode;
                EditText4.Value  = _opportunity.CustomerName;
                EditText12.Value = (_opportunity.WeightedSumLC - (double)InternalConverters.ConvertStringToDecimal(OpportunityRepository.GetOpportunityUsedAmount(_opportunityNumber).ToString())).ToString();
                EditText6.Value  = SalesPersonRepository.GetNameById(_opportunity.SalesPerson);
                EditText8.Value  = _opportunity.ClosingPercentage + "%";

                //  var businessPartners =
                //      (BusinessPartners) SapDiConnection.Instance.GetBusinessObject(BoObjectTypes
                //          .oBusinessPartners);
                //  businessPartners.GetByKey(_opportunity.CardCode);
                // // businessPartners.ContactEmployees.SetCurrentLine(_opportunity.ContactPerson - 1);
                ////  EditText5.Value = businessPartners.ContactEmployees.Name;

                EditText7.Value = _opportunity.StartDate.ToString("dd.MM.yy");


                //add items
                var items = OpportunityRepository.GetOpportunityItemsById(_opportunityNumber);
                var count = 1;
                foreach (var item in items)
                {
                    Matrix0.AddRow();
                    ((EditText)Matrix0.Columns.Item("#").Cells.Item(count).Specific).Value     = count.ToString();
                    ((EditText)Matrix0.Columns.Item("Col_0").Cells.Item(count).Specific).Value = item.Id;
                    ((EditText)Matrix0.Columns.Item("Col_1").Cells.Item(count).Specific).Value = item.Name;
                    count++;
                }

                //dates
                EditText9.Value  = DateTime.Today.ToString("yyyyMMdd");
                EditText10.Value = DateTime.Today.ToString("yyyyMMdd");
                EditText11.Value = DateTime.Today.ToString("yyyyMMdd");

                EditText16.Value = InternalConverters.StringToDateTypeEdittext(_opportunity.UserFields.Fields.Item("U_ctrctdateto").Value.ToString());
                EditText17.Value = InternalConverters.StringToDateTypeEdittext(_opportunity.UserFields.Fields.Item("U_cntrctdateFrom").Value.ToString());
                _distrule        = _opportunity.UserFields.Fields.Item("U_DistRule").Value.ToString();
                _contractMonths  = InternalConverters.EditTextToDateTime(EditText17.Value).Subtract(InternalConverters.EditTextToDateTime(EditText16.Value)).Days /
                                   (365.25 / 12);
                _contractMonths      = Math.Round(_contractMonths);
                StaticText25.Caption = _contractMonths + " months";
            }
            catch (Exception exception)
            {
                Application.SBO_Application.SetStatusBarMessage(exception.Message);
                UIAPIRawForm.Close();
            }
        }
コード例 #3
0
        public static decimal GetOpportunityUsedAmount(int opprotunityId)
        {
            var    recordset = (Recordset)SapDiConnection.Instance.GetBusinessObject(BoObjectTypes.BoRecordset);
            string sql       =
                "select IFNULL(SUM(t1.\"DocTotalFC\"),0) as \"Total\" from \"OPR1\" t0 \r\nleft join \"OINV\" t1 on t1.\"DocNum\" = t0.\"DocNumber\"  where t0.\"OpprId\" = {0} and t0.\"ObjType\" = 13\r\nand t1.\"CardCode\" not in (SELECT t2.\"RelatCard\" FROM \"OPR2\" t2 where t2.\"OpportId\" = {0} )\r\n";

            sql = String.Format(sql, opprotunityId);
            recordset.DoQuery(sql);
            recordset.MoveFirst();

            return(InternalConverters.ConvertStringToDecimal(recordset.Fields.Item(0).Value.ToString()));
        }
コード例 #4
0
        private Result CreateType2()
        {
            int    errCode;
            string errMSG;
            var    newObjectCode = "";
            var    percent       = OpportunityRepository.GetCompanyRevenuePercent(_opportunityNumber);
            var    partners      = OpportunityRepository.GetPartnerList(_opportunityNumber);

            if (partners.Count == 0)
            {
                return new Result {
                           Code = 10, Message = "Check Partners"
                }
            }
            ;

            var ARInvoice = (Documents)SapDiConnection.Instance.GetBusinessObject(BoObjectTypes.oInvoices);

            ARInvoice.CardCode        = EditText19.Value;
            ARInvoice.DocDate         = InternalConverters.EditTextToDateTime(EditText9.Value);
            ARInvoice.DocDueDate      = InternalConverters.EditTextToDateTime(EditText10.Value);
            ARInvoice.TaxDate         = InternalConverters.EditTextToDateTime(EditText11.Value);
            ARInvoice.SalesPersonCode = _opportunity.SalesPerson;
            ARInvoice.DocCurrency     = _opportunity.UserFields.Fields.Item("U_CURRENCY").Value.ToString();
            ARInvoice.UserFields.Fields.Item("U_OppId").Value = _opportunityNumber;

            for (var i = 1; i <= Matrix0.RowCount; i++)
            {
                ARInvoice.Lines.ItemCode = ((EditText)Matrix0.Columns.Item(1).Cells.Item(i).Specific).Value;
                ARInvoice.Lines.Quantity = 1;

                if (_opportunityType == 1 && CheckBox0.Checked)
                {
                    ARInvoice.Lines.AccountCode = ((int)AccountCodes.insuranceBrokerage).ToString();
                }
                else if (_opportunityType == 2 && CheckBox0.Checked)
                {
                    ARInvoice.Lines.AccountCode = ((int)AccountCodes.reInsuranceBrokerage).ToString();
                }
                else if (!CheckBox0.Checked)
                {
                    ARInvoice.Lines.AccountCode = ((int)AccountCodes.clearingFirst).ToString();
                }

                ARInvoice.Lines.Price        = (double)InternalConverters.ConvertStringToDecimal(EditText12.Value);
                ARInvoice.Lines.CostingCode  = "B2B";
                ARInvoice.Lines.CostingCode2 = _distrule;
                ARInvoice.Lines.Add();
            }

            ARInvoice.Add();

            SapDiConnection.Instance.GetLastError(out errCode, out errMSG);
            if (errCode != 0)
            {
                return new Result {
                           Code = errCode, Message = errMSG
                }
            }
            ;
            SapDiConnection.Instance.GetNewObjectCode(out newObjectCode);
            AddStageToOpportunity(newObjectCode, BoAPARDocumentTypes.bodt_Invoice);

            SapDiConnection.Instance.GetLastError(out errCode, out errMSG);
            if (errCode != 0)
            {
                return new Result {
                           Code = errCode, Message = errMSG
                }
            }
            ;

            //partners
            foreach (var partner in partners)
            {
                //ap for partner
                var APInvoiceForPartner = (Documents)SapDiConnection.Instance.GetBusinessObject(BoObjectTypes.oPurchaseInvoices);

                APInvoiceForPartner.CardCode        = partner.Vendor;
                APInvoiceForPartner.DocDate         = InternalConverters.EditTextToDateTime(EditText9.Value);
                APInvoiceForPartner.DocDueDate      = InternalConverters.EditTextToDateTime(EditText10.Value);
                APInvoiceForPartner.TaxDate         = InternalConverters.EditTextToDateTime(EditText11.Value);
                APInvoiceForPartner.SalesPersonCode = _opportunity.SalesPerson;
                APInvoiceForPartner.DocCurrency     = _opportunity.UserFields.Fields.Item("U_CURRENCY").Value.ToString();
                APInvoiceForPartner.UserFields.Fields.Item("U_OppId").Value = _opportunityNumber;

                for (var i = 1; i <= Matrix0.RowCount; i++)
                {
                    APInvoiceForPartner.Lines.ItemCode = ((EditText)Matrix0.Columns.Item(1).Cells.Item(i).Specific).Value;
                    APInvoiceForPartner.Lines.Quantity = 1;

                    if (_opportunityType == 1 && CheckBox0.Checked)
                    {
                        APInvoiceForPartner.Lines.AccountCode = ((int)AccountCodes.insuranceBrokerage).ToString();
                    }
                    else if (_opportunityType == 2 && CheckBox0.Checked)
                    {
                        APInvoiceForPartner.Lines.AccountCode = ((int)AccountCodes.reInsuranceBrokerage).ToString();
                    }
                    else if (!CheckBox0.Checked)
                    {
                        APInvoiceForPartner.Lines.AccountCode = ((int)AccountCodes.clearingFirst).ToString();
                    }

                    APInvoiceForPartner.Lines.Price        = (double)((InternalConverters.ConvertStringToDecimal(EditText12.Value) / 100) * partner.Rate);
                    APInvoiceForPartner.Lines.CostingCode  = "B2B";
                    APInvoiceForPartner.Lines.CostingCode2 = _distrule;
                    APInvoiceForPartner.Lines.Add();
                }


                APInvoiceForPartner.Add();
                SapDiConnection.Instance.GetLastError(out errCode, out errMSG);
                if (errCode != 0)
                {
                    return new Result {
                               Code = errCode, Message = errMSG
                    }
                }
                ;
                SapDiConnection.Instance.GetNewObjectCode(out newObjectCode);

                AddStageToOpportunity(newObjectCode, BoAPARDocumentTypes.bodt_PurchaseInvoice);

                SapDiConnection.Instance.GetLastError(out errCode, out errMSG);
                if (errCode != 0)
                {
                    return new Result {
                               Code = errCode, Message = errMSG
                    }
                }
                ;
            }
            return(new Result {
                Code = errCode, Message = errMSG
            });
        }
コード例 #5
0
        private List <AccountAction> CreateListOfActionsForAccounts()
        {
            List <AccountAction> actions = new List <AccountAction>();
            var currency  = _opportunity.UserFields.Fields.Item("U_CURRENCY").Value.ToString();
            var begda     = InternalConverters.EditTextToDateTime(EditText16.Value);
            var endda     = InternalConverters.EditTextToDateTime(EditText17.Value);
            var diffMonth = Math.Round(endda.Subtract(begda).Days / (365.25 / 12));
            var recordset = ((SBObob)SapDiConnection.Instance.GetBusinessObject(BoObjectTypes.BoBridge)).GetCurrencyRate(currency, DateTime.Today);

            recordset.MoveFirst();
            var rate   = InternalConverters.ConvertStringToDecimal(recordset.Fields.Item(0).Value.ToString());
            var amount =
                (double)((InternalConverters.ConvertStringToDecimal(EditText12.Value) *
                          (decimal)_opportunity.GrossProfit) / 100) / diffMonth;
            AccountCodes toAccount = AccountCodes.insuranceBrokerage;

            if (_opportunityType == 1)
            {
                toAccount = AccountCodes.insuranceBrokerage;
            }
            else if (_opportunityType == 2)
            {
                toAccount = AccountCodes.reInsuranceBrokerage;
            }


            amount = amount * (double)rate;
            for (int i = 0; i < diffMonth; i++)
            {
                if (begda < DateTime.Today)
                {
                    actions.Add(new AccountAction()
                    {
                        //JE
                        Type           = 1,
                        OppNumber      = _opportunityNumber,
                        ContractNumber = "",
                        RunDate        = begda,
                        Amount         = amount,
                        Currency       = "AZN",
                        FromAccount    = AccountCodes.clearingFirst,
                        ToAccount      = toAccount
                    });
                }
                else
                {
                    actions.Add(new AccountAction()
                    {
                        //JE Planning
                        Type           = 2,
                        OppNumber      = _opportunityNumber,
                        ContractNumber = "",
                        RunDate        = begda,
                        Amount         = amount,
                        Currency       = "AZN",
                        FromAccount    = AccountCodes.clearingFirst,
                        ToAccount      = toAccount
                    });
                }

                begda = begda.AddMonths(1);
            }

            return(actions);
        }
コード例 #6
0
        private void Button0_PressedAfter(object sboObject, SBOItemEventArg pVal)
        {
            var answer = Application.SBO_Application.MessageBox("Create Documents For  Opportunity ?", 2, "Yes", "No");

            if (answer == 2)
            {
                return;
            }

            if (InternalConverters.ConvertStringToDecimal(EditText12.Value) == 0)
            {
                Application.SBO_Application.SetStatusBarMessage("Amount Must Be More Than Zero");
                return;
            }

            if (ComboBox0.Selected == null)
            {
                Application.SBO_Application.SetStatusBarMessage("Please Select Operation Type");
                return;
            }

            if (Convert.ToDecimal(EditText12.Value) == 0)
            {
                Application.SBO_Application.SetStatusBarMessage("Please Fill Amount");
                return;
            }

            if (string.IsNullOrEmpty(EditText9.Value) || string.IsNullOrEmpty(EditText9.Value) ||
                string.IsNullOrEmpty(EditText9.Value))
            {
                Application.SBO_Application.SetStatusBarMessage("Please Fill Dates");
                return;
            }

            if (String.IsNullOrEmpty(EditText19.Value))
            {
                Application.SBO_Application.SetStatusBarMessage("Please Select Business Partner");
                return;
            }


            if (String.IsNullOrEmpty(EditText15.Value))
            {
                Application.SBO_Application.SetStatusBarMessage("Please Select Payment List");
                return;
            }

            try
            {
                var result = new Result();
                SapDiConnection.Instance.StartTransaction();

                //cretae A/R A/P Documents
                switch (ComboBox0.Selected.Description)
                {
                case "Forma 1":
                    result = CreateType1();
                    break;

                case "Forma 2":
                    result = CreateType2();
                    break;

                case "Forma 3":
                    result = CreateType3();
                    break;
                }

                if (result.Code != 0)
                {
                    throw new Exception(result.Message);
                }

                //create JE schedule
                if (!CheckBox0.Checked)
                {
                    result = CreateJESchedule();
                }

                if (result.Code != 0)
                {
                    throw new Exception(result.Message);
                }


                SapDiConnection.Instance.EndTransaction(BoWfTransOpt.wf_Commit);
                Application.SBO_Application.MessageBox("Documents Succesfully Created");
                UIAPIRawForm.Close();
            }
            catch (Exception exception)
            {
                Application.SBO_Application.SetStatusBarMessage(exception.Message);
                if (SapDiConnection.Instance.InTransaction)
                {
                    SapDiConnection.Instance.EndTransaction(BoWfTransOpt.wf_RollBack);
                }
                Application.SBO_Application.MessageBox(exception.Message);
            }
        }