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 })); } }
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 })); } }