コード例 #1
0
        public async Task <ActionResult> AddSaleInvoice([FromBody] SaleInvoiceHeader request)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest());
                }

                request.create_date = request.inv_date = DateTime.Now;

                if (request.sale_invoice_details == null || request.sale_invoice_details.Count == 0)
                {
                    throw new Exception("SaleInvoiceDetails is empty, can not add invoice without details(products).");
                }
                if (request.account_id == 0 || !(await _dBRepository.accounts.AnyAsync(p => p.id == request.account_id)))
                {
                    throw new Exception("Customer is not valid, check AccountID value plz.");
                }
                request.price     = request.sale_invoice_details.Sum(l => l.price * l.qty);
                request.reduction = request.sale_invoice_details.Sum(l => l.reduction_price * l.qty);

                await _dBRepository.sale_invoice_headers.AddAsync(request);

                await _dBRepository.SaveChangesAsync();

                var user = await _dBRepository.users.FirstOrDefaultAsync(a => a.user_name.ToLower() == User.Identity.Name.ToLower());

                var acctrans = new AccTransaction()
                {
                    account_id      = request.account_id,
                    invoice_id      = request.id,
                    account_type_id = 1,
                    price           = (request.price.ToDeciaml() - request.reduction.ToDeciaml()),
                    create_date     = DateTime.Now,
                    description     = "ثبت اتومات از فاکتور فروش",
                    user_id         = (long)(user?.id)
                };
                acctrans.sanad_num = await _dBDapperRepository.GetSanadNum();

                await _dBRepository.acc_transactions.AddAsync(acctrans);

                await _dBRepository.SaveChangesAsync();


                return(Ok(new CoreResponse()
                {
                    is_success = true, data = request
                }));
            }
            catch (Exception ex)
            {
                return(Ok(new CoreResponse()
                {
                    is_success = false, data = null, dev_message = ex.Message
                }));
            }
        }
コード例 #2
0
        public async Task <ActionResult> AddAccTransaction([FromBody] AccTransactionModel requestobj)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest());
                }

                //validate
                if (requestobj.user_id == 0)
                {
                    throw new Exception("کاربر ثبت کننده مشخص نشده است");
                }

                if (requestobj.price == 0)
                {
                    throw new Exception("امکان ثبت تراکنش با مبلغ 0 وجود ندارد");
                }

                if (requestobj.account_id == 0)
                {
                    throw new Exception("حساب اصلی را انتخاب کنید");
                }

                if (requestobj.account_id_fromto == 0)
                {
                    throw new Exception("حساب از/به را انتخاب کنید");
                }

                if (requestobj.invoice_id.HasValue && requestobj.invoice_id > 0)
                {
                    requestobj.account_type_id = 1;
                }
                else if (requestobj.account_type_id == 0)
                {
                    throw new Exception("نوع حساب را مشخص کنید");
                }


                var sanadnum = await _dBDapperRepository.GetSanadNum();

                var accountmain = await _dBRepository.accounts.AsNoTracking().FirstOrDefaultAsync(a => a.id == requestobj.account_id);

                var request = new AccTransaction
                {
                    create_date     = DateTime.Now,
                    is_deleted      = false,
                    user_id         = requestobj.user_id,
                    account_id      = requestobj.account_id,
                    description     = requestobj.description,
                    account_type_id = accountmain.account_type_id,
                    invoice_id      = requestobj.invoice_id,
                    price           = requestobj.is_daryaft ? requestobj.price : (requestobj.price * -1),
                    sanad_num       = sanadnum
                };
                await _dBRepository.acc_transactions.AddAsync(request);

                var accountfromto = await _dBRepository.accounts.AsNoTracking().FirstOrDefaultAsync(a => a.id == requestobj.account_id_fromto);

                var request1 = new AccTransaction
                {
                    create_date     = DateTime.Now,
                    is_deleted      = false,
                    user_id         = requestobj.user_id,
                    account_id      = requestobj.account_id_fromto,
                    description     = requestobj.description,
                    account_type_id = accountfromto.account_type_id,
                    invoice_id      = requestobj.invoice_id,
                    price           = requestobj.is_daryaft ? (requestobj.price * -1) : requestobj.price,
                    sanad_num       = sanadnum
                };
                await _dBRepository.acc_transactions.AddAsync(request1);

                await _dBRepository.SaveChangesAsync();


                return(Ok(new CoreResponse()
                {
                    is_success = true, data = new List <AccTransaction>()
                    {
                        request, request1
                    }
                }));
            }
            catch (Exception ex)
            {
                return(Ok(new CoreResponse()
                {
                    is_success = false, data = null, dev_message = ex.Message
                }));
            }
        }