public PedidosModel ImportarPresupuesto(PresupuestosModel presupuesto) { //calcular serie asociada if (presupuesto.Lineas.Any(f => (f.Cantidad ?? 0) - (f.Cantidadpedida ?? 0) > 0)) { var prospectoService = FService.Instance.GetService(typeof(ProspectosModel), _context); if (prospectoService.exists(presupuesto.Fkclientes)) { throw new Exception(RProspectos.ErrorCrearPedidoProspecto); } var result = Helper.fModel.GetModel <PedidosModel>(_context); result.Importado = true; ImportarCabecera(presupuesto, result); var maxId = result.Lineas.Any() ? result.Lineas.Max(f => f.Id) : 0; result.Lineas.AddRange(ImportarLineas(maxId, ConvertLineasModelToILineas(presupuesto.Id.Value.ToString(), presupuesto.Referencia, presupuesto.Lineas))); EstablecerSerie(presupuesto.Fkseries, result); //recalculo importes lineas y totales RecalculaLineas(result.Lineas, result.Porcentajedescuentoprontopago ?? 0, result.Porcentajedescuentocomercial ?? 0, result.Fkregimeniva, result.Importeportes ?? 0, result.Decimalesmonedas); result.Totales = Recalculartotales(result.Lineas, result.Porcentajedescuentoprontopago ?? 0, result.Porcentajedescuentocomercial ?? 0, result.Importeportes ?? 0, result.Decimalesmonedas).ToList(); return(result); } throw new ValidationException(RPresupuestos.ErrorSinCantidadPendiente); }
private void ImportarCabecera(PresupuestosModel presupuesto, PedidosModel result) { var properties = typeof(PedidosModel).GetProperties(); foreach (var item in properties) { if (item.Name != "Lineas" && item.Name != "Totales") { var property = typeof(PresupuestosModel).GetProperty(item.Name); if (property != null && property.CanWrite) { var value = property.GetValue(presupuesto); item.SetValue(result, value); } } } result.Fechadocumento = DateTime.Now; var appService = new ApplicationHelper(_context); result.Fkestados = appService.GetConfiguracion().Estadopedidosventasinicial; }