예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
        /// <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);
        }
예제 #6
0
        /// <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);
        }
예제 #7
0
        /// <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);
        }
예제 #8
0
        /// <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);
        }