internal TraspasoResult TraspasoExistencias(TraspasoParameters TParameters) { TraspasoResult result = new TraspasoResult(); List <string> series = new List <string>(); const string codigoConcepto = "34"; const string serie = ""; double existance = 0; double folio = 0; int documentoId = 0; int movimientoId = 0; int consecutivo = 1; string currentWarehouse = string.Empty; string currentProduct = string.Empty; try { Stopwatch sw = new Stopwatch(); sw.Start(); Login(TParameters.Source); List <Product> ProductsWithExistance = TParameters.Products.Where(x => x.ExistanceControl != 4).ToList(); List <Product> ProductsWithSeries = TParameters.Products.Where(x => x.ExistanceControl == 4).ToList(); foreach (Warehouse w in TParameters.Warehouses) { foreach (Product p in ProductsWithExistance) { p.GetExistence(w); } } LogOut(); sw.Stop(); result.TimeToRead = sw.Elapsed; sw.Restart(); Login(TParameters.DestinationDb); foreach (Warehouse w in TParameters.Warehouses) { _Error = Documentos.fSiguienteFolio(codigoConcepto, "", ref folio); currentWarehouse = w.Name; if (_Error == 0) { tDocumento documento = new tDocumento() { aCodConcepto = codigoConcepto, aFolio = folio, aSerie = serie, aFecha = DateTime.Today.ToString("MM/dd/yyyy") }; _Error = Documentos.fAltaDocumento(ref documentoId, ref documento); foreach (Product p in ProductsWithExistance) { currentProduct = p.Name; if (_Error == 0) { existance = p.GetExistence(w); if (existance > 0) { tMovimiento movto = new tMovimiento(); movto.aCodAlmacen = w.Code; movto.aCodProdSer = p.Code; movto.aConsecutivo = consecutivo; movto.aUnidades = existance; _Error = Movimientos.fAltaMovimiento(documentoId, ref movimientoId, ref movto); } consecutivo++; } if (_Error != 0) { result.Errors.Add(string.Format("Almacen: {0}, Producto: {1}, Detalles: {2}", currentWarehouse, currentProduct, GetCurrentError())); } } } } consecutivo = 0; foreach (Warehouse w in TParameters.Warehouses) { _Error = Documentos.fSiguienteFolio(codigoConcepto, "", ref folio); currentWarehouse = w.Name; if (_Error == 0) { tDocumento documento = new tDocumento() { aCodConcepto = codigoConcepto, aFolio = folio, aSerie = serie, aFecha = DateTime.Today.ToString("MM/dd/yyyy") }; _Error = Documentos.fAltaDocumento(ref documentoId, ref documento); foreach (Product p in ProductsWithSeries) { if (_Error == 0) { currentProduct = p.Name; series = p.GetSeries(w, TParameters.Source).Select(x => x.SeriesNumber).ToList(); if (series.Count > 0) { tMovimiento movto = new tMovimiento(); movto.aCodAlmacen = w.Code; movto.aCodProdSer = p.Code; movto.aConsecutivo = consecutivo; _Error = Movimientos.fAltaMovimiento(documentoId, ref movimientoId, ref movto); foreach (string s in series) { if (_Error == 0) { tSeriesCapas movtoSerie = new tSeriesCapas() { aSeries = s }; _Error = Movimientos.fAltaMovimientoSeriesCapas(movimientoId, ref movtoSerie); if (_Error != 0) { result.Errors.Add(string.Format("Almacen: {0}, Producto: {1}, Serie: {2}, Detalles: {3}", currentWarehouse, currentProduct, s, GetCurrentError())); } } } consecutivo++; } } } } } if (result.Errors.Count <= 0) { result.Errors.Add("No hubo errores durante este traspaso"); } sw.Stop(); result.TimeToImport = sw.Elapsed; LogOut(); return(result); } catch (AccessViolationException ave) { throw new TraspasoExistenciasException("Ocurrio un error al realizar el traspaso de información, revise los permisos en las carpetas de CONTPAQ I Comercial", ave); } }