/// <summary> /// Điều chỉnh tăng hoặc giảm cho hóa đơn /// </summary> /// <param name="authentication"></param> /// <param name="model"></param> /// <returns></returns> public MessageResult Adjustment(Authentication authentication, InvoiceAdjustmentModel model) { MessageResult result = new MessageResult(); try { var token = GetToken(authentication); if (!string.IsNullOrEmpty(token)) { string apiLink = $"{authentication.DomainName}/api/invoices/adjustment-detail/{model.Id}"; InvoiceAdjustmentRequest request = new InvoiceAdjustmentRequest(model); List <InvoiceAdjustmentDetail> invoiceDetails = new List <InvoiceAdjustmentDetail>(); if (model.Details != null) { invoiceDetails.AddRange(model.Details.Select(c => new InvoiceAdjustmentDetail(c))); } request.Details = invoiceDetails; List <InvoiceAdjustmentTaxBreakdown> taxBreakdowns = new List <InvoiceAdjustmentTaxBreakdown>(); if (model.TaxBreakdowns != null) { taxBreakdowns.AddRange(model.TaxBreakdowns.Select(c => new InvoiceAdjustmentTaxBreakdown(c))); } request.TaxBreakdowns = taxBreakdowns; var rawResponse = AppUtil.CreateRequest(apiLink, request.ToJson(), token); var response = rawResponse.ToObject <BaseResponse <InvoiceAdjustmentResponse> >(); if (response != null) { result.Code = response.Code; result.Succeeded = response.Succeeded; result.Data = response.Data; } } else { result.CannotLogin(); } } catch (Exception) { result.ErrorApi(); } return(result); }
/// <summary> /// Cập nhật 1 hóa đơn chưa ký hoặc thay thế 1 hóa đơn đã ký trên hệ thống /// </summary> /// <param name="authentication"></param> /// <param name="model"></param> /// <returns></returns> public MessageResult DeliveryUpdate(Authentication authentication, InternalDeliveryUpdateModel model) { MessageResult result = new MessageResult(); try { var token = GetToken(authentication); if (!string.IsNullOrEmpty(token)) { string apiLink = $"{authentication.DomainName}/api/interval-delivery/update/{model.ReferenceId}"; InternalDeliveryUpdateRequest request = new InternalDeliveryUpdateRequest(model); List <InternalDeliveryDetail> invoiceDetails = new List <InternalDeliveryDetail>(); if (model.Details != null) { invoiceDetails.AddRange(model.Details.Select(c => new InternalDeliveryDetail(c))); } request.Details = invoiceDetails; var rawResponse = AppUtil.CreateRequest(apiLink, request.ToJson(), token, MethodType.PUT); var response = rawResponse.ToObject <BaseResponse <InternalDeliveryUpdateResponse> >(); if (response != null) { result.Code = response.Code; result.Succeeded = response.Succeeded; result.Data = response.Data; } } else { result.CannotLogin(); } } catch (Exception) { result.ErrorApi(); } return(result); }
/// <summary> /// Duyệt và ký 1 hóa đơn /// </summary> /// <param name="authentication"></param> /// <param name="model"></param> /// <returns></returns> public MessageResult ApproveAndSign(Authentication authentication, InvoiceApproveAndSignModel model) { MessageResult result = new MessageResult(); try { var token = GetToken(authentication); if (!string.IsNullOrEmpty(token)) { string apiLink = $"{authentication.DomainName}/api/invoices/approve-and-sign"; string strRequest = $"id={model.Id}"; var rawResponse = AppUtil.CreateRequest(apiLink, strRequest, token, MethodType.POST, "application/x-www-form-urlencoded"); var response = rawResponse.ToObject <BaseResponse <InvoiceApproveAndSignResponse> >(); if (response != null) { result.Code = response.Code; result.Succeeded = response.Succeeded; result.Data = response.Data; } } else { result.CannotLogin(); } } catch (Exception) { result.ErrorApi(); } return(result); }
/// <summary> /// Cập nhật hoặc thay thế 1 phiếu xuất hàng gửi đại lý /// </summary> /// <param name="authentication"></param> /// <param name="model"></param> /// <returns></returns> public MessageResult EconomicUpdate(Authentication authentication, EconomicInvoiceUpdateModel model) { MessageResult result = new MessageResult(); try { var token = GetToken(authentication); if (!string.IsNullOrEmpty(token)) { string apiLink = $"{authentication.DomainName}/api/invoice04-api/update/{model.ReferenceId}"; EconomicInvoiceUpdateRequest request = new EconomicInvoiceUpdateRequest(model); var rawResponse = AppUtil.CreateRequest(apiLink, request.ToJson(), token, MethodType.PUT); var response = rawResponse.ToObject <BaseResponse <EconomicInvoiceUpdateResponse> >(); if (response != null) { result.Code = response.Code; result.Succeeded = response.Succeeded; result.Data = response.Data; } } else { result.CannotLogin(); } } catch (Exception) { result.ErrorApi(); } return(result); }
/// <summary> /// Điều chỉnh định danh cho hóa đơn /// </summary> /// <param name="authentication"></param> /// <param name="model"></param> /// <returns></returns> public MessageResult AdjusementHeader(Authentication authentication, InvoiceAdjusementHeaderModel model) { MessageResult result = new MessageResult(); try { var token = GetToken(authentication); if (!string.IsNullOrEmpty(token)) { string apiLink = $"{authentication.DomainName}/api/invoices/adjusement-header"; InvoiceAdjusementHeaderRequest request = new InvoiceAdjusementHeaderRequest(model); var rawResponse = AppUtil.CreateRequest(apiLink, request.ToJson(), token, MethodType.PUT); var response = rawResponse.ToObject <BaseResponse <InvoiceAdjusementHeaderResponse> >(); if (response != null) { result.Code = response.Code; result.Succeeded = response.Succeeded; result.Data = response.Data; } } else { result.CannotLogin(); } } catch (Exception exception) { result.ErrorApi(); } return(result); }
/// <summary> /// Xóa hủy với hóa đơn chưa ký và xóa bỏ với hóa đơn đã ký /// </summary> /// <param name="authentication"></param> /// <param name="model"></param> /// <returns></returns> public MessageResult DeliveryDelete(Authentication authentication, InternalDeliveryDeleteModel model) { MessageResult result = new MessageResult(); try { var token = GetToken(authentication); if (!string.IsNullOrEmpty(token)) { string apiLink = $"{authentication.DomainName}/api/interval-delivery/delete/{model.Id}"; InternalDeliveryDeleteRequest request = new InternalDeliveryDeleteRequest(model); var rawResponse = AppUtil.CreateRequest(apiLink, request.ToJson(), token); var response = rawResponse.ToObject <BaseResponse <InternalDeliveryDeleteResponse> >(); if (response != null) { result.Code = response.Code; result.Succeeded = response.Succeeded; result.Data = response.Data; } } else { result.CannotLogin(); } } catch (Exception) { result.ErrorApi(); } return(result); }
/// <summary> /// Ký phiếu xuất kho trên hệ thống /// </summary> /// <param name="authentication"></param> /// <param name="model"></param> /// <returns></returns> public MessageResult EconomicSign(Authentication authentication, EconomicInvoiceSignModel model) { MessageResult result = new MessageResult(); try { var token = GetToken(authentication); if (!string.IsNullOrEmpty(token)) { string apiLink = $"{authentication.DomainName}/api/invoice04-api/sign/{model.Id}"; var rawResponse = AppUtil.CreateRequest(apiLink, string.Empty, token); var response = rawResponse.ToObject <BaseResponse <EconomicInvoiceSignResponse> >(); if (response != null) { result.Code = response.Code; result.Succeeded = response.Succeeded; result.Data = response.Data; } } else { result.CannotLogin(); } } catch (Exception exception) { result.ErrorApi(); } return(result); }
/// <summary> /// Tạo mới hóa đơn. /// </summary> /// <param name="authentication"></param> /// <param name="model"></param> /// <returns></returns> public MessageResult Create(Authentication authentication, InvoiceCreateModel model) { MessageResult result = new MessageResult(); try { var token = GetToken(authentication); if (!string.IsNullOrEmpty(token)) { string apiLink = $"{authentication.DomainName}/api/invoices/create-batch"; InvoiceCreateRequest request = new InvoiceCreateRequest(model); List <InvoiceDetail> invoiceDetails = new List <InvoiceDetail>(); if (model.Details != null) { invoiceDetails.AddRange(model.Details.Select(c => new InvoiceDetail(c))); } request.Details = invoiceDetails; List <InvoiceTaxBreakdown> taxBreakdowns = new List <InvoiceTaxBreakdown>(); if (model.InvoiceTaxBreakdowns != null) { taxBreakdowns.AddRange(model.InvoiceTaxBreakdowns.Select(c => new InvoiceTaxBreakdown(c))); } request.InvoiceTaxBreakdowns = taxBreakdowns; request.TotalAmount = request.Details.Sum(c => c.Amount); request.TotalVatAmount = request.Details.Sum(c => c.VatAmount); request.TotalDiscountAmountBeforeTax = request.Details.Sum(c => c.DiscountAmountBeforeTax); if (request.TotalDiscountAmountAfterTax == 0) { if (request.TotalDiscountPercentAfterTax > 0) { request.TotalDiscountAmountAfterTax = request.TotalAmount * request.TotalDiscountPercentAfterTax / 100; } } request.TotalPaymentAmount = request.TotalAmount + request.TotalVatAmount - request.TotalDiscountAmountAfterTax; var rawResponse = AppUtil.CreateRequest(apiLink, request.ToJson(), token); var response = rawResponse.ToObject <BaseResponse <InvoiceCreateResponse> >(); if (response != null) { result.Code = response.Code; result.Succeeded = response.Succeeded; result.Data = response.Data; } } else { result.CannotLogin(); } } catch (Exception) { result.ErrorApi(); } return(result); }