@using Blazored.Modal @using Blazored.Modal.Services @using Blazored.Typeahead @using Domain.Entities @inject Services.Lookups.ISalesLookupService SalesLookupService Agregar Impuesto Tipo de Impuesto * @item.Description (@item.Taxrate.ToString("0.#")%) @item.Description Base Imponible * Alícuota (%) * Importe del impuesto ¿Incluido en precio? @code { [CascadingParameter] public BlazoredModalInstance ModalInstance { get; set; } = default!; [Parameter] public decimal NetAmount { get; set; } private ETaxType? _selectedTaxType; private EQuoteTax _model = new(); private List _taxTypes = new(); protected override async Task OnInitializedAsync() { _taxTypes = (await SalesLookupService.GetTaxTypesAsync()).ToList(); _model.TaxableAmount = NetAmount; Recalculate(); } private Task> SearchTaxTypes(string searchTerm) { var result = string.IsNullOrWhiteSpace(searchTerm) ? _taxTypes : _taxTypes.Where(t => t.Description.Contains(searchTerm, StringComparison.OrdinalIgnoreCase)); return Task.FromResult(result); } private Task OnTaxTypeSelected(ETaxType selected) { _model.Taxname = selected.Description; _model.Taxcode = selected.TaxCode.ToString(); _model.Taxrate = selected.Taxrate; Recalculate(); return Task.CompletedTask; } private void OnValueChanged(decimal value, Action setter) { setter(_model, value); Recalculate(); } private void Recalculate() { _model.Taxamount = Math.Round(_model.TaxableAmount * (_model.Taxrate / 100), 2); } private async Task HandleValidSubmit() { if (string.IsNullOrWhiteSpace(_model.Taxname)) { return; } await ModalInstance.CloseAsync(ModalResult.Ok(_model)); } private async Task Cancelar() { await ModalInstance.CancelAsync(); } }