Beispiel #1
0
        public CustomerInvoiceViewModel GetCustomersByMainCodeSubCode(string mainCode, string subCode)
        {
            var custInvoice = new CustomerInvoiceViewModel();
            var customer    = _customerRepository.Query(cus => cus.CustomerMainC == mainCode && cus.CustomerSubC == subCode).FirstOrDefault();

            if (customer != null)
            {
                var custViewModel = Mapper.Map <Customer_M, CustomerViewModel>(customer);
                var custIndex     = FindIndex(customer.CustomerMainC, customer.CustomerSubC);
                custViewModel.CustomerIndex = custIndex;
                custInvoice.Customer        = custViewModel;

                if (!string.IsNullOrEmpty(custViewModel.InvoiceMainC) && !string.IsNullOrEmpty(custViewModel.InvoiceSubC))
                {
                    var invoice =
                        _customerRepository.Query(cus => cus.CustomerMainC == custViewModel.InvoiceMainC && cus.CustomerSubC == custViewModel.InvoiceSubC).FirstOrDefault();
                    var invoiceViewModel = Mapper.Map <Customer_M, InvoiceViewModel>(invoice);
                    custInvoice.Invoice = invoiceViewModel;

                    // get init customer payment
                    var initCustomerPayment =
                        _customerBalanceRepository.Get(
                            p => p.CustomerMainC == mainCode & p.CustomerSubC == "000" & p.CustomerBalanceD == new DateTime(1900, 1, 1));
                    if (initCustomerPayment != null)
                    {
                        custInvoice.Invoice.InitCustomerPayment = initCustomerPayment.TotalAmount;
                    }

                    // get settlement list
                    var settlementList = _customerSettlementRepository.Query(set => set.CustomerMainC == custViewModel.InvoiceMainC && set.CustomerSubC == custViewModel.InvoiceSubC).OrderBy(i => i.ApplyD).ToList();
                    custInvoice.SettlementList = Mapper.Map <List <CustomerSettlement_M>, List <CustomerSettlementViewModel> >(settlementList);

                    // get profit markup list
                    var profitMarkupList = _customerGrossProfitRepository.Query(p => p.CustomerMainC == custViewModel.InvoiceMainC && p.CustomerSubC == custViewModel.InvoiceSubC).OrderBy(i => i.ApplyD).ToList();
                    custInvoice.ProfitMarkupList = Mapper.Map <List <CustomerGrossProfit_M>, List <CustomerGrossProfitViewModel> >(profitMarkupList);
                }

                custInvoice.Status = Convert.ToInt32(CustomerStatus.Edit);
            }
            else
            {
                customer = _customerRepository.Query(cus => cus.CustomerMainC == mainCode && cus.CustomerSubC == "000").FirstOrDefault();
                if (customer != null)
                {
                    var custViewModel = Mapper.Map <Customer_M, CustomerViewModel>(customer);
                    custInvoice.Customer = custViewModel;
                    custInvoice.Customer.CustomerSubC = subCode;

                    if (!string.IsNullOrEmpty(custViewModel.InvoiceMainC) && !string.IsNullOrEmpty(custViewModel.InvoiceSubC))
                    {
                        var invoice =
                            _customerRepository.Query(cus => cus.CustomerMainC == custViewModel.InvoiceMainC && cus.CustomerSubC == custViewModel.InvoiceSubC).FirstOrDefault();
                        var invoiceViewModel = Mapper.Map <Customer_M, InvoiceViewModel>(invoice);
                        custInvoice.Invoice = invoiceViewModel;

                        // get init customer payment
                        var initCustomerPayment =
                            _customerBalanceRepository.Get(
                                p => p.CustomerMainC == mainCode & p.CustomerSubC == "000" & p.CustomerBalanceD == new DateTime(1900, 1, 1));
                        if (initCustomerPayment != null)
                        {
                            custInvoice.Invoice.InitCustomerPayment = initCustomerPayment.TotalAmount;
                        }

                        // get settlement list
                        var settlementList = _customerSettlementRepository.Query(set => set.CustomerMainC == custViewModel.InvoiceMainC && set.CustomerSubC == custViewModel.InvoiceSubC).OrderBy(i => i.ApplyD).ToList();
                        custInvoice.SettlementList = Mapper.Map <List <CustomerSettlement_M>, List <CustomerSettlementViewModel> >(settlementList);

                        // get profit markup list
                        var profitMarkupList = _customerGrossProfitRepository.Query(p => p.CustomerMainC == custViewModel.InvoiceMainC && p.CustomerSubC == custViewModel.InvoiceSubC).OrderBy(i => i.ApplyD).ToList();
                        custInvoice.ProfitMarkupList = Mapper.Map <List <CustomerGrossProfit_M>, List <CustomerGrossProfitViewModel> >(profitMarkupList);
                    }
                    custInvoice.Status = Convert.ToInt32(CustomerStatus.Add);
                }
                else
                {
                    custInvoice.Status = Convert.ToInt32(CustomerStatus.Add);
                }
            }
            return(custInvoice);
        }
        public InvoiceInfotViewModel GetLimitStartAndEndInvoiceD(string invoiceMainC, string invoiceSubC, int invoiceMonth, int invoiceYear)
        {
            DateTime?startDate  = null;
            DateTime?endDate    = null;
            var      settlement = new CustomerSettlement_M();
            var      result     = new InvoiceInfotViewModel();

            var customerSettlement = _customerSettlementRepository.Query(cus => cus.CustomerMainC == invoiceMainC &&
                                                                         cus.CustomerSubC == invoiceSubC &&
                                                                         cus.ApplyD.Year <= invoiceYear)
                                     .OrderBy("ApplyD desc");

            if (customerSettlement.Any())
            {
                var customerSettlementList = customerSettlement.ToList();

                if (customerSettlementList[0].ApplyD.Year < invoiceYear)
                {
                    settlement = customerSettlementList[0];
                }
                else
                {
                    for (var iloop = 0; iloop < customerSettlementList.Count; iloop++)
                    {
                        if (customerSettlementList[iloop].ApplyD.Month <= invoiceMonth)
                        {
                            settlement = customerSettlementList[iloop];
                            break;
                        }

                        settlement = null;
                    }
                }

                // check settlement
                if (settlement != null)
                {
                    // set start date
                    if (settlement.ApplyD.Month == invoiceMonth && settlement.ApplyD.Year == invoiceYear)
                    {
                        startDate = settlement.ApplyD;
                    }
                    else
                    {
                        if (settlement.SettlementD == 31)
                        {
                            startDate = new DateTime(invoiceYear, invoiceMonth, 1);
                        }
                        else
                        {
                            startDate = new DateTime(invoiceYear, invoiceMonth, 1);
                            //startDate = new DateTime(invoiceYear, invoiceMonth, settlement.SettlementD + 1);
                        }
                    }
                    // set end date
                    if (settlement.SettlementD == 31)
                    {
                        endDate = new DateTime(invoiceYear, invoiceMonth, DateTime.DaysInMonth(invoiceYear, invoiceMonth));
                    }
                    else
                    {
                        if (invoiceMonth == 12)
                        {
                            endDate = new DateTime(invoiceYear + 1, 1, settlement.SettlementD);
                        }
                        else
                        {
                            endDate = new DateTime(invoiceYear, invoiceMonth, DateTime.DaysInMonth(invoiceYear, invoiceMonth));
                            //endDate = new DateTime(invoiceYear, invoiceMonth + 1, settlement.SettlementD);
                        }
                    }
                }
            }

            if (startDate == null)
            {
                startDate = new DateTime(invoiceYear, invoiceMonth, 1);
                endDate   = new DateTime(invoiceYear, invoiceMonth, DateTime.DaysInMonth(invoiceYear, invoiceMonth));
            }

            result.CustomerMainC    = invoiceMainC;
            result.CustomerSubC     = invoiceSubC;
            result.StartDate        = (DateTime)startDate;
            result.EndDate          = (DateTime)endDate;
            result.SettlementD      = 31;
            result.TaxMethodI       = "0";
            result.TaxRate          = 0;
            result.TaxRoundingI     = "0";
            result.RevenueRoundingI = "0";
            if (settlement != null)
            {
                result.ApplyD           = settlement.ApplyD;
                result.SettlementD      = settlement.SettlementD;
                result.TaxMethodI       = settlement.TaxMethodI;
                result.TaxRate          = (settlement.TaxRate != null ? (decimal)settlement.TaxRate : 0);
                result.TaxRoundingI     = settlement.TaxRoundingI;
                result.RevenueRoundingI = settlement.RevenueRoundingI;
            }

            return(result);
        }