private void Step() { if (!_modified) { _recargos.Clear(); ArrayList formasDePago = new ArrayList(); string IdComprobante = string.Empty; ArrayList arrayValores = new ArrayList(); foreach (RelacionComprobanteOrigenDestino relacion in this._relacionesComprobanteOrigenDestino) { if (!IdComprobante.Equals(relacion.IdComprobante)) { IdComprobante = relacion.IdComprobante; string IdCondicionDeVenta = relacion.IdCondicionDeVenta; ComprobanteDePago precomprobanteDePago = Factory.GetComprobanteDePago(IdComprobante, IdCondicionDeVenta); Valores valores = precomprobanteDePago.Valores; foreach (Valor valor in valores.MisValores) { bool ok = true; int index = 0; while (ok) { if (index < _formasDePagos.Count) { FormaDePago formaDePago = (FormaDePago)_formasDePagos[index]; if (valor.IdFormaDePago != null && !valor.IdFormaDePago.Equals(string.Empty) && valor.IdFormaDePago.Equals(formaDePago.IdFormaDePago)) { formasDePago.Add(formaDePago.ShallowClone()); valor.IsStep = true; arrayValores.Add(valor); ok = false; } else { /* * decimal _porcentajeRecargo = 0; * if(valor.MontoCotizado > 0) * _porcentajeRecargo = Math.Abs(decimal.Round((decimal.Round(valor.MontoCotizado,4) - decimal.Round(valor.MontoSinRecargos,4))*100/decimal.Round(valor.MontoSinRecargos,4),2)); */ bool _isValid = formaDePago.IdTDComprobante.Equals(valor.IdTDCompTesoreria) && /*formaDePago.Recargo.Equals(_porcentajeRecargo) &&*/ formaDePago.GetIdMoneda().Equals(valor.IdMoneda); if (_isValid) { formasDePago.Add(formaDePago.ShallowClone()); arrayValores.Add(valor); valor.IsStep = true; ok = false; } } index++; } else { ok = false; } } } } } int i = 0; foreach (FormaDePago formaDePago in formasDePago) { Valor valor = (Valor)arrayValores[i]; _recargos.AddRecargo(valor, formaDePago, this._totalConImpuestosSinRecargosComprobanteDeVenta, this._totalComprobantedDeVenta); i++; } /* * if(_recargos.Count > 0) * { * if(ObjectHasChanged != null) * ObjectHasChanged(this, new EventArgs()); * } */ } if (_recargos.Count == 0) { AddFormaDePagoDefault(); } }
private bool MustResetRecargos() { foreach (RecargoFormaDePago recargo in _recargos) { bool ok = true; int index = 0; while (ok && index < _formasDePagos.Count) { FormaDePago formaDePagoRecargo = recargo.FormaDePago; FormaDePago formaDePago = (FormaDePago)_formasDePagos[index]; if (formaDePagoRecargo.IdFormaDePago != null && !formaDePagoRecargo.IdFormaDePago.Equals(string.Empty) && formaDePagoRecargo.IdFormaDePago.Equals(formaDePago.IdFormaDePago)) { ok = false; } else { bool _isValid = formaDePago.IdTDComprobante.Equals(formaDePagoRecargo.IdTDComprobante) && formaDePago.Recargo.Equals(formaDePagoRecargo.Recargo) && formaDePago.GetIdMoneda().Equals(formaDePagoRecargo.IdMoneda); if (_isValid) { ok = false; } } index++; } if (ok) { return(true); } } return(false); }