public HttpResponseMessage ExportProviders(HttpRequestMessage request, ProviderListViewCriteria criteria) { return(CreateHttpResponse(request, () => { HttpResponseMessage response = null; //var providerList = this.providerAppService.ExportData(criteria); var rejected = new List <ImportProviderDto>(); var results = this.dataService.ReadCsv <ImportProviderDto>(criteria.FileName); foreach (var provider in results) { var dto = Mapper.Map <ImportProviderDto, ProviderDto>(provider); dto.UserId = (int)this.CurrentUserId; var entityLegalCondition = this.legalConditionRepository.GetAll(). Where(x => x.Description == provider.LegalCondition). FirstOrDefault(); if (entityLegalCondition != null) { dto.LegalCondition = Mapper.Map <LegalCondition, LegalConditionDto>(entityLegalCondition); this.providerAppService.Save(dto); } else { rejected.Add(provider); } } string rejectedLocation = ""; if (rejected.Count() > 0) { rejectedLocation = dataService.SaveCsv <ImportProviderDto>(rejected.AsEnumerable(), "Proveedores_rechazados_" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); } response = request.CreateResponse(HttpStatusCode.Created, new { success = true, path = rejectedLocation }); return response; })); }
public HttpResponseMessage Search(HttpRequestMessage request, [FromUri] ProviderListViewCriteria criteria) { return(CreateHttpResponse(request, () => { HttpResponseMessage response = null; var items = this.providerAppService.Search(criteria); response = request.CreateResponse(HttpStatusCode.OK, items); return response; })); }
public SearchResultViewModel <ProviderDto> ExportData(ProviderListViewCriteria criteria, bool?SyncedWithERP, List <long> providersToInclude) { var providers = this.entityRepository.GetAllIncluding(x => x.LegalCondition); if (SyncedWithERP != null) { providers = providers.Where(x => x.SyncedWithERP.Equals(SyncedWithERP)); } if (providersToInclude.Count > 0) { providers = providers.Where(x => providersToInclude.Contains((long)x.Cuit)); } return(this.CreateResult <Provider, ProviderDto>(providers, criteria, "LegalName")); }
public HttpResponseMessage Post(HttpRequestMessage request, ExpenseListViewCriteria criteria) { return(CreateHttpResponse(request, () => { HttpResponseMessage response = null; // Force params // Approved SyncStatusId criteria.SyncStatusId = 3; // Not exported criteria.Exported = 2; // GetAll criteria.Size = -1; SearchResultViewModel <ExpenseDto> expenseList = this.expenseAppService.Search(criteria); SearchResultViewModel <ExportExpenseDto> exportExpenseList = Mapper.Map <SearchResultViewModel <ExpenseDto>, SearchResultViewModel <ExportExpenseDto> >(expenseList); string connectionStringsConfigPath = HttpContext.Current.Server.MapPath("~/ConnectionStrings.config"); XElement doc = XElement.Load($"{connectionStringsConfigPath}"); string reportsContextConnectionString = doc.Descendants("add") .Where(x => (string)x.Attribute("name") == "ReportsContext") .Select(x => (string)x.Attribute("connectionString")) .FirstOrDefault(); using (SqlConnection connection = new SqlConnection(reportsContextConnectionString ?? throw new InvalidOperationException("No se pudo establecer la conexión a la base de datos."))) { const string ProviderAccountNumberQuery = @"SELECT CONVERT(int,PVMPRH_NROCTA) from PVMPRH where @ProveedorId = PVMPRH_NRODOC"; List <long> providersNotExported = new List <long>(); List <KeyValuePair <long, int> > existingProviders = new List <KeyValuePair <long, int> >(); long expensesExported = 0; long expensesNotExported = 0; DateTime CurrentDate = DateTime.Today; foreach (ExportExpenseDto expense in exportExpenseList.Results) { Int32 providerAccountNumber = 0; if (existingProviders.All(x => x.Key != expense.Provider.Cuit)) { SqlCommand command = new SqlCommand(ProviderAccountNumberQuery, connection); command.Parameters.AddWithValue("@ProveedorId", expense.Provider.Cuit); connection.Open(); SqlDataReader reader = command.ExecuteReader(); try { if (reader.Read()) { providerAccountNumber = reader.GetInt32(0); if (providerAccountNumber != 0) { existingProviders.Insert(0, new KeyValuePair <long, int>(expense.Provider.Cuit, providerAccountNumber)); } } } catch (Exception e) { Console.WriteLine(e.Message); } finally { reader.Close(); command.Dispose(); connection.Close(); } } else { providerAccountNumber = existingProviders.Where(x => x.Key == expense.Provider.Cuit).Select(x => x.Value).FirstOrDefault(); } if (providerAccountNumber != 0) { bool SIN_IVA = expense.Aliquot.Description == "SIN IVA"; string userCompanyGroupForExpense = expense.User.UserCompanyGroups.Where(x => x.Company.Id == expense.CompanyId). Select(x => x.UserGroup.Code + x.Company.Id). FirstOrDefault(); var stringifiedproviderAccountNumber = providerAccountNumber.ToString(); ReceiptHeader header = new ReceiptHeader() { SAR_CORMVH_IDENTI = expense.Id.ToString(), SAR_CORMVH_CIRCOM = SIN_IVA ? CIRCOM.SIN_IVA : CIRCOM.IVA, SAR_CORMVH_CIRAPL = SIN_IVA ? CIRCOM.SIN_IVA : CIRCOM.IVA, SAR_CORMVH_CODEMP = "AL0" + expense.CompanyId, SAR_CORMVH_CODORI = expense.Receipt, SAR_CORMVH_CMPRAD = "N/A", SAR_CORMVH_STATUS = 'N', SAR_CORMVH_FCHMOV = CurrentDate, SAR_CORMVH_NROCTA = stringifiedproviderAccountNumber.PadLeft(6) }; receiptHeaderContext.Add(header); var hasNotTaxesConcepts = Math.Abs(double.Parse(expense.NotTaxedConcepts)) > 0; ReceiptItem itemDefault = new ReceiptItem() { SAR_CORMVI_IDENTI = expense.Id.ToString(), SAR_CORMVI_TIPORI = expense.Category.Code, SAR_CORMVI_CANTID = 1, SAR_CORMVI_ARTORI = expense.CompanyId + expense.Category.Code + userCompanyGroupForExpense + "G", SAR_CORMVI_NROITM = 1, SAR_CORMVI_PRECIO = SIN_IVA ? expense.Total : expense.NetValue, SAR_CORMVI_NROAPL = null, SAR_CORMVI_ITMAPL = null }; receiptItemContext.Add(itemDefault); CreateDistribution(expense.Id, itemDefault.SAR_CORMVI_NROITM, expense.CompanyId, expense.User.Id_Erp); D_Concepts Debe_concepts_default = new D_Concepts() { SAR_CORMVI08_IDENTI = expense.Id, SAR_CORMVI08_IMPORT = expense.Total }; debeConceptsRepository.Add(Debe_concepts_default); H_Concepts Haber_concepts_default = new H_Concepts() { SAR_CORMVI09_IDENTI = expense.Id, SAR_CORMVI09_CODCPT = expense.CompanyId + (expense.Payment.Description == "Efectivo" ? "E" : "T"), SAR_CORMVI09_IMPORT = expense.Total }; haberConceptsRepository.Add(Haber_concepts_default); if (hasNotTaxesConcepts) { ReceiptItem secondLine = itemDefault.Clone(); secondLine.SAR_CORMVI_NROITM = 2; secondLine.SAR_CORMVI_PRECIO = expense.NotTaxedConcepts; secondLine.SAR_CORMVI_ARTORI = secondLine.SAR_CORMVI_ARTORI.Remove(secondLine.SAR_CORMVI_ARTORI.Length - 1, 1) + "N"; receiptItemContext.Add(secondLine); CreateDistribution(expense.Id, secondLine.SAR_CORMVI_NROITM, expense.CompanyId, expense.User.Id_Erp); } string aliquotValue = expense.Aliquot.Value.ToString(CultureInfo.InvariantCulture); if (!SIN_IVA) { TaxesDetails taxDetails = new TaxesDetails() { SAR_CORMVI07_IDENTI = expense.Id.ToString(), SAR_CORMVI07_CODCPT = GetCODPT(aliquotValue), SAR_CORMVI07_INGRES = expense.NetValue, SAR_CORMVI07_IMPGRA = expense.NetValue, SAR_CORMVI07_PORCEN = aliquotValue, SAR_CORMVI07_NROITM = 1 }; taxesDetailsRepository.Add(taxDetails); } DistDimTesoH distDimTesoH = new DistDimTesoH() { SAR_CJRMVD10_IDENTI = expense.Id, SAR_CJRMVD10_CODDIS = $"AL0{expense.CompanyId.ToString()}|{expense.User.Id_Erp}" }; distDimTesoHRepository.Add(distDimTesoH); this.reportsUnitOfWork.Commit(); expensesExported++; } else { expensesNotExported++; if (!providersNotExported.Contains(expense.Provider.Cuit)) { providersNotExported.Add(expense.Provider.Cuit); } } } foreach (var expense in expenseList.Results) { if (!providersNotExported.Contains(expense.Provider.Cuit)) { expense.Exported = true; expense.ExportedDateTime = DateTime.Now; this.expenseRepository.Edit(Mapper.Map <ExpenseDto, Expense>(expense)); this.unitOfWork.Commit(); } } int notExportedProviders = providersNotExported.Count(); string providersPath = null; if (notExportedProviders > 0) { ProviderListViewCriteria providersCriteria = new ProviderListViewCriteria() { Size = -1, FileName = "Proveedores_inexistentes_exportacion_gastos" }; SearchResultViewModel <ProviderDto> providersList = this.providerAppService.ExportData(providersCriteria, null, providersNotExported); providersPath = this.SaveCsv <ProviderDto, ProviderListViewCriteria>(providersList, providersCriteria, providersCriteria.FileName + "_" + long.Parse(DateTime.Now.ToString("yyyyMMddHHmmss")), false, null); } response = request.CreateResponse(HttpStatusCode.Created, new { success = true, exported = expensesExported, not_exported = expensesNotExported, inexistent_providers = notExportedProviders, error_providers_path = providersPath }); } return response; }));
public object Search(ProviderListViewCriteria criteria) { var providers = this.entityRepository.GetAllIncluding(x => x.LegalCondition, x => x.User); if (!criteria.OverrideExportCheck) { if (criteria.Exported) { providers = providers.Where(x => x.SyncedWithERP.Equals(true)); } else { providers = providers.Where(x => x.SyncedWithERP.Equals(false)); } } else { providers = providers.Where(x => x.Cuit > 9); } if (criteria.StartDate != null) { providers = providers.Where(x => DbFunctions.DiffDays(criteria.StartDate, x.UpdatedDateTime) >= 0); } if (criteria.EndDate != null) { providers = providers.Where(x => DbFunctions.DiffDays(criteria.EndDate, x.UpdatedDateTime) <= 0); } if (criteria.UserId != 0) { providers = providers.Where(x => x.UserId == criteria.UserId); } if (criteria.RoleId != 0) { providers = providers.Where(x => x.User.RoleId == criteria.RoleId); } if (criteria.ExportStatus != 0) { if (criteria.ExportStatus == 1) { providers = providers.Where(x => x.SyncedWithERP.Equals(true)); } else { providers = providers.Where(x => x.SyncedWithERP.Equals(false)); } } if (!string.IsNullOrEmpty(criteria.PartialDescription)) { providers = this.MatchInFields <Provider>(providers, criteria.PartialDescription, true, c => new[] { c.LegalName.ToLower() }); } if (criteria.GetForBackOffice) { return(this.CreateResult <Provider, ProviderDto>(providers, criteria, "LegalName")); } return(this.CreateResult <Provider, SearchProviderDto>(providers, criteria, "LegalName")); }