private void ProcessSalesInvoiceBatch(SalesInvoiceCreditNoteDto[] source) { const int itemsToCreateCount = 2; const int itemsToUpdateCount = 2; const int itemsToDeleteCount = 2; List<BatchItem<SalesInvoiceCreditNoteDto>> batchSalesInvoices = new List<BatchItem<SalesInvoiceCreditNoteDto>>(); // Prepare batch items to create. SalesInvoiceGenerationParameters parameters = GetParametersForSingleSalesInvoiceCreation(); for (int i = 0; i < itemsToCreateCount; i++) { batchSalesInvoices.Add(new BatchItem<SalesInvoiceCreditNoteDto> { item = SampleDtoGenerator.GenerateSalesInvoice(parameters), opCode = BatchOperationCodes.Create }); } int sourceIndex = 0; // Prepare batch items to update. for (int i = 0; i < itemsToUpdateCount; i++) { SalesInvoiceCreditNoteDto salesInvoiceToUpdate = source[sourceIndex]; ModifySalesInvoiceForUpdate(salesInvoiceToUpdate); batchSalesInvoices.Add(new BatchItem<SalesInvoiceCreditNoteDto> { item = salesInvoiceToUpdate, opCode = BatchOperationCodes.Update }); sourceIndex++; } // Prepare batch items to delete. for (int i = 0; i < itemsToDeleteCount; i++) { batchSalesInvoices.Add(new BatchItem<SalesInvoiceCreditNoteDto> { item = new SalesInvoiceCreditNoteDto { id = source[sourceIndex].id, timestamp = source[sourceIndex].timestamp }, opCode = BatchOperationCodes.Delete }); sourceIndex++; } // Execute batch operation. BatchItemProcessResult<SalesInvoiceCreditNoteDto>[] batchResult = ProcessBatch(batchSalesInvoices.ToArray(), ApiClientProvider.Default.SalesInvoices.ProcessBatch); // Display batch results. Tracer.WriteLine("Batch of Sales Invoices was processed:"); IEnumerable<long> createdItemsIds = batchResult.Take(itemsToCreateCount).Select(itemResult => itemResult.id); Tracer.WriteLine("{0} items were created. Ids: {1}.", itemsToCreateCount, String.Join(", ", createdItemsIds)); IEnumerable<long> updatedItemsIds = batchResult.Skip(itemsToCreateCount).Take(itemsToUpdateCount).Select(itemResult => itemResult.id); Tracer.WriteLine("{0} items were updated. Ids: {1}.", itemsToUpdateCount, String.Join(", ", updatedItemsIds)); IEnumerable<long> deletedItemsIds = batchResult.Skip(itemsToCreateCount + itemsToUpdateCount).Take(itemsToDeleteCount).Select(itemResult => itemResult.id); Tracer.WriteLine("{0} items were deleted. Ids: {1}.", itemsToDeleteCount, String.Join(", ", deletedItemsIds)); Tracer.WriteLine(); }
private void UpdateSingleSalesInvoice(SalesInvoiceCreditNoteDto salesInvoice) { ApiClientProvider.Default.SalesInvoices.Update(salesInvoice.id, salesInvoice); Tracer.WriteLine("Single Sales Invoice with Id {0} was updated.", salesInvoice.id); Tracer.WriteLine(); }
protected void ModifySalesInvoiceForUpdate(SalesInvoiceCreditNoteDto salesInvoice) { salesInvoice.total = 75.6m; salesInvoice.totalVAT = 11.6m; var productTran = salesInvoice.productTrans.First(); productTran.unitPrice = 8m; productTran.acEntries.First().value = 14m; }