/// <summary> /// delete credit memo /// </summary> /// <param name="creditMemo"></param> /// <returns></returns> public OperationResult DeleteCreditMemo(CreditMemo creditMemo) { var operationResult = new OperationResult(); var existingCreditMemo = GetCreditMemo(creditMemo.CreditMemoId); if (existingCreditMemo != null) { try { _db.CreditMemo.Attach(creditMemo); _db.CreditMemo.Remove(creditMemo); _db.SaveChanges(); operationResult.Success = true; operationResult.Message = "delete this creditMemo success!"; } catch (Exception ex) { operationResult.Success = false; operationResult.Message = "Unable to update this creditMemo"; logger.ErrorFormat("Error while deleting creditMemo: { 0} ", ex.ToString()); } } else { operationResult.Success = false; operationResult.Message = "Unable to find selected creditMemo."; } return(operationResult); }
public void CreditMemoAddAsyncTestsUsingoAuth(ServiceContext qboContextoAuth) { //Creating the CreditMemo for Add CreditMemo entity = QBOHelper.CreateCreditMemo(qboContextoAuth); CreditMemo added = Helper.AddAsync <CreditMemo>(qboContextoAuth, entity); }
/// <summary> /// convert creditMemo view model to domain /// </summary> /// <param name="model"></param> /// <returns></returns> public CreditMemo ConvertToDomain(CreditMemoViewModel model) { CreditMemo creditMemo = new CreditMemo(); creditMemo.CreditMemoId = model.CreditMemoId; creditMemo.DebitMemoId = model.DebitMemoId; creditMemo.Number = model.CreditMemoNumber; creditMemo.CreditMemoDate = DateTime.Parse(model.CreditMemoDateStr); creditMemo.CustomerId = model.CustomerId; creditMemo.SalespersonId = model.SalespersonId; creditMemo.Amount = model.CreditAmount; creditMemo.Notes = model.CreditMemoNotes; if (model.CreditMemoItems != null && model.CreditMemoItems.Count > 0) { var creditMemoItems = new List <CreditMemoItem>(); foreach (var item in model.CreditMemoItems) { CreditMemoItem creditMemoItem = new CreditMemoItemConverter().ConvertToDomain(item); creditMemoItems.Add(creditMemoItem); } creditMemo.CreditMemoItems = creditMemoItems; } return(creditMemo); }
public void CreditMemoAddTestUsingoAuth(ServiceContext qboContextoAuth) { //Creating the CreditMemo for Add CreditMemo creditMemo = QBOHelper.CreateCreditMemo(qboContextoAuth); //Adding the CreditMemo CreditMemo added = Helper.Add <CreditMemo>(qboContextoAuth, creditMemo); }
/// <summary> /// save credit memo /// </summary> /// <param name="newCreditMemo"></param> /// <returns></returns> public OperationResult SaveCreditMemo(CreditMemo newCreditMemo) { var operationResult = new OperationResult(); try { var existingCreditMemo = _db.CreditMemo.FirstOrDefault(x => x.Number.ToLower() == newCreditMemo.Number.ToLower()); if (existingCreditMemo == null) { logger.Debug("CreditMemo is being created..."); var insertedCreditMemo = _db.CreditMemo.Add(newCreditMemo); _db.SaveChanges(); operationResult.Success = true; operationResult.Message = "Success"; operationResult.ReferenceId = insertedCreditMemo.CreditMemoId; } else { operationResult.Success = false; operationResult.Message = "Duplicate Entry"; } } catch (Exception ex) { operationResult.Success = false; operationResult.Message = "Error"; logger.ErrorFormat("Error saving new creditMemo: {0} ", ex.ToString()); } return(operationResult); }
public void CreditMemoVoidAsyncTestsUsingoAuth() { //Creating the CreditMemo for Adding CreditMemo entity = QBOHelper.CreateCreditMemo(qboContextoAuth); //Adding the CreditMemo CreditMemo added = Helper.Add <CreditMemo>(qboContextoAuth, entity); Helper.VoidAsync <CreditMemo>(qboContextoAuth, added); }
public void CreditMemoQueryUsingoAuth() { QueryService <CreditMemo> entityQuery = new QueryService <CreditMemo>(qboContextoAuth); CreditMemo existing = Helper.FindOrAdd <CreditMemo>(qboContextoAuth, new CreditMemo()); //List<CreditMemo> entities = entityQuery.Where(c => c.Id == existing.Id).ToList(); List <CreditMemo> entities = entityQuery.ExecuteIdsQuery("SELECT * FROM CreditMemo where Id='" + existing.Id + "'").ToList <CreditMemo>(); Assert.IsTrue(entities.Count() > 0); }
public void CreditMemoAddAsyncTestsUsingoAuth() { //Creating the CreditMemo for Add CreditMemo entity = QBOHelper.CreateCreditMemo(qboContextoAuth); CreditMemo added = Helper.AddAsync <CreditMemo>(qboContextoAuth, entity); QBOHelper.VerifyCreditMemo(entity, added); }
public void CreditMemoFindByIdAsyncTestsUsingoAuth(ServiceContext qboContextoAuth) { //Creating the CreditMemo for Adding CreditMemo entity = QBOHelper.CreateCreditMemo(qboContextoAuth); //Adding the CreditMemo CreditMemo added = Helper.Add <CreditMemo>(qboContextoAuth, entity); //FindById and verify Helper.FindByIdAsync <CreditMemo>(qboContextoAuth, added); }
public void CreditMemoFindbyIdTestUsingoAuth() { //Creating the CreditMemo for Adding CreditMemo creditMemo = QBOHelper.CreateCreditMemo(qboContextoAuth); //Adding the CreditMemo CreditMemo added = Helper.Add <CreditMemo>(qboContextoAuth, creditMemo); CreditMemo found = Helper.FindById <CreditMemo>(qboContextoAuth, added); QBOHelper.VerifyCreditMemo(found, added); }
public void CreditMemoAddTestUsingoAuth() { //Creating the CreditMemo for Add CreditMemo creditMemo = QBOHelper.CreateCreditMemo(qboContextoAuth); //Adding the CreditMemo CreditMemo added = Helper.Add <CreditMemo>(qboContextoAuth, creditMemo); //Verify the added CreditMemo QBOHelper.VerifyCreditMemo(creditMemo, added); }
public void CreditMemoSparseUpdateTestUsingoAuth(ServiceContext qboContextoAuth) { //Creating the CreditMemo for Adding CreditMemo creditMemo = QBOHelper.CreateCreditMemo(qboContextoAuth); //Adding the CreditMemo CreditMemo added = Helper.Add <CreditMemo>(qboContextoAuth, creditMemo); //Change the data of added entity CreditMemo changed = QBOHelper.UpdateCreditMemoSparse(qboContextoAuth, added.Id, added.SyncToken); //Update the returned entity data CreditMemo updated = Helper.Update <CreditMemo>(qboContextoAuth, changed); }
public void CreditMemoSparseUpdatedAsyncTestsUsingoAuth(ServiceContext qboContextoAuth) { //Creating the CreditMemo for Adding CreditMemo entity = QBOHelper.CreateCreditMemo(qboContextoAuth); //Adding the CreditMemo CreditMemo added = Helper.Add <CreditMemo>(qboContextoAuth, entity); //Update the CreditMemo CreditMemo updated = QBOHelper.UpdateCreditMemoSparse(qboContextoAuth, added.Id, added.SyncToken); //Call the service CreditMemo updatedReturned = Helper.UpdateAsync <CreditMemo>(qboContextoAuth, updated); }
/// <summary> /// Call CDX real time service to get credit memo by identifier. /// </summary> /// <param name="context">Request context.</param> /// <param name="id">Credit memo identifier.</param> /// <returns>Credit memo information.</returns> private static CreditMemo GetCreditMemo(RequestContext context, string id) { if (string.IsNullOrWhiteSpace(id)) { throw new ArgumentException("Credit memo identifier is null or empty.", "id"); } var getCreditMemoRealtimeRequest = new GetCreditMemoRealtimeRequest(id); CreditMemo creditMemo = context.Execute <SingleEntityDataServiceResponse <CreditMemo> >(getCreditMemoRealtimeRequest).Entity; return(creditMemo); }
public void CreditMemoUpdateTestUsingoAuth() { //Creating the CreditMemo for Adding CreditMemo creditMemo = QBOHelper.CreateCreditMemo(qboContextoAuth); //Adding the CreditMemo CreditMemo added = Helper.Add <CreditMemo>(qboContextoAuth, creditMemo); //Change the data of added entity CreditMemo changed = QBOHelper.UpdateCreditMemo(qboContextoAuth, added); //Update the returned entity data CreditMemo updated = Helper.Update <CreditMemo>(qboContextoAuth, changed); //Verify the updated CreditMemo QBOHelper.VerifyCreditMemo(changed, updated); }
public void CreditMemoUpdatedAsyncTestsUsingoAuth() { //Creating the CreditMemo for Adding CreditMemo entity = QBOHelper.CreateCreditMemo(qboContextoAuth); //Adding the CreditMemo CreditMemo added = Helper.Add <CreditMemo>(qboContextoAuth, entity); //Update the CreditMemo CreditMemo updated = QBOHelper.UpdateCreditMemo(qboContextoAuth, added); //Call the service CreditMemo updatedReturned = Helper.UpdateAsync <CreditMemo>(qboContextoAuth, updated); //Verify updated CreditMemo QBOHelper.VerifyCreditMemo(updated, updatedReturned); }
/// <summary> /// get credit memo by id /// </summary> /// <param name="creditMemoId"></param> /// <returns></returns> public CreditMemo GetCreditMemo(Guid creditMemoId) { var creditMemo = new CreditMemo(); try { creditMemo = _db.CreditMemo.FirstOrDefault(x => x.CreditMemoId == creditMemoId); } catch (Exception ex) { logger.ErrorFormat("Error getting credit memo: {0} ", ex.ToString()); } return(creditMemo); }
public void CreditMemoBatchUsingoAuth(ServiceContext qboContextoAuth) { Dictionary <OperationEnum, object> batchEntries = new Dictionary <OperationEnum, object>(); CreditMemo existing = Helper.FindOrAdd(qboContextoAuth, new CreditMemo()); batchEntries.Add(OperationEnum.create, QBOHelper.CreateCreditMemo(qboContextoAuth)); batchEntries.Add(OperationEnum.update, QBOHelper.UpdateCreditMemo(qboContextoAuth, existing)); batchEntries.Add(OperationEnum.query, "select * from CreditMemo"); batchEntries.Add(OperationEnum.delete, existing); ReadOnlyCollection <IntuitBatchResponse> batchResponses = Helper.Batch <CreditMemo>(qboContextoAuth, batchEntries); }
public void CreditMemoDeleteTestUsingoAuth(ServiceContext qboContextoAuth) { //Creating the CreditMemo for Adding CreditMemo creditMemo = QBOHelper.CreateCreditMemo(qboContextoAuth); //Adding the CreditMemo CreditMemo added = Helper.Add <CreditMemo>(qboContextoAuth, creditMemo); //Delete the returned entity try { CreditMemo deleted = Helper.Delete <CreditMemo>(qboContextoAuth, added); } catch (IdsException ex) { } }
/// <summary> /// Reserves the credit memo for a given terminal so it cannot be used on other terminals. /// </summary> /// <param name="request">The <see cref="LockCreditMemoRealtimeRequest"/> request.</param> /// <returns>The <see cref="SingleEntityDataServiceResponse{CreditMemo}"/> response.</returns> private static SingleEntityDataServiceResponse <CreditMemo> LockCreditMemo(LockCreditMemoRealtimeRequest request) { var transactionClient = new TransactionService.TransactionServiceClient(request.RequestContext); string cardCurrencyCode; decimal amount; transactionClient.LockCreditMemo(request.CreditMemoId, request.StoreId, request.TerminalId, out cardCurrencyCode, out amount); var creditMemo = new CreditMemo { Id = request.CreditMemoId, CurrencyCode = cardCurrencyCode, Balance = amount }; return(new SingleEntityDataServiceResponse <CreditMemo>(creditMemo)); }
/// <summary> /// Gets credit memo by id. /// </summary> /// <param name="request">The request.</param> /// <returns>The <see cref="SingleEntityDataServiceResponse{CreditMemo}"/> response.</returns> private static SingleEntityDataServiceResponse <CreditMemo> GetCreditMemo(GetCreditMemoRealtimeRequest request) { var transactionClient = new TransactionService.TransactionServiceClient(request.RequestContext); string currencyCode; decimal balance; transactionClient.GetCreditMemo(request.CreditMemoId, out currencyCode, out balance); var creditMemo = new CreditMemo { Id = request.CreditMemoId, CurrencyCode = currencyCode, Balance = balance }; return(new SingleEntityDataServiceResponse <CreditMemo>(creditMemo)); }
public void CreditMemoVoidTestUsingoAuth() { //Creating the CreditMemo for Adding CreditMemo creditMemo = QBOHelper.CreateCreditMemo(qboContextoAuth); //Adding the CreditMemo CreditMemo added = Helper.Add <CreditMemo>(qboContextoAuth, creditMemo); //Delete the returned entity try { CreditMemo voided = Helper.Void <CreditMemo>(qboContextoAuth, added); Assert.AreEqual(EntityStatusEnum.Voided, voided.status); } catch (IdsException ex) { Assert.Fail(); } }
/// <summary> /// Authorizes the payment. /// </summary> /// <param name="request">The request.</param> /// <returns>A response containing the authorized tender line.</returns> private static AuthorizePaymentServiceResponse AuthorizePayment(AuthorizePaymentServiceRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.TenderLine.Amount > 0) { // Positive amount indicates credit memo payment. // Payment always uses full amount. Actual amount will be returned as part of tender line on response. string orgUnitNumber = request.RequestContext.GetOrgUnit().OrgUnitNumber; var lockRequest = new LockCreditMemoRealtimeRequest( request.TenderLine.CreditMemoId, orgUnitNumber, request.RequestContext.GetTerminal().TerminalId); CreditMemo creditMemo = request.RequestContext.Execute <SingleEntityDataServiceResponse <CreditMemo> >(lockRequest).Entity; request.TenderLine.Amount = creditMemo.Balance; request.TenderLine.Currency = creditMemo.CurrencyCode; request.TenderLine.Status = TenderLineStatus.PendingCommit; request.TenderLine.IsVoidable = true; } else { // For negative amount issue new credit memo if (!string.IsNullOrWhiteSpace(request.TenderLine.CreditMemoId)) { throw new PaymentException( PaymentErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest, "Refund to existing credit memo is not allowed. To issue credit memo identifier should be left blank."); } string creditMemoId = IssueCreditMemo(request.RequestContext, decimal.Negate(request.TenderLine.Amount), request.TenderLine.Currency, request.Transaction.Id, request.Transaction.ReceiptId); request.TenderLine.CreditMemoId = creditMemoId; request.TenderLine.Status = TenderLineStatus.Committed; request.TenderLine.IsVoidable = false; } return(new AuthorizePaymentServiceResponse(request.TenderLine)); }
public void CreditMemoBatchUsingoAuth() { Dictionary <OperationEnum, object> batchEntries = new Dictionary <OperationEnum, object>(); CreditMemo existing = Helper.FindOrAdd(qboContextoAuth, new CreditMemo()); batchEntries.Add(OperationEnum.create, QBOHelper.CreateCreditMemo(qboContextoAuth)); batchEntries.Add(OperationEnum.update, QBOHelper.UpdateCreditMemo(qboContextoAuth, existing)); batchEntries.Add(OperationEnum.query, "select * from CreditMemo"); batchEntries.Add(OperationEnum.delete, existing); ReadOnlyCollection <IntuitBatchResponse> batchResponses = Helper.BatchTest <CreditMemo>(qboContextoAuth, batchEntries); int position = 0; foreach (IntuitBatchResponse resp in batchResponses) { if (resp.ResponseType == ResponseType.Exception) { Assert.Fail(resp.Exception.ToString()); } if (resp.ResponseType == ResponseType.Entity) { Assert.IsFalse(string.IsNullOrEmpty((resp.Entity as CreditMemo).Id)); } else if (resp.ResponseType == ResponseType.Query) { Assert.IsTrue(resp.Entities != null && resp.Entities.Count > 0); } else if (resp.ResponseType == ResponseType.CdcQuery) { Assert.IsTrue(resp.CDCResponse != null && resp.CDCResponse.entities != null && resp.CDCResponse.entities.Count > 0); } position++; } }
/// <summary> /// Calculate amount to do be paid. /// </summary> /// <param name="request">The request.</param> /// <returns>A response containing the updated tender line.</returns> private static CalculatePaymentAmountServiceResponse CalculatePaymentAmount(CalculatePaymentAmountServiceRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.TenderLine.Amount > 0) { throw new PaymentException(PaymentErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest, "Amount cannot be specified when paying with credit memo. Only full credit memo amount can be used by setting amount to zero."); } // for refunds amount is provided by client and doesn't have to be calculated if (request.TenderLine.Amount == 0) { CreditMemo creditMemo = GetCreditMemo(request.RequestContext, request.TenderLine.CreditMemoId); request.TenderLine.Amount = creditMemo.Balance; // set tender line amount to credit memo } return(new CalculatePaymentAmountServiceResponse(request.TenderLine)); }
/// <summary> /// convert memo to list model /// </summary> /// <param name="memo"></param> /// <returns></returns> public CreditMemoViewModel ConvertToListView(CreditMemo memo) { CreditMemoViewModel model = new CreditMemoViewModel(); var _debitMemoRepository = new DebitMemoRepository(); var _customerDynamicsRepository = new CustomerDynamicsRepository(); var _foundryDynamicsRepository = new FoundryDynamicsRepository(); var debitMemo = _debitMemoRepository.GetDebitMemo(memo.DebitMemoId); var dynamicsCustomer = _customerDynamicsRepository.GetCustomer(memo.CustomerId); model.CreditMemoId = memo.CreditMemoId; model.CreditMemoNumber = (!string.IsNullOrEmpty(memo.Number)) ? memo.Number : "N/A"; model.CustomerId = memo.CustomerId; model.FoundryId = (debitMemo != null) ? debitMemo.FoundryId : string.Empty; model.CustomerName = (dynamicsCustomer != null && !string.IsNullOrEmpty(dynamicsCustomer.SHRTNAME)) ? dynamicsCustomer.SHRTNAME : "N/A"; model.DebitMemoId = memo.DebitMemoId; model.DebitMemoNumber = (debitMemo != null && !string.IsNullOrEmpty(debitMemo.Number)) ? debitMemo.Number : "N/A"; model.CreditMemoDate = memo.CreditMemoDate; model.CreditMemoDateStr = memo.CreditMemoDate.ToShortDateString(); model.CreditAmount = memo.Amount; model.RmaNumber = (debitMemo != null && !string.IsNullOrEmpty(debitMemo.RmaNumber)) ? debitMemo.RmaNumber : "N/A"; if (_debitMemoRepository != null) { _debitMemoRepository.Dispose(); _debitMemoRepository = null; } if (_customerDynamicsRepository != null) { _customerDynamicsRepository.Dispose(); _customerDynamicsRepository = null; } return(model); }
public string CreateEntity(string accessToken, string realmID, string refreshToken, int entityType, string XML, bool IsProd) { try { if (!string.IsNullOrEmpty(accessToken) && !string.IsNullOrEmpty(realmID)) { string output = ""; ServiceContext serviceContext = BuildServiceContext(accessToken, realmID, IsProd); DataService dataService = new DataService(serviceContext); QBObjectType QBEntityType = (QBObjectType)entityType; Output("Making CreateEntity " + QBEntityType + " API Call."); switch (QBEntityType) { case QBObjectType.Customer: XmlSerializer customerSerializer = new XmlSerializer(typeof(Customer)); StringReader customerReader = new StringReader(XML); Customer customer = (Customer)customerSerializer.Deserialize(customerReader); Customer newCustomer = dataService.Add(customer); StringWriter customerWriter = new StringWriter(); customerSerializer.Serialize(customerWriter, newCustomer); output = customerWriter.ToString(); break; case QBObjectType.Invoice: XmlSerializer invoiceSerializer = new XmlSerializer(typeof(Invoice)); StringReader invoiceReader = new StringReader(XML); Invoice invoice = (Invoice)invoiceSerializer.Deserialize(invoiceReader); Invoice newInvoice = dataService.Add(invoice); StringWriter invoiceWriter = new StringWriter(); invoiceSerializer.Serialize(invoiceWriter, newInvoice); output = invoiceWriter.ToString(); break; case QBObjectType.InvoiceCreditMemo: XmlSerializer creditMemoSerializer = new XmlSerializer(typeof(CreditMemo)); StringReader creditMemoReader = new StringReader(XML); CreditMemo creditMemo = (CreditMemo)creditMemoSerializer.Deserialize(creditMemoReader); CreditMemo newCreditMemo = dataService.Add(creditMemo); StringWriter creditMemoWriter = new StringWriter(); creditMemoSerializer.Serialize(creditMemoWriter, newCreditMemo); output = creditMemoWriter.ToString(); break; case QBObjectType.Vendor: case QBObjectType.VendorDeduction: XmlSerializer vendorSerializer = new XmlSerializer(typeof(Vendor)); StringReader reader = new StringReader(XML); Vendor vendor = (Vendor)vendorSerializer.Deserialize(reader); Vendor newVendor = dataService.Add(vendor); StringWriter vendorWriter = new StringWriter(); vendorSerializer.Serialize(vendorWriter, newVendor); output = vendorWriter.ToString(); break; case QBObjectType.CarrierPay: case QBObjectType.DriverPay: XmlSerializer billSerializer = new XmlSerializer(typeof(Bill)); StringReader billReader = new StringReader(XML); Bill bill = (Bill)billSerializer.Deserialize(billReader); Bill newBill = dataService.Add(bill); StringWriter billWriter = new StringWriter(); billSerializer.Serialize(billWriter, newBill); output = billWriter.ToString(); break; case QBObjectType.DriverDeduction: XmlSerializer vendorCreditSerializer = new XmlSerializer(typeof(VendorCredit)); StringReader vendorCreditReader = new StringReader(XML); VendorCredit vendorCredit = (VendorCredit)vendorCreditSerializer.Deserialize(vendorCreditReader); VendorCredit newVendorCredit = dataService.Add(vendorCredit); StringWriter vendorCreditWriter = new StringWriter(); vendorCreditSerializer.Serialize(vendorCreditWriter, newVendorCredit); output = vendorCreditWriter.ToString(); break; case QBObjectType.TaxCode: XmlSerializer taxCodeSerializer = new XmlSerializer(typeof(TaxCode)); StringReader taxCodeReader = new StringReader(XML); TaxCode taxCode = (TaxCode)taxCodeSerializer.Deserialize(taxCodeReader); TaxCode newTaxCode = dataService.Add(taxCode); StringWriter taxCodeWriter = new StringWriter(); taxCodeSerializer.Serialize(taxCodeWriter, newTaxCode); output = taxCodeWriter.ToString(); break; case QBObjectType.TaxRate: XmlSerializer taxRateSerializer = new XmlSerializer(typeof(TaxRate)); StringReader taxRateReader = new StringReader(XML); TaxRate taxRate = (TaxRate)taxRateSerializer.Deserialize(taxRateReader); TaxRate newTaxRate = dataService.Add(taxRate); StringWriter taxRateWriter = new StringWriter(); taxRateSerializer.Serialize(taxRateWriter, newTaxRate); output = taxRateWriter.ToString(); break; } Output("QBO CreateEntity successful."); return(output); } else { Output("AccessToken or RealmID cannot be empty"); } } catch (IdsException ex) { if (ex.Message == "Unauthorized-401") { Output("Invalid/Expired Access Token."); RefreshTokens(refreshToken); if (oauthTokens.ContainsKey("accessToken") && oauthTokens.ContainsKey("refreshToken")) { Output("Refreshed Access Token"); return(CreateEntity(oauthTokens["accessToken"], realmID, oauthTokens["refreshToken"], entityType, XML, IsProd)); } else { Output("Error while refreshing tokens"); return("REVOKE"); } } else if (ex.Message == "429") { Output("Too Many Concurrent Requests - Retrying in 1 minute..."); System.Threading.Thread.Sleep(60000); return(CreateEntity(accessToken, realmID, refreshToken, entityType, XML, IsProd)); } else { Output("IdsException = " + ex.Message); return(ex.Message); } } catch (Exception ex) { Output("Exception = " + ex.Message); return(ex.Message); } return(""); }
public string MakeQBOQuery(string accessToken, string realmID, string refreshToken, int queryType, string query, bool IsProd) { try { if (!string.IsNullOrEmpty(accessToken) && !string.IsNullOrEmpty(realmID)) { ServiceContext serviceContext = BuildServiceContext(accessToken, realmID, IsProd); string output = ""; QBObjectType QBQueryType = (QBObjectType)queryType; Output("Making MakeQBOQuery " + QBQueryType + " API Call."); switch (QBQueryType) { case QBObjectType.cClass: QueryService <Class> classQuerySvc = new QueryService <Class>(serviceContext); Class classQuery = classQuerySvc.ExecuteIdsQuery(query).FirstOrDefault(); XmlSerializer classSerializer = new XmlSerializer(typeof(Class)); StringWriter classWriter = new StringWriter(); classSerializer.Serialize(classWriter, classQuery); output = classWriter.ToString(); break; case QBObjectType.Customer: QueryService <Customer> customerQuery = new QueryService <Customer>(serviceContext); Customer customer = customerQuery.ExecuteIdsQuery(query).FirstOrDefault(); XmlSerializer customerSerializer = new XmlSerializer(typeof(Customer)); StringWriter customerWriter = new StringWriter(); customerSerializer.Serialize(customerWriter, customer); output = customerWriter.ToString(); break; case QBObjectType.Invoice: QueryService <Invoice> invoiceQuery = new QueryService <Invoice>(serviceContext); Invoice invoice = invoiceQuery.ExecuteIdsQuery(query).FirstOrDefault(); XmlSerializer invoiceSerializer = new XmlSerializer(typeof(Invoice)); StringWriter invoiceWriter = new StringWriter(); invoiceSerializer.Serialize(invoiceWriter, invoice); output = invoiceWriter.ToString(); break; case QBObjectType.InvoiceCreditMemo: QueryService <CreditMemo> creditMemoQuery = new QueryService <CreditMemo>(serviceContext); CreditMemo creditMemo = creditMemoQuery.ExecuteIdsQuery(query).FirstOrDefault(); XmlSerializer creditMemoSerializer = new XmlSerializer(typeof(CreditMemo)); StringWriter creditMemoWriter = new StringWriter(); creditMemoSerializer.Serialize(creditMemoWriter, creditMemo); output = creditMemoWriter.ToString(); break; case QBObjectType.Vendor: case QBObjectType.VendorDeduction: QueryService <Vendor> vendorQuery = new QueryService <Vendor>(serviceContext); Vendor vendor = vendorQuery.ExecuteIdsQuery(query).FirstOrDefault(); XmlSerializer vendorSerializer = new XmlSerializer(typeof(Vendor)); StringWriter vendorWriter = new StringWriter(); vendorSerializer.Serialize(vendorWriter, vendor); output = vendorWriter.ToString(); break; case QBObjectType.CarrierPay: case QBObjectType.DriverPay: QueryService <Bill> billQuery = new QueryService <Bill>(serviceContext); Bill bill = billQuery.ExecuteIdsQuery(query).FirstOrDefault(); XmlSerializer billSerializer = new XmlSerializer(typeof(Bill)); StringWriter billWriter = new StringWriter(); billSerializer.Serialize(billWriter, bill); output = billWriter.ToString(); break; case QBObjectType.DriverDeduction: QueryService <VendorCredit> vendorCreditQuery = new QueryService <VendorCredit>(serviceContext); VendorCredit vendorCredit = vendorCreditQuery.ExecuteIdsQuery(query).FirstOrDefault(); XmlSerializer vendorCreditSerializer = new XmlSerializer(typeof(VendorCredit)); StringWriter vendorCreditWriter = new StringWriter(); vendorCreditSerializer.Serialize(vendorCreditWriter, vendorCredit); output = vendorCreditWriter.ToString(); break; case QBObjectType.Term: QueryService <Term> termQuery = new QueryService <Term>(serviceContext); Term term = termQuery.ExecuteIdsQuery(query).FirstOrDefault(); XmlSerializer termSerializer = new XmlSerializer(typeof(Term)); StringWriter termWriter = new StringWriter(); termSerializer.Serialize(termWriter, term); output = termWriter.ToString(); break; case QBObjectType.COA: QueryService <Account> accountQuery = new QueryService <Account>(serviceContext); Account account = accountQuery.ExecuteIdsQuery(query).FirstOrDefault(); XmlSerializer accountSerializer = new XmlSerializer(typeof(Account)); StringWriter accountWriter = new StringWriter(); accountSerializer.Serialize(accountWriter, account); output = accountWriter.ToString(); break; case QBObjectType.TaxCode: QueryService <TaxCode> taxCodeQuery = new QueryService <TaxCode>(serviceContext); TaxCode taxCode = taxCodeQuery.ExecuteIdsQuery(query).FirstOrDefault(); XmlSerializer taxCodeSerializer = new XmlSerializer(typeof(TaxCode)); StringWriter taxCodeWriter = new StringWriter(); taxCodeSerializer.Serialize(taxCodeWriter, taxCode); output = taxCodeWriter.ToString(); break; case QBObjectType.TaxRate: QueryService <TaxRate> taxRateQuery = new QueryService <TaxRate>(serviceContext); TaxRate taxRate = taxRateQuery.ExecuteIdsQuery(query).FirstOrDefault(); XmlSerializer taxRateSerializer = new XmlSerializer(typeof(TaxRate)); StringWriter taxRateWriter = new StringWriter(); taxRateSerializer.Serialize(taxRateWriter, taxRate); output = taxRateWriter.ToString(); break; case QBObjectType.Item: QueryService <Item> itemQuery = new QueryService <Item>(serviceContext); Item item = itemQuery.ExecuteIdsQuery(query).FirstOrDefault(); XmlSerializer itemSerializer = new XmlSerializer(typeof(Item)); StringWriter itemWriter = new StringWriter(); itemSerializer.Serialize(itemWriter, item); output = itemWriter.ToString(); break; } Output("MakeQBOQuery call successful."); return(output); } else { Output("AccessToken or RealmID cannot be empty"); } } catch (IdsException ex) { if (ex.Message == "Unauthorized-401") { Output("Invalid/Expired Access Token."); RefreshTokens(refreshToken); if (oauthTokens.ContainsKey("accessToken") && oauthTokens.ContainsKey("refreshToken")) { Output("Refreshed Access Token"); return(MakeQBOQuery(oauthTokens["accessToken"], realmID, oauthTokens["refreshToken"], queryType, query, IsProd)); } else { Output("Error while refreshing tokens"); return("REVOKE"); } } else if (ex.Message == "429") { Output("Too Many Concurrent Requests - Retrying in 1 minute..."); System.Threading.Thread.Sleep(60000); return(MakeQBOQuery(accessToken, realmID, refreshToken, queryType, query, IsProd)); } else { Output("IdsException = " + ex.Message); } } catch (Exception ex) { Output("Exception = " + ex.Message); Output("StackTrace = " + ex.StackTrace); Output("HelpLink = " + ex.HelpLink); Output("InnerException.Message = " + ex.InnerException.Message); } return(""); }
/// <summary> /// convert memo to view model /// </summary> /// <param name="memo"></param> /// <returns></returns> public CreditMemoViewModel ConvertToView(CreditMemo memo) { CreditMemoViewModel model = new CreditMemoViewModel(); var _debitMemoRepository = new DebitMemoRepository(); var _customerDynamicsRepository = new CustomerDynamicsRepository(); var _salespersonDynamicsRepository = new SalespersonDynamicsRepository(); var _creditMemoRepository = new CreditMemoRepository(); var debitMemo = _debitMemoRepository.GetDebitMemo(memo.DebitMemoId); var dynamicsCustomer = _customerDynamicsRepository.GetCustomer(memo.CustomerId); var dyanmicsSalesperson = _salespersonDynamicsRepository.GetSalesperson(!string.IsNullOrEmpty(memo.SalespersonId) ? memo.SalespersonId : "N/A"); var items = _creditMemoRepository.GetCreditMemoItems().Where(x => x.CreditMemoId == memo.CreditMemoId).ToList(); model.CreditMemoId = memo.CreditMemoId; model.DebitMemoId = memo.DebitMemoId; model.DebitMemoNumber = (debitMemo != null && !string.IsNullOrEmpty(debitMemo.Number)) ? debitMemo.Number : "N/A"; model.CreditMemoNumber = (!string.IsNullOrEmpty(memo.Number)) ? memo.Number : "N/A"; model.CreditMemoDate = memo.CreditMemoDate; model.CreditMemoDateStr = memo.CreditMemoDate.ToShortDateString(); model.CustomerId = memo.CustomerId; model.CustomerName = (dynamicsCustomer != null && !string.IsNullOrEmpty(dynamicsCustomer.SHRTNAME)) ? dynamicsCustomer.SHRTNAME : "N/A"; model.SalespersonId = memo.SalespersonId; model.SalespersonName = (dyanmicsSalesperson != null && !string.IsNullOrEmpty(memo.SalespersonId)) ? dyanmicsSalesperson.SLPRSNFN + " " + dyanmicsSalesperson.SPRSNSLN : "N/A"; model.CreditAmount = memo.Amount; model.CreditMemoNotes = (!string.IsNullOrEmpty(memo.Number)) ? memo.Notes : "N/A"; if (items != null && items.Count > 0) { var creditMemoItems = new List <CreditMemoItemViewModel>(); foreach (var item in items) { CreditMemoItemViewModel creditMemoItem = new CreditMemoItemConverter().ConvertToView(item); creditMemoItems.Add(creditMemoItem); } model.CreditMemoItems = creditMemoItems; } if (_debitMemoRepository != null) { _debitMemoRepository.Dispose(); _debitMemoRepository = null; } if (_customerDynamicsRepository != null) { _customerDynamicsRepository.Dispose(); _customerDynamicsRepository = null; } if (_salespersonDynamicsRepository != null) { _salespersonDynamicsRepository.Dispose(); _salespersonDynamicsRepository = null; } if (_creditMemoRepository != null) { _creditMemoRepository.Dispose(); _creditMemoRepository = null; } return(model); }
protected void ToolbarButtonClick(object sender, RadToolBarEventArgs e) { switch (e.Item.Text) { case "Request": if (IsValid) { var cInvoice = new CInvoice(); var original = cInvoice.Get(InvoiceId); if (original != null) { original.Status = (int)CConstValue.InvoiceStatus.Invoiced_Hold; original.UpdatedId = CurrentUserId; if (cInvoice.Update(original)) { var cRefundInvoice = new CInvoice(); var refundInvoice = new Erp2016.Lib.Invoice(); CGlobal.Copy(original, refundInvoice); refundInvoice.OriginalInvoiceId = original.InvoiceId; switch (original.InvoiceType) { case (int)CConstValue.InvoiceType.General: case (int)CConstValue.InvoiceType.Simple: case (int)CConstValue.InvoiceType.Manual: refundInvoice.InvoiceType = (int)CConstValue.InvoiceType.Refund_RF; break; case (int)CConstValue.InvoiceType.Homestay: refundInvoice.InvoiceType = (int)CConstValue.InvoiceType.Refund_HR; break; case (int)CConstValue.InvoiceType.Dormitory: refundInvoice.InvoiceType = (int)CConstValue.InvoiceType.Refund_DR; break; } refundInvoice.Status = (int)CConstValue.InvoiceStatus.Pending; refundInvoice.CreatedId = CurrentUserId; refundInvoice.CreatedDate = DateTime.Now; var invoiceId = cRefundInvoice.Add(refundInvoice); if (invoiceId > 0) { var refundInvoiceItems = new CInvoiceItem(); refundInvoiceItems.RefundItemsUpdate(original.InvoiceId, invoiceId, Convert.ToDecimal(RefundInfo1.GetRefundRate().Value), CurrentUserId); var cCreditMemo = new CCreditMemo(); var creditMemo = new CreditMemo(); creditMemo.CreditMemoType = (int)CConstValue.CreditMemoType.Refund; creditMemo.InvoiceId = invoiceId; //Refund Invoice Id creditMemo.OriginalCreditMemoAmount = 0; creditMemo.CreatedId = CurrentUserId; creditMemo.CreatedDate = DateTime.Now; creditMemo.IsActive = false; var creditMemoId = cCreditMemo.Add(creditMemo); if (creditMemoId > 0) { var cCreditMemoPayout = new CCreditMemoPayout(); var creditMemoPayout = new CreditMemoPayout(); creditMemoPayout.CreditMemoId = creditMemoId; creditMemoPayout.Amount = 0; creditMemoPayout.IsActive = false; creditMemoPayout.CreatedId = CurrentUserId; creditMemoPayout.CreatedDate = DateTime.Now; var creditMemoPayoutId = cCreditMemoPayout.Add(creditMemoPayout); if (creditMemoPayoutId > 0) { var cRefund = new CRefund(); var refund = new Refund(); refund.CreditMemoPayoutId = creditMemoPayoutId; refund.InvoiceId = invoiceId; refund.RefundDate = Convert.ToDateTime(RefundInfo1.RadActualDate().SelectedDate); refund.RefundRate = Convert.ToDouble(RefundInfo1.GetRefundRate().Value); refund.RefundReason = RefundInfo1.GetReason().Text; refund.IsActive = false; refund.CreatedId = CurrentUserId; refund.CreatedDate = DateTime.Now; if (cRefund.Add(refund) > 0) { // save uploading file FileDownloadList1.SaveFile(refund.RefundId); RunClientScript("Close();"); } ShowMessage("failed to update inqury (Add Refund Info)"); } else { ShowMessage("failed to update inqury (Add CreditMemoPayout)"); } } else { ShowMessage("failed to update inqury (Add CreditMemo)"); } } else { ShowMessage("failed to update inqury (Add Refund Invoice)"); } } else { ShowMessage("failed to update inqury (Update Original Invoice)"); } } else { ShowMessage("failed to update inqury (Original Invoice is null)"); } } break; case "Close": RunClientScript("Close();"); break; } }