private Invoice UpdateInvoiceStatusInDb(int invoiceid, InvoiceStatus status) { var invoice = GetByIDFromDb(invoiceid); if (invoice == null) { _logger.Error("Invoice not found"); return(null); } _crmSecurity.DemandAccessTo(invoice); if (!invoiceStatusMap.Contains(new KeyValuePair <InvoiceStatus, InvoiceStatus>(invoice.Status, status))) { _logger.ErrorFormat("Status for invoice with ID={0} can't be changed. Return without changes", invoiceid); return(invoice); } var itemToUpdate = Query(CrmDbContext.Invoices).FirstOrDefault(x => x.Id == invoiceid); itemToUpdate.Status = status; itemToUpdate.LastModifedOn = DateTime.UtcNow; itemToUpdate.LastModifedBy = _securityContext.CurrentAccount.ID; CrmDbContext.Update(itemToUpdate); CrmDbContext.SaveChanges(); invoice.Status = status; return(invoice); }
public JsonResult ChangeAddress(InvoiceChangeAddressViewModel model) { try { var currentUser = GetAuthenticatedUser(); var invoice = _context.Invoice.Single(x => x.InvoiceStatusId != InvoiceStatus.Deleted.Id && x.Id == model.invoiceId); var address = _context.UserAddress.Single(x => x.StatusId != UserAddressStatus.Deleted.Id && x.Id == model.addressId); if (address.UserId != invoice.UserId) { return(Error("آدرس انتخاب شده متعلق به کاربر ثبت کننده سفارش نیست.")); } var availableInvoiceStatusList = new InvoiceStatus[] { InvoiceStatus.Registered, InvoiceStatus.InProgress, InvoiceStatus.Factored, InvoiceStatus.Preparing }; if (!availableInvoiceStatusList.Any(x => x.Id == invoice.InvoiceStatusId)) { return(Error("فاکتور در وضعیتی نیست که بتوان آدرس آن را تغییر داد..")); } invoice.AddressId = model.addressId; invoice.ModifyUserId = currentUser.id; invoice.ModifyDate = GetDatetime(); invoice.ModifyIp = GetCurrentIp(); _context.SaveChanges(); return(Success("آدرس با موفقیت تغییر کرد.")); } catch (Exception ex) { return(ServerError(ex)); } }
public void ComplexConditionInTheEnd() { using (var session = Domain.OpenSession()) using (var transaction = session.OpenTransaction()) { var customers = new int[customerIds.Length]; customerIds.CopyTo(customers, 0); var invoiceStatuses = new InvoiceStatus[queryableInvoiceStatuses.Length]; queryableInvoiceStatuses.CopyTo(invoiceStatuses, 0); var paymentStatuses = new PaymentStatus[queryablePaymentStatuses.Length]; queryablePaymentStatuses.CopyTo(paymentStatuses, 0); var paymentsQuery = from payment in session.Query.All <Payment>() join invoice in session.Query.All <Invoice>() on payment.Invoice equals invoice join customer in session.Query.All <Customer>() on invoice.Customer equals customer where invoice.Active && invoice.Status.In(IncludeAlgorithm.TemporaryTable, invoiceStatuses) && invoice.InvoicedOn.HasValue && customer.Id.In(IncludeAlgorithm.TemporaryTable, customers) && payment.Active && payment.Status.In(IncludeAlgorithm.ComplexCondition, paymentStatuses) group payment.Amount by invoice.Id into amounts select new { Id = amounts.Key, Amount = amounts.Sum(e => e) }; Assert.DoesNotThrow(() => paymentsQuery.Run()); } }
public void DelayedQueryExecutionTest() { Require.ProviderIs(StorageProvider.SqlServer); var parametersCountLimit = 2100; using (var session = Domain.OpenSession()) using (var transaction = session.OpenTransaction()) { var customers = new int[customerIds.Length]; customerIds.CopyTo(customers, 0); var invoiceStatuses = new InvoiceStatus[queryableInvoiceStatuses.Length]; queryableInvoiceStatuses.CopyTo(invoiceStatuses, 0); var paymentStatuses = new PaymentStatus[queryablePaymentStatuses.Length]; queryablePaymentStatuses.CopyTo(paymentStatuses, 0); var currentParametersCount = 0; var delayedQueries = new List <IEnumerable <Customer> >(); while (currentParametersCount < parametersCountLimit) { var customersDelayed = session.Query.CreateDelayedQuery(q => q.All <Customer>().Where(c => c.Id.In(customers))); delayedQueries.Add(customersDelayed); currentParametersCount += customers.Length; } delayedQueries.First().Run(); transaction.Complete(); } }
public IActionResult Index(long invoiceId) { ViewBag.Name = User.FindFirst(ClaimTypes.NameIdentifier).Value; IDBService dbService = new DBservice(_helper); var invoices = dbService.GetInvoice(invoiceId); var numberOfDocs = dbService.FetchDocumentsForInvoice(invoiceId); InvoiceViewModel model = new InvoiceViewModel(); model.InvoiceId = invoiceId; model.AccountDate = invoices.AccountDate.ToString("dd / M / yyyy", CultureInfo.InvariantCulture); model.InvoiceNumber = invoices.InvoiceNo; model.TotalLocalAmount = invoices.TotalLocalAmt.ToString("N", CultureInfo.CreateSpecificCulture("en-IN")); model.ExchangeRate = invoices.ExRate; model.CustomerName = invoices.CustomerName; model.DelivaryDate = invoices.DeliveryDate.ToString("dd / M / yyyy", CultureInfo.InvariantCulture); model.CurrencyCode = invoices.CurrencyCode; model.VesselName = invoices.VesselName; model.Remarks = invoices.Remarks; model.Amount = invoices.TotalAmt.ToString("N", CultureInfo.CreateSpecificCulture("en-IN")); InvoiceStatus invStatus = (InvoiceStatus)invoices.InvoiceStatus; model.InvoiceStatus = invStatus.ToString(); model.NoOfDocuments = numberOfDocs != null ? numberOfDocs.Count : 0; if (invoices.InvoiceStatus > 4 || invoices.InvoiceStatus == 2) { model.Showbuttons = true; } return(View(model)); }
public async Task <IActionResult> Edit(int id, [Bind("Id,Name")] InvoiceStatus invoiceStatus) { if (id != invoiceStatus.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(invoiceStatus); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!InvoiceStatusExists(invoiceStatus.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(invoiceStatus)); }
public int UpdateInvoiceStatus(int invoiceId, InvoiceStatus status) { context.Context.UpdateInvoiceStatus(invoiceId, (byte)status); var invoice = context.Context.Invoice.FirstOrDefault(i => i.InvoiceId == invoiceId); return(invoice != null?Convert.ToInt32(invoice.SelfBillingInvoiceStatusId) : 0); }
public static IQueryable <Invoice> Search(this IQueryable <Invoice> src, int merchant, long buyer, bool send, bool paid, bool firstReminder, bool secondReminder, bool invoiceClaim) { var predicate = PredicateBuilder.False <Invoice>(); var sendValue = new InvoiceStatus(); var paidValue = new InvoiceStatus(); var firstRemind = new DateTime(); var secondRemind = new DateTime(); if (buyer <= 0) { return(null); } predicate = predicate.Or(i => i.InstallationId == merchant && i.Buyer.Msisdn == buyer); if (send) { predicate = predicate.Or(i => i.Status == InvoiceStatus.Sent); } if (paid) { predicate = predicate.Or(i => i.Status == InvoiceStatus.Paid); } if (firstReminder) { predicate = predicate.Or(i => i.FirstReminderDate == DateTime.Today); } if (secondReminder) { predicate = predicate.Or(i => i.SecondReminderDate == DateTime.Today); } return(src.Where(predicate)); }
/// <summary> /// Initializes a new instance of the <see cref="InvoicePreview" /> class. /// </summary> /// <param name="collectionMethod">collectionMethod (required).</param> /// <param name="currency">currency (required).</param> /// <param name="customer">customer (required).</param> /// <param name="lines">lines (required).</param> /// <param name="periodStart">periodStart (required).</param> /// <param name="periodEnd">periodEnd (required).</param> /// <param name="status">status (required).</param> /// <param name="statusTransitions">statusTransitions (required).</param> /// <param name="subtotal">subtotal (required).</param> /// <param name="total">total (required).</param> /// <param name="autoAdvance">autoAdvance.</param> /// <param name="description">description.</param> /// <param name="hostedInvoiceUrl">hostedInvoiceUrl.</param> /// <param name="subscription">subscription.</param> /// <param name="discount">discount.</param> /// <param name="totalDiscountAmounts">totalDiscountAmounts.</param> /// <param name="paymentMethod">The payment method that will be billed when this invoice is due..</param> public InvoicePreview ( string collectionMethod, string currency, string customer, LineItemList lines, DateTime periodStart, DateTime periodEnd, InvoiceStatus status, InvoiceStatusTransitions statusTransitions, int subtotal, int total, // Required parameters bool autoAdvance = default, string description = default, string hostedInvoiceUrl = default, string subscription = default, Discount discount = default, List <DiscountAmount> totalDiscountAmounts = default, CardPublic paymentMethod = default // Optional parameters ) : base() // BaseClass { // to ensure "collectionMethod" is required (not null) this.CollectionMethod = collectionMethod ?? throw new ArgumentNullException("collectionMethod is a required property for InvoicePreview and cannot be null"); // to ensure "currency" is required (not null) this.Currency = currency ?? throw new ArgumentNullException("currency is a required property for InvoicePreview and cannot be null"); // to ensure "customer" is required (not null) this.Customer = customer ?? throw new ArgumentNullException("customer is a required property for InvoicePreview and cannot be null"); // to ensure "lines" is required (not null) this.Lines = lines ?? throw new ArgumentNullException("lines is a required property for InvoicePreview and cannot be null"); this.PeriodStart = periodStart; this.PeriodEnd = periodEnd; this.Status = status; // to ensure "statusTransitions" is required (not null) this.StatusTransitions = statusTransitions ?? throw new ArgumentNullException("statusTransitions is a required property for InvoicePreview and cannot be null"); this.Subtotal = subtotal; this.Total = total; this.AutoAdvance = autoAdvance; this.Description = description; this.HostedInvoiceUrl = hostedInvoiceUrl; this.Subscription = subscription; this.Discount = discount; this.TotalDiscountAmounts = totalDiscountAmounts; this.PaymentMethod = paymentMethod; // Set non-required readonly properties with defaultValue this.Type = "InvoicePreview"; }
private Invoice UpdateInvoiceStatus(int invoiceid, InvoiceStatus status, DbManager db) { var invoice = GetByID(invoiceid, db); if (invoice == null) { _log.Error("Invoice not found"); return(null); } CRMSecurity.DemandAccessTo(invoice); if (!invoiceStatusMap.Contains(new KeyValuePair <InvoiceStatus, InvoiceStatus>(invoice.Status, status))) { _log.ErrorFormat("Status for invoice with ID={0} can't be changed. Return without changes", invoiceid); return(invoice); } db.ExecuteNonQuery( Update("crm_invoice") .Set("status", (int)status) .Set("last_modifed_on", DateTime.UtcNow) .Set("last_modifed_by", SecurityContext.CurrentAccount.ID) .Where(Exp.Eq("id", invoiceid))); invoice.Status = status; return(invoice); }
public Invoice UpdateStatus(InvoiceStatus newStatus) { ExecuteSql( $"UPDATE invoices SET status = '{newStatus.ToString()}', updated_at = CURRENT_TIMESTAMP WHERE id = @id", new { id } ); return(this); }
public async Task <IActionResult> IssueInvoice([FromRoute] string invoiceNumber, [FromBody] InvoiceStatusDto status) { InvoiceStatus newStatus = status.Status; var invoice = service.GetInvoice(invoiceNumber); if (invoice == null) { return(NotFound()); } if (newStatus != InvoiceStatus.Issued || invoice.Status != InvoiceStatus.Draft) { return(BadRequest("The only permitted status change is from 'Draft' to 'Issued'")); } if (invoice.GrandTotal == 0m) { return(BadRequest("The invoice must have a grand total greater than 0.")); } await service.IssueInvoice(invoiceNumber); return(Ok(mapper.Map <InvoiceDto>(service.GetInvoice(invoiceNumber)))); }
private Invoice Given_an_invoice(InvoiceType type = InvoiceType.AccountsPayable, InvoiceStatus status = InvoiceStatus.Authorised, decimal amount = 100m, string accountCode = "100", Contact contact = null) { if (contact == null) contact = new Contact {Name = "ABC Bank"}; return Api.Create(new Invoice { Contact = contact, Type = type, Date = DateTime.UtcNow, DueDate = DateTime.UtcNow.AddDays(90), LineAmountTypes = LineAmountType.Inclusive, Status = status, LineItems = new List<LineItem> { new LineItem { AccountCode = "200", Description = "Good value item 1", LineAmount = 100m }, new LineItem { AccountCode = "200", Description = "Good value item 2", LineAmount = 100m } } }); }
public InvoicesResponseModel() { Invoices = new List <InvoiceModel>(); InvoiceAttributeMetadata = new List <AttributeMetadataModel>(); InvoiceItemAttributeMetadata = new List <AttributeMetadataModel>(); Status = InvoiceStatus.Success; }
public virtual Invoice UpdateInvoiceStatus(int invoiceid, InvoiceStatus status) { using (var db = GetDb()) { return(UpdateInvoiceStatus(invoiceid, status, db)); } }
public void Update(InvoiceStatus invoiceStatus) { invoiceStatus = Validate(invoiceStatus); _invoiceStatuses.Attach(invoiceStatus); _repository.Entry(invoiceStatus).State = EntityState.Modified; _repository.SaveChanges(); }
public Task <Invoice> ChangeStatusAsync(long invoiceId, int cardHolderId, InvoiceStatus status) { var invoice = _db.Invoices.FirstOrDefault(x => x.Id == invoiceId); invoice.Status = status; // TODO: add permissions check return(Task.FromResult(invoice)); }
private Invoice(string invoiceNumber, DateTime invoiceDate, string companyCode, string referenceId, InvoiceStatus currentStatus) { InvoiceNumber = invoiceNumber; Date = invoiceDate; CompanyCode = companyCode; ReferenceId = referenceId; CurrentStatus = currentStatus; }
public async Task SetStatusAsync(string merchantId, string invoiceId, InvoiceStatus status) { await _storage.MergeAsync(GetPartitionKey(merchantId), GetRowKey(invoiceId), entity => { entity.Status = status.ToString(); return(entity); }); }
public string getInvoiceStatus() { JavaScriptSerializer j = new JavaScriptSerializer(); InvoiceStatus os = new InvoiceStatus(); List <InvoiceStatus> invoiceStatusList = os.invoiceStatusList(); return(j.Serialize(invoiceStatusList)); }
public void UpdateStatus(int sysNo, InvoiceStatus invoiceStatus) { DataCommand command = DataCommandManager.GetDataCommand("UpdatePOVendorInvoiceStatus"); command.SetParameterValue("@SysNo", sysNo); command.SetParameterValue("@Status", invoiceStatus); command.ExecuteNonQuery(); }
public ActionResult <IEnumerable <InvoiceDto> > GetInvoicesByStatus(InvoiceStatus status) { var invoices = service.GetInvoicesByStatus(status); var dtoList = mapper.Map <IEnumerable <InvoiceDto> >(invoices); return(Ok(dtoList)); }
// TODO: dodaj metodę do anulowania faktury - Cancel() public void Cancel() { if (Status == InvoiceStatus.Created || Status == InvoiceStatus.Posted) { Status = InvoiceStatus.Cancelled; postedDate = null; } }
// zaksięguj public void Post() { if (Status == InvoiceStatus.Created) { Status = InvoiceStatus.Posted; postedDate = DateTime.Now; } }
public string UpdateStatusForInvoice(long invoiceId, InvoiceStatus status, string remarks) { string color = string.Empty; IDBService service = new DBservice(_helper); var username = User.FindFirst(ClaimTypes.NameIdentifier).Value; string email = service.GetEmailForUser(username); var invoice = service.GetInvoice(invoiceId); var invoiveViewModel = new InvoiceViewModel { AccountDate = invoice.AccountDate.ToString("dd/M/yyyy", CultureInfo.InvariantCulture), CustomerName = invoice.CustomerName, DelivaryDate = invoice.DeliveryDate.ToString("dd/M/yyyy", CultureInfo.InvariantCulture), TotalLocalAmount = invoice.TotalLocalAmt.ToString("C", CultureInfo.CreateSpecificCulture("en-IN")), DueDate = invoice.DueDate, InvoiceNumber = invoice.InvoiceNo }; if (status == InvoiceStatus.CheckPending) { service.UpdatePendingStatusForChecker(invoiceId, username, remarks); color = service.getColorToUpdate((int)InvoiceStatus.CheckPending); } else if (status == InvoiceStatus.Checked) { service.UpdateCheckedStatusForChecker(invoiceId, username, remarks); color = service.getColorToUpdate((int)InvoiceStatus.Checked); ConstructEmail construct = new ConstructEmail(); construct.SendEmail(invoiveViewModel, email); } else if (status == InvoiceStatus.CheckRejected) { service.UpdateRejectedStatusForChecker(invoiceId, username, remarks); color = service.getColorToUpdate((int)InvoiceStatus.CheckRejected); } else if (status == InvoiceStatus.Approved) { service.UpdateApprovedStatusForApprover(invoiceId, username, remarks); color = service.getColorToUpdate((int)InvoiceStatus.Approved); } else if (status == InvoiceStatus.ApprovePending) { service.UpdatePendingStatusForApprover(invoiceId, username, remarks); color = service.getColorToUpdate((int)InvoiceStatus.ApprovePending); } else if (status == InvoiceStatus.ApproveRejected) { service.UpdateRejectedStatusForApprover(invoiceId, username, remarks); color = service.getColorToUpdate((int)InvoiceStatus.ApproveRejected); } else { throw new Exception("Invalid Status"); } return(color); }
public void Delete(InvoiceStatus invoiceStatus) { if (invoiceStatus.Invoices.Any()) throw new BusinessLogicException(string.Format("This invoice status cannot be deleted because {0} invoices are using it.", invoiceStatus.Invoices.Count)); _invoiceStatuses.Attach(invoiceStatus); _repository.Entry(invoiceStatus).State = EntityState.Deleted; _repository.SaveChanges(); }
private InvoiceStatus Validate(InvoiceStatus invoiceStatus) { if (!string.IsNullOrWhiteSpace(invoiceStatus.Description)) invoiceStatus.Description = invoiceStatus.Description.Trim(); else throw new BusinessLogicException("A name or description is required for all invoice statuses."); return invoiceStatus; }
public void ShouldFailIfInvoiceIsNotHeld(InvoiceStatus status) { _payrun.PayrunInvoices.First().InvoiceStatus = status; _useCase .Invoking(useCase => useCase.ReleaseInvoiceAsync(_payrun.Id, _payrunInvoice.Id)) .Should().Throw <ApiException>() .Where(ex => ex.StatusCode == StatusCodes.Status400BadRequest); _dbManager.VerifyNotSaved(); }
public void Audit(int sysNo, InvoiceStatus invoiceStatus) { DataCommand command = DataCommandManager.GetDataCommand("AuditPOVendorInvoice"); command.SetParameterValue("@SysNo", sysNo); command.SetParameterValue("@Status", invoiceStatus); command.SetParameterValueAsCurrentUserSysNo("@AuditUserSysNo"); command.ExecuteNonQuery(); }
public override int GetHashCode() { return(InvoiceNumber.GetHashCode() ^ InvoiceType.GetHashCode() ^ InvoiceStatus.GetHashCode() ^ Lines.GetHashCode() ^ Total.GetHashCode() ^ Carrier.GetHashCode()); }
public static PayrunInvoice CreatePayrunInvoice(Guid?payRunId, Invoice invoice, InvoiceStatus invoiceStatus = InvoiceStatus.Accepted) { return(new Faker <PayrunInvoice>() .RuleFor(pInv => pInv.Id, f => f.Random.Uuid()) .RuleFor(pInv => pInv.PayrunId, f => payRunId ?? f.Random.Uuid()) .RuleFor(pInv => pInv.InvoiceId, f => invoice.Id) .RuleFor(pInv => pInv.InvoiceStatus, f => invoiceStatus)); }
public async void ShouldChangePayRunInvoiceStatus(PayrunStatus payrunStatus, InvoiceStatus oldInvoiceStatus, InvoiceStatus newInvoiceStatus) { _payrun.Status = payrunStatus; _payrunInvoice.InvoiceStatus = oldInvoiceStatus; await _useCase.ExecuteAsync(_payrun.Id, _payrunInvoice.Id, newInvoiceStatus); _payrunInvoice.InvoiceStatus.Should().Be(newInvoiceStatus); _dbManager.VerifySaved(); }
// Konstruktor - metoda uruchamiana automatycznie podczas tworzenia instancji obiektu public Invoice(string number, Customer customer) { createdDate = DateTime.Now; dueDate = createdDate.AddDays(14); this.Status = InvoiceStatus.Created; this.number = number; this.customer = customer; }
public void Insert(InvoiceStatus invoiceStatus) { invoiceStatus = Validate(invoiceStatus); if (_invoiceStatuses.Any(i => i.Description.Equals(invoiceStatus.Description, StringComparison.InvariantCultureIgnoreCase))) throw new BusinessLogicException("An invoice status with that same description already exists."); _invoiceStatuses.Add(invoiceStatus); _repository.SaveChanges(); }
private void AddInvoiceStatuses(DataContext context) { foreach (var item in InvoiceStatusList) { var invoiceStatus = new InvoiceStatus { Name = item }; context.InvoiceStatuses.Add(invoiceStatus); } }
public void SendInvoicesToMaventa(IEnumerable<InvoiceViewModel>invoices) { ApiKeys apiKeys = new ApiKeys(); apiKeys.user_api_key = "x"; //User API key apiKeys.company_uuid = "y"; //UUID of current company //Create invoice foreach(var invoice in invoices) { MaventaAPI.InvoiceParamsInC invoiceOut = new MaventaAPI.InvoiceParamsInC(); //invoiceOut.invoice_nr = "1001"; //invoiceOut.reference_nr = "10016"; invoiceOut.date = invoice.InvoiceDate; invoiceOut.date_due = invoice.InvoiceDueDate; invoiceOut.sum = invoice.InvoiceSum; invoiceOut.sum_tax = invoice.InvoiceSum_tax; invoiceOut.currency = invoice.ClientCurrency; //invoiceOut.lang = "FI"; //Customer information MaventaAPI.CustomerParamsInC customerOut = new CustomerParamsInC(); customerOut.name = invoice.ClientName; //customerOut.bid = "FI1234567"; //customerOut.ovt = "0037111111"; //customerOut.email = "*****@*****.**"; //customerOut.country = "FI"; customerOut.address1 = invoice.ClientAddress; invoiceOut.customer = customerOut; //Invoice items List<ItemsInC> itemList = new List<ItemsInC>(); foreach(var item in invoice.Items) { ItemsInC itemOut = new ItemsInC(); itemOut.item_code = item.Code; itemOut.subject = item.Subject; itemOut.amount = item.Amount; itemOut.price = item.UnitPrice; itemOut.tax = item.Tax; itemOut.sum = item.Sum; itemOut.sum_tax = item.Sum_tax; itemList.Add(itemOut); } invoiceOut.items = itemList.ToArray(); //Send invoice InvoiceStatus invoiceResponse = new InvoiceStatus(); MaventaApiPortClient port = new MaventaApiPortClient(); invoiceResponse = port.invoice_create(apiKeys, invoiceOut); } }
private IEnumerable<Invoice> Given_a_bad_invoice(InvoiceType type = InvoiceType.AccountsPayable, InvoiceStatus status = InvoiceStatus.Draft, bool summariseErrors = true) { Api.Invoices.SummarizeErrors(summariseErrors); return Api.Create(new[] { new Invoice { Contact = new Contact {Name = "ABC Bank"}, Type = type, Date = DateTime.UtcNow, DueDate = DateTime.UtcNow.AddDays(90), LineAmountTypes = LineAmountType.Inclusive, Status = status, Items = new List<LineItem> { new LineItem { AccountCode = "200", Description = "Good value item", LineAmount = 100m } } }, new Invoice { Contact = new Contact { Name = "ABC Bank", EmailAddress = "this_is_!_valid" }, Type = type, Date = DateTime.UtcNow, DueDate = DateTime.UtcNow.AddDays(90), LineAmountTypes = LineAmountType.Inclusive, Status = status, Items = new List<LineItem> { new LineItem { AccountCode = "200", Description = "Good value item", LineAmount = 100m } } } }); }
public CreditNote Given_a_creditnote(string contactName = "Apple Computers Ltd", CreditNoteType type = CreditNoteType.AccountsPayable, InvoiceStatus status = InvoiceStatus.Draft) { return Api.CreditNotes.Create(new CreditNote { Contact = new Contact { Name = contactName }, Type = type, Date = DateTime.UtcNow, LineAmountTypes = LineAmountType.Exclusive, Status = status, LineItems = new List<LineItem> { new LineItem { AccountCode = "720", Description = "MacBook - White", UnitAmount = 1995.00m } } }); }
public Invoice Given_an_invoice(InvoiceType type = InvoiceType.AccountsPayable, InvoiceStatus status = InvoiceStatus.Draft) { return Api.Create(new Invoice { Contact = new Contact { Name = "ABC Bank" }, Type = type, Date = DateTime.UtcNow, DueDate = DateTime.UtcNow.AddDays(90), LineAmountTypes = LineAmountType.Inclusive, Status = status, Items = new List<LineItem> { new LineItem { AccountCode = "200", Description = "Good value item", LineAmount = 100m } } }); }
public void Given_approved_invoice_with_tracking_option(InvoiceType type = InvoiceType.AccountsPayable, InvoiceStatus status = InvoiceStatus.Draft) { Guid category = category1_.Id; string name = category1_.Name; string option = category1_.Options.FirstOrDefault().Name; var inv = Api.Create(new Invoice { Contact = new Contact { Name = "Wayne Enterprises" }, Type = type, Date = DateTime.UtcNow, DueDate = DateTime.UtcNow.AddDays(90), LineAmountTypes = LineAmountType.Inclusive, Status = status, Items = new List<LineItem> { new LineItem { AccountCode = "200", Description = "Good value item", LineAmount = 100m, Tracking = new ItemTracking { new ItemTrackingCategory { Id = category, Name = name, Option = option } } } } }); inv.Status = InvoiceStatus.Authorised; invoice_ = Api.Update(inv); }
private Exp WhereConditional(String tblAlias, ICollection<int> exceptIDs, String searchText, InvoiceStatus? status, DateTime issueDateFrom, DateTime issueDateTo, DateTime dueDateFrom, DateTime dueDateTo, EntityType entityType, int entityID, String currency) { var tblAliasPrefix = !String.IsNullOrEmpty(tblAlias) ? tblAlias + ".": ""; var conditions = new List<Exp>(); if (entityID > 0) switch (entityType) { case EntityType.Contact: case EntityType.Person: case EntityType.Company: conditions.Add(Exp.Eq(tblAliasPrefix + "contact_id", entityID)); break; case EntityType.Case: case EntityType.Opportunity: conditions.Add(Exp.Eq(tblAliasPrefix + "entity_id", entityID) & Exp.Eq(tblAliasPrefix + "entity_type", (int)entityType)); break; } var ids = new List<int>(); if (status != null) { conditions.Add(Exp.Eq(tblAliasPrefix + "status", (int)status.Value)); } if (!String.IsNullOrEmpty(searchText)) { searchText = searchText.Trim(); var keywords = searchText.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries) .ToArray(); if (keywords.Length > 0) //if (FullTextSearch.SupportModule(FullTextSearch.CRMInvoiceModule)) //{ // ids = FullTextSearch.Search(searchText, FullTextSearch.CRMInvoiceModule) // .GetIdentifiers() // .Select(item => Convert.ToInt32(item.Split('_')[1])).Distinct().ToList(); // if (ids.Count == 0) return null; //} //else conditions.Add(BuildLike(new[] { tblAliasPrefix + "number", tblAliasPrefix + "description" }, keywords)); } if (exceptIDs.Count > 0) { conditions.Add(!Exp.In(tblAliasPrefix + "id", exceptIDs.ToArray())); } if (issueDateFrom != DateTime.MinValue && issueDateTo != DateTime.MinValue) conditions.Add(Exp.Between(tblAliasPrefix + "issue_date", TenantUtil.DateTimeToUtc(issueDateFrom), TenantUtil.DateTimeToUtc(issueDateTo.AddDays(1).AddMinutes(-1)))); else if (issueDateFrom != DateTime.MinValue) conditions.Add(Exp.Ge(tblAliasPrefix + "issue_date", TenantUtil.DateTimeToUtc(issueDateFrom))); else if (issueDateTo != DateTime.MinValue) conditions.Add(Exp.Le(tblAliasPrefix + "issue_date", TenantUtil.DateTimeToUtc(issueDateTo.AddDays(1).AddMinutes(-1)))); if (dueDateFrom != DateTime.MinValue && dueDateTo != DateTime.MinValue) conditions.Add(Exp.Between(tblAliasPrefix + "due_date", TenantUtil.DateTimeToUtc(dueDateFrom), TenantUtil.DateTimeToUtc(dueDateTo.AddDays(1).AddMinutes(-1)))); else if (dueDateFrom != DateTime.MinValue) conditions.Add(Exp.Ge(tblAliasPrefix + "due_date", TenantUtil.DateTimeToUtc(dueDateFrom))); else if (dueDateTo != DateTime.MinValue) conditions.Add(Exp.Le(tblAliasPrefix + "due_date", TenantUtil.DateTimeToUtc(dueDateTo.AddDays(1).AddMinutes(-1)))); if (!String.IsNullOrEmpty(currency)) { conditions.Add(Exp.Eq(tblAliasPrefix + "currency", currency)); } if (conditions.Count == 0) return null; return conditions.Count == 1 ? conditions[0] : conditions.Aggregate((i, j) => i & j); }
public List<Invoice> UpdateInvoiceBatchStatus(int[] invoiceids, InvoiceStatus status) { if (invoiceids == null || !invoiceids.Any()) throw new ArgumentException(); var invoices = new List<Invoice>(); using (var db = GetDb()) { foreach (var id in invoiceids) { var inv = UpdateInvoiceStatus(id, status, db); if (inv != null) { invoices.Add(inv); } } } return invoices; }
private Invoice UpdateInvoiceStatus(int invoiceid, InvoiceStatus status, DbManager db) { var invoice = GetByID(invoiceid, db); if (invoice == null) { _log.Error("Invoice not found"); return null; } CRMSecurity.DemandAccessTo(invoice); if (!invoiceStatusMap.Contains(new KeyValuePair<InvoiceStatus, InvoiceStatus>(invoice.Status, status))){ _log.ErrorFormat("Status for invoice with ID={0} can't be changed. Return without changes", invoiceid); return invoice; } db.ExecuteNonQuery( Update("crm_invoice") .Set("status", (int)status) .Set("last_modifed_on", DateTime.UtcNow) .Set("last_modifed_by", SecurityContext.CurrentAccount.ID) .Where(Exp.Eq("id", invoiceid))); invoice.Status = status; return invoice; }
public int GetInvoicesCount( String searchText, InvoiceStatus? status, DateTime issueDateFrom, DateTime issueDateTo, DateTime dueDateFrom, DateTime dueDateTo, EntityType entityType, int entityID, String currency) { var cacheKey = TenantID.ToString(CultureInfo.InvariantCulture) + "invoice" + SecurityContext.CurrentAccount.ID.ToString() + searchText; var fromCache = _cache.Get(cacheKey); if (fromCache != null) return Convert.ToInt32(fromCache); var withParams = hasParams(searchText, status, issueDateFrom, issueDateTo, dueDateFrom, dueDateTo, entityType, entityID, currency); var exceptIDs = CRMSecurity.GetPrivateItems(typeof(Invoice)).ToList(); int result; using (var db = GetDb()) { if (withParams) { var whereConditional = WhereConditional(null, exceptIDs, searchText, status, issueDateFrom, issueDateTo, dueDateFrom, dueDateTo, entityType, entityID, currency); result = whereConditional != null ? db.ExecuteScalar<int>(Query("crm_invoice").Where(whereConditional).SelectCount()) : 0; } else { var countWithoutPrivate = db.ExecuteScalar<int>(Query("crm_invoice").SelectCount()); var privateCount = exceptIDs.Count; if (privateCount > countWithoutPrivate) { _log.ErrorFormat(@"Private invoice count more than all cases. Tenant: {0}. CurrentAccount: {1}", TenantID, SecurityContext.CurrentAccount.ID); privateCount = 0; } result = countWithoutPrivate - privateCount; } } if (result > 0) _cache.Insert(cacheKey, result, new CacheDependency(null, new[] { _invoiceCacheKey }), Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(30)); return result; }
public virtual Invoice UpdateInvoiceStatus(int invoiceid, InvoiceStatus status) { using (var db = GetDb()) { return UpdateInvoiceStatus(invoiceid, status, db); } }
/// <summary> /// 设置发票状态 /// </summary> /// <param name="status">发票状态</param> public void SetInvoiceStatus(InvoiceStatus status) { switch (status) { case InvoiceStatus.草稿: Status = InvoiceStatus.草稿; break; case InvoiceStatus.待审核: Status = InvoiceStatus.待审核; break; case InvoiceStatus.已审核: Status = InvoiceStatus.已审核; IsValid = true; break; default: throw new ArgumentOutOfRangeException("status"); } }
public List<Invoice> GetCrudeInvoices( String searchText, InvoiceStatus? status, DateTime issueDateFrom, DateTime issueDateTo, DateTime dueDateFrom, DateTime dueDateTo, EntityType entityType, int entityID, String currency, int from, int count, OrderBy orderBy) { var invoicesTableAlias = "i_tbl"; var sqlQuery = GetInvoiceSqlQuery(null, invoicesTableAlias); var withParams = hasParams(searchText, status, issueDateFrom, issueDateTo, dueDateFrom, dueDateTo, entityType, entityID, currency); var whereConditional = WhereConditional(invoicesTableAlias, new List<int>(), searchText, status, issueDateFrom, issueDateTo, dueDateFrom, dueDateTo, entityType, entityID, currency); // WhereConditional(CRMSecurity.GetPrivateItems(typeof(Invoice)).ToList(), searchText); if (withParams && whereConditional == null) return new List<Invoice>(); sqlQuery.Where(whereConditional); if (0 < from && from < int.MaxValue) sqlQuery.SetFirstResult(from); if (0 < count && count < int.MaxValue) sqlQuery.SetMaxResults(count); if (orderBy != null && Enum.IsDefined(typeof(InvoiceSortedByType), orderBy.SortedBy)) { switch ((InvoiceSortedByType)orderBy.SortedBy) { case InvoiceSortedByType.Number: sqlQuery.OrderBy(invoicesTableAlias + ".number", orderBy.IsAsc); break; case InvoiceSortedByType.Status: sqlQuery.OrderBy(invoicesTableAlias + ".status", orderBy.IsAsc); break; case InvoiceSortedByType.DueDate: sqlQuery.OrderBy(invoicesTableAlias + ".due_date", orderBy.IsAsc); break; case InvoiceSortedByType.IssueDate: sqlQuery.OrderBy(invoicesTableAlias + ".issue_date", orderBy.IsAsc); break; case InvoiceSortedByType.Contact: sqlQuery.LeftOuterJoin("crm_contact c_tbl", Exp.EqColumns(invoicesTableAlias + ".contact_id", "c_tbl.id")) .OrderBy("case when c_tbl.display_name is null then 1 else 0 end, c_tbl.display_name", orderBy.IsAsc) .OrderBy(invoicesTableAlias + ".number", true); break; default: sqlQuery.OrderBy(invoicesTableAlias + ".number", true); break; } } else { sqlQuery.OrderBy(invoicesTableAlias + ".number", true); } using (var db = GetDb()) { return db.ExecuteList(sqlQuery).ConvertAll(ToInvoice); } }
/// <summary> /// Updates invoice for the transaction. /// </summary> /// <param name="id">invoice id.</param> /// <param name="invoiceStatus">status of payment and invoice.</param> /// <returns>Invoice updated successfully or not.</returns> private bool UpdateInvoice(long id, InvoiceStatus invoiceStatus) { InvoiceModel invoiceModel = this.paymentService.GetInvoice(id); invoiceModel.EnumStatus = invoiceStatus; bool result = this.paymentService.UpdateInvoice(invoiceModel); return result; }
public InvoiceFactory SetInvoiceStatus(InvoiceStatus status) { invoice.InvoiceStatus = status; return this; }
public InvoiceStatusWrapper(InvoiceStatus status) : base((int)status) { Title = status.ToLocalizedString(); }
public KeyValuePair<IEnumerable<InvoiceBaseWrapper>,IEnumerable<InvoiceItemWrapper>> UpdateInvoiceBatchStatus( int[] invoiceids, InvoiceStatus status ) { if (invoiceids == null || !invoiceids.Any()) throw new ArgumentException(); var oldInvoices = DaoFactory.GetInvoiceDao().GetByID(invoiceids).Where(CRMSecurity.CanAccessTo).ToList(); var updatedInvoices = DaoFactory.GetInvoiceDao().UpdateInvoiceBatchStatus(oldInvoices.ToList().Select(i => i.ID).ToArray(), status); // detect what really changed var realUpdatedInvoices = updatedInvoices .Select(t => oldInvoices.FirstOrDefault(x => x.ID == t.ID && x.Status != t.Status)) .Where(inv => inv != null) .ToList(); if (realUpdatedInvoices.Any()) { MessageService.Send(Request, MessageAction.InvoicesUpdatedStatus, realUpdatedInvoices.Select(x => x.Number), status.ToLocalizedString()); } var invoiceItemsUpdated = new List<InvoiceItem>(); if (status == InvoiceStatus.Sent || status == InvoiceStatus.Rejected) { var invoiceItemsAll = DaoFactory.GetInvoiceItemDao().GetAll(); var invoiceItemsWithTrackInventory = invoiceItemsAll.Where(item => item.TrackInventory).ToList(); if (status == InvoiceStatus.Sent && invoiceItemsWithTrackInventory != null && invoiceItemsWithTrackInventory.Count != 0) { foreach (var inv in updatedInvoices) { if (inv.Status == InvoiceStatus.Sent) { //could be changed var oldInv = oldInvoices.FirstOrDefault(i => i.ID == inv.ID); if (oldInv != null && oldInv.Status == InvoiceStatus.Draft) { //was changed to Sent var invoiceLines = DaoFactory.GetInvoiceLineDao().GetInvoiceLines(inv.ID); foreach (var line in invoiceLines) { var item = invoiceItemsWithTrackInventory.FirstOrDefault(ii => ii.ID == line.InvoiceItemID); if (item != null) { item.StockQuantity -= line.Quantity; DaoFactory.GetInvoiceItemDao().SaveOrUpdateInvoiceItem(item); var oldItem = invoiceItemsUpdated.Find(i => i.ID == item.ID); if (oldItem != null) { invoiceItemsUpdated.Remove(oldItem); } invoiceItemsUpdated.Add(item); } } } } } } if (status == InvoiceStatus.Rejected && invoiceItemsWithTrackInventory != null && invoiceItemsWithTrackInventory.Count != 0) { foreach (var inv in updatedInvoices) { if (inv.Status == InvoiceStatus.Rejected) { //could be changed var oldInv = oldInvoices.FirstOrDefault(i => i.ID == inv.ID); if (oldInv != null && oldInv.Status == InvoiceStatus.Sent) { //was changed from Sent to Rejectes var invoiceLines = DaoFactory.GetInvoiceLineDao().GetInvoiceLines(inv.ID); foreach (var line in invoiceLines) { var item = invoiceItemsWithTrackInventory.FirstOrDefault(ii => ii.ID == line.InvoiceItemID); if (item != null) { item.StockQuantity += line.Quantity; DaoFactory.GetInvoiceItemDao().SaveOrUpdateInvoiceItem(item); var oldItem = invoiceItemsUpdated.Find(i => i.ID == item.ID); if (oldItem != null) { invoiceItemsUpdated.Remove(oldItem); } invoiceItemsUpdated.Add(item); } } } } } } } var listInvoiceBaseWrappers = ToListInvoiceBaseWrappers(updatedInvoices); return new KeyValuePair<IEnumerable<InvoiceBaseWrapper>,IEnumerable<InvoiceItemWrapper>>(listInvoiceBaseWrappers,invoiceItemsUpdated.ConvertAll(i => ToInvoiceItemWrapper(i))); }
public bool UpdateInvoiceForRefund(Guid invoiceId, InvoiceStatus status, decimal priceForRefund, string notes) { try { var dc = new ManagementContext(); var invoice = dc.Invoices.Where(x => x.InvoiceId == invoiceId).FirstOrDefault(); if (invoice != null) { invoice.Merchant = invoice.Merchant; invoice.InvoiceStatus = (byte)status; invoice.InvoiceStatusUpdated = DateTime.UtcNow; invoice.AdminNote = notes; RDN.Library.DataModels.PaymentGateway.Invoices.InvoiceRefund refund = new RDN.Library.DataModels.PaymentGateway.Invoices.InvoiceRefund(); refund.Invoice = invoice; refund.PriceRefunded = priceForRefund; invoice.Refunds.Add(refund); int c = dc.SaveChanges(); return c > 0; } } catch (Exception exception) { ErrorDatabaseManager.AddException(exception, exception.GetType()); } return false; }
public bool SetInvoiceStatus(Guid invoiceId, InvoiceStatus status, string customerId = null) { try { var dc = new ManagementContext(); var invoice = dc.Invoices.Where(x => x.InvoiceId == invoiceId).FirstOrDefault(); if (invoice != null) { invoice.Merchant = invoice.Merchant; invoice.InvoiceStatus = (byte)status; invoice.Paywall = invoice.Paywall; if (!String.IsNullOrEmpty(customerId)) invoice.PaymentProviderCustomerId = customerId; invoice.InvoiceStatusUpdated = DateTime.UtcNow; int c = dc.SaveChanges(); return c > 0; } } catch (Exception exception) { ErrorDatabaseManager.AddException(exception, exception.GetType()); } return false; }
private void SetInvoiceStatus(ref DataModels.PaymentGateway.Invoices.Invoice invoice, InvoiceStatus status) { invoice.InvoiceStatus = (byte)status; invoice.InvoiceStatusUpdated = DateTime.Now; }
private bool hasParams( String searchText, InvoiceStatus? status, DateTime issueDateFrom, DateTime issueDateTo, DateTime dueDateFrom, DateTime dueDateTo, EntityType entityType, int entityID, String currency) { return !(String.IsNullOrEmpty(searchText) && !status.HasValue && issueDateFrom == DateTime.MinValue && issueDateTo == DateTime.MinValue && dueDateFrom == DateTime.MinValue && dueDateTo == DateTime.MinValue && entityID == 0 && String.IsNullOrEmpty(currency)); }
public List<Invoice> GetInvoices( String searchText, InvoiceStatus? status, DateTime issueDateFrom, DateTime issueDateTo, DateTime dueDateFrom, DateTime dueDateTo, EntityType entityType, int entityID, String currency, int from, int count, OrderBy orderBy) { if (CRMSecurity.IsAdmin) return GetCrudeInvoices( searchText, status, issueDateFrom, issueDateTo, dueDateFrom, dueDateTo, entityType, entityID, currency, from, count, orderBy); var crudeInvoices = GetCrudeInvoices( searchText, status, issueDateFrom, issueDateTo, dueDateFrom, dueDateTo, entityType, entityID, currency, 0, from + count, orderBy); if (crudeInvoices.Count == 0) return crudeInvoices; if (crudeInvoices.Count < from + count) return CRMSecurity.FilterRead(crudeInvoices).Skip(from).ToList(); var result = CRMSecurity.FilterRead(crudeInvoices).ToList(); if (result.Count == crudeInvoices.Count) return result.Skip(from).ToList(); var localCount = count; var localFrom = from + count; while (true) { crudeInvoices = GetCrudeInvoices( searchText, status, issueDateFrom, issueDateTo, dueDateFrom, dueDateTo, entityType, entityID, currency, localFrom, localCount, orderBy); if (crudeInvoices.Count == 0) break; result.AddRange(CRMSecurity.FilterRead(crudeInvoices)); if ((result.Count >= count + from) || (crudeInvoices.Count < localCount)) break; localFrom += localCount; localCount = localCount * 2; } return result.Skip(from).Take(count).ToList(); }
public IEnumerable<InvoiceBaseWrapper> GetInvoices( InvoiceStatus? status, ApiDateTime issueDateFrom, ApiDateTime issueDateTo, ApiDateTime dueDateFrom, ApiDateTime dueDateTo, String entityType, int entityid, String currency ) { if (!String.IsNullOrEmpty(entityType) && !( String.Compare(entityType, "contact", true) == 0 || String.Compare(entityType, "opportunity", true) == 0 || String.Compare(entityType, "case", true) == 0)) throw new ArgumentException(); IEnumerable<InvoiceBaseWrapper> result; InvoiceSortedByType sortBy; OrderBy invoiceOrderBy; var searchString = _context.FilterValue; if (InvoiceSortedByType.TryParse(_context.SortBy, true, out sortBy)) { invoiceOrderBy = new OrderBy(sortBy, !_context.SortDescending); } else if (String.IsNullOrEmpty(_context.SortBy)) { invoiceOrderBy = new OrderBy(InvoiceSortedByType.Number, true); } else { invoiceOrderBy = null; } var fromIndex = (int)_context.StartIndex; var count = (int)_context.Count; if (invoiceOrderBy != null) { result = ToListInvoiceBaseWrappers( DaoFactory.GetInvoiceDao().GetInvoices( searchString, status, issueDateFrom, issueDateTo, dueDateFrom, dueDateTo, ToEntityType(entityType), entityid, currency, fromIndex, count, invoiceOrderBy)); _context.SetDataPaginated(); _context.SetDataFiltered(); _context.SetDataSorted(); } else { result = ToListInvoiceBaseWrappers( DaoFactory.GetInvoiceDao().GetInvoices( searchString, status, issueDateFrom, issueDateTo, dueDateFrom, dueDateTo, ToEntityType(entityType), entityid, currency, 0, 0, null)); } int totalCount; if (result.Count() < count) { totalCount = fromIndex + result.Count(); } else { totalCount = DaoFactory.GetInvoiceDao().GetInvoicesCount( searchString, status, issueDateFrom, issueDateTo, dueDateFrom, dueDateTo, ToEntityType(entityType), entityid, currency); } _context.SetTotalCount(totalCount); return result.ToSmartList(); }
public void SetInvoiceStatus(InvoiceStatus status) { InvoiceStatus = (byte)status; }