/// <summary> /// Obtiene la lista para mostrar en el grid /// </summary> private void ObtenerListaCuenta(int inicio, int limite) { try { var cuentaSAPPL = new CuentaSAPPL(); CuentaSAPInfo filtros = ObtenerFiltros(); var pagina = new PaginacionInfo { Inicio = inicio, Limite = limite }; ResultadoInfo <CuentaSAPInfo> resultadoInfo = cuentaSAPPL.ObtenerPorPaginaCuentasSap(pagina, filtros); if (resultadoInfo != null && resultadoInfo.Lista != null && resultadoInfo.Lista.Count > 0) { gridDatos.ItemsSource = resultadoInfo.Lista; ucPaginacion.TotalRegistros = resultadoInfo.TotalRegistros; } else { ucPaginacion.TotalRegistros = 0; ucPaginacion.AsignarValoresIniciales(); gridDatos.ItemsSource = new List <Cuenta>(); } } catch (ExcepcionGenerica ex) { Logger.Error(ex); SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.CuentaSAP_ErrorBuscar, MessageBoxButton.OK, MessageImage.Error); } catch (Exception ex) { Logger.Error(ex); SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.CuentaSAP_ErrorBuscar, MessageBoxButton.OK, MessageImage.Error); } }
/// <summary> /// Método que obtiene una lista de todos los registros /// </summary> /// <param name="ds"></param> /// <returns></returns> internal static CuentaSAPInfo ObtenerPorFiltro(DataSet ds) { try { Logger.Info(); DataTable dt = ds.Tables[ConstantesDAL.DtDatos]; CuentaSAPInfo result = (from info in dt.AsEnumerable() select new CuentaSAPInfo { CuentaSAPID = info.Field <int>("CuentaSAPId"), CuentaSAP = info.Field <string>("CuentaSAP"), Descripcion = info.Field <string>("Descripcion"), TipoCuenta = new TipoCuentaInfo { TipoCuentaID = info.Field <int>("TipoCuentaID"), Descripcion = info.Field <string>("TipoCuenta") }, Activo = info.Field <bool>("Activo").BoolAEnum(), }).First(); return(result); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Guarda los costos de los movimientos /// </summary> /// <param name="distribucionDeIngredientes"></param> /// <param name="almacenMovimientoID"></param> /// <param name="distribucionorganizaciones"></param> /// <returns></returns> internal bool GuardarCosto(DistribucionDeIngredientesInfo distribucionDeIngredientes, long almacenMovimientoID, DistribucionDeIngredientesOrganizacionInfo distribucionorganizaciones) { bool regreso = true; try { var cuentaSAPBL = new CuentaSAPBL(); IList <CuentaSAPInfo> cuentasSAP = cuentaSAPBL.ObtenerTodos(EstatusEnum.Activo); var almacenMovimientoCostoBl = new AlmacenMovimientoCostoBL(); if (almacenMovimientoID > 0) { //Se obtiene el porcentaje a cobrar cargar por organizacion decimal porcentajeSurtido = distribucionDeIngredientes.CantidadTotal > 0 ? (decimal)distribucionorganizaciones.CantidadSurtir / (decimal)distribucionDeIngredientes.CantidadTotal : 0; foreach (var costoDistribucion in distribucionDeIngredientes.ListaPremezclaDistribucionCosto) { var almacenMovimientoCosto = new AlmacenMovimientoCostoInfo { AlmacenMovimientoId = almacenMovimientoID, Iva = costoDistribucion.Iva, Retencion = costoDistribucion.Retencion, CostoId = costoDistribucion.Costo.CostoID, Importe = costoDistribucion.Importe * porcentajeSurtido, UsuarioCreacionId = costoDistribucion.UsuarioCreacionID }; if (costoDistribucion.TieneCuenta) { CuentaSAPInfo cuenta = cuentasSAP.FirstOrDefault( sap => sap.CuentaSAP.Trim().Equals(costoDistribucion.CuentaSAP.CuentaSAP.Trim())); if (cuenta != null) { almacenMovimientoCosto.CuentaSAPID = cuenta.CuentaSAPID; almacenMovimientoCosto.TieneCuenta = costoDistribucion.TieneCuenta; } } else { almacenMovimientoCosto.ProveedorId = costoDistribucion.Proveedor.ProveedorID; } almacenMovimientoCostoBl.Crear(almacenMovimientoCosto); } } } catch (ExcepcionGenerica) { regreso = false; throw; } catch (Exception ex) { regreso = false; Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(regreso); }
public CuentaSAPEdicion(CuentaSAPInfo cuentaSAPInfo) { InitializeComponent(); CargaComboTipoCuenta(); cuentaSAPInfo.UsuarioModificacionID = AuxConfiguracion.ObtenerUsuarioLogueado(); Contexto = cuentaSAPInfo; }
/// <summary> /// Obtiene Parametros por filtro /// </summary> /// <param name="filtro"> </param> /// <returns></returns> internal static Dictionary <string, object> ObtenerParametrosPorFiltro(CuentaSAPInfo filtro) { try { Logger.Info(); var parametros = new Dictionary <string, object> { { "@CuentaSAPID", filtro.CuentaSAPID }, { "@CuentaSAP", filtro.CuentaSAP }, { "@Descripcion", filtro.Descripcion }, { "@Activo", filtro.Activo }, }; var element = new XElement("ROOT", from tipoCuenta in filtro.ListaTiposCuenta select new XElement("Datos", new XElement("tipoCuenta", tipoCuenta.TipoCuentaID))); parametros.Add("@xmlTipoCuenta", element.ToString()); return(parametros); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene por filtro sin tipo /// </summary> /// <param name="cuentaSAP"></param> /// <returns></returns> internal CuentaSAPInfo ObtenerPorFiltroSinTipo(CuentaSAPInfo cuentaSAP) { try { Logger.Info(); Dictionary <string, object> parameters = AuxCuentaSAPDAL.ObtenerParametrosPorFiltroSinTipo(cuentaSAP); DataSet ds = Retrieve("CuentaSAP_ObtenerPorFiltroSinTipo", parameters); CuentaSAPInfo result = null; if (ValidateDataSet(ds)) { result = MapCuentaSAPDAL.ObtenerPorFiltro(ds); } return(result); } catch (SqlException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (DataException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Metodo para Guardar/Modificar una entidad CuentaSAP /// </summary> /// <param name="info"></param> /// <returns></returns> public int Guardar(CuentaSAPInfo info) { try { Logger.Info(); var id = 0; if (info.CuentaSAPID > 0) { id = da.Actualizar <CuentaSAPInfo>(info); } else { id = da.Insertar <CuentaSAPInfo>(info); } return(id); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Metodo para Guardar/Modificar una entidad CuentaSAP /// </summary> /// <param name="info"></param> internal void Guardar(CuentaSAPInfo info) { try { Logger.Info(); var cuentaSAPDAL = new CuentaSAPDAL(); if (info.CuentaSAPID == 0) { cuentaSAPDAL.Crear(info); } else { cuentaSAPDAL.Actualizar(info); } } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Inicializa el Contexto /// </summary> private void InicializaContexto() { Contexto = new CuentaSAPInfo { UsuarioCreacionID = AuxConfiguracion.ObtenerUsuarioLogueado(), TipoCuenta = new TipoCuentaInfo() }; }
/// <summary> /// Constructor /// </summary> /// <param name="info"></param> /// <param name="cuentaSAP"></param> public ClaseCostoProductoInfo(ClaseCostoProductoInfo info, CuentaSAPInfo cuentaSAP) { ClaseCostoProductoID = info.ClaseCostoProductoID; AlmacenID = info.AlmacenID; ProductoID = info.ProductoID; CuentaSAPID = info.CuentaSAPID; Activo = info.Activo; FechaCreacion = info.FechaCreacion; UsuarioCreacionID = info.UsuarioCreacionID; FechaModificacion = info.FechaModificacion; UsuarioModificacionID = info.UsuarioModificacionID; CuentaSAP = cuentaSAP; }
internal CuentaSAPInfo ObtenerCuentaSAP(CuentaSAPInfo cuentaSAPInfo) { var cuentaSAP = new CuentaSAPInfo(); try { Logger.Info(); // Nombre de la Función RFC IRfcFunction func = destino.Repository.CreateFunction("Z_FI_CUENTA_SIAP"); //parametros de entrada (Import) func.SetValue("COD_CUENTA", cuentaSAPInfo.CuentaSAP); func.SetValue("SOCIEDAD", cuentaSAPInfo.Sociedad); func.SetValue("PLAN_CUENTA", cuentaSAPInfo.PlanCuenta); //resultado (Changin) var tablaResultado = func.GetTable("ITAB"); //Ejecutar func.Invoke(destino); var listaCuentas = new List <CuentaSAPInfo>(); foreach (IRfcStructure row in tablaResultado) { var cuenta = new CuentaSAPInfo(); cuenta.Sociedad = row.GetValue("BUKRS") as string ?? string.Empty; cuenta.CuentaSAP = row.GetValue("SAKNR") as string ?? string.Empty; cuenta.Descripcion = row.GetValue("TXT50") as string ?? string.Empty; string bloqueo = row.GetValue("XSPEB") as string ?? string.Empty; cuenta.Bloqueada = bloqueo.Trim().ToUpper().Equals("X"); cuenta.TipoCuenta = new TipoCuentaInfo(); cuenta.UsuarioCreacionID = cuentaSAPInfo.UsuarioCreacionID; listaCuentas.Add(cuenta); } cuentaSAP = listaCuentas.FirstOrDefault(); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); } return(cuentaSAP); }
/// <summary> /// Evento que se ejecuta mientras se esta cerrando la ventana /// </summary> /// <param name="e"></param> protected override void OnClosing(CancelEventArgs e) { if (confirmaSalir) { MessageBoxResult result = SkMessageBox.Show(this, Properties.Resources.Msg_CerrarSinGuardar, MessageBoxButton.YesNo, MessageImage.Question); if (result == MessageBoxResult.Yes) { Contexto = null; } else { e.Cancel = true; } } }
/// <summary> /// Obtiene una entidad de CuentaSAP por su cuenta contable /// </summary> /// <param name="cuentaSAP">Obtiene una entidad CuentaSAP por su cuenta contable</param> /// <returns></returns> public CuentaSAPInfo ObtenerPorCuentaSAP(CuentaSAPInfo cuentaSAP) { try { Logger.Info(); return(ObtenerTodos().FirstOrDefault(e => e.CuentaSAP == cuentaSAP.CuentaSAP)); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Metodo para Guardar/Modificar una entidad CuentaSAP /// </summary> /// <param name="info">Representa la entidad que se va a grabar</param> public void Guardar(CuentaSAPInfo info) { try { Logger.Info(); var cuentaSAPBL = new CuentaSAPBL(); cuentaSAPBL.Guardar(info); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene una lista paginada de CuentaSAP /// </summary> /// <param name="pagina"></param> /// <param name="filtro"></param> /// <returns></returns> public ResultadoInfo <CuentaSAPInfo> ObtenerPorPagina(PaginacionInfo pagina, CuentaSAPInfo filtro) { try { Logger.Info(); var result = new ResultadoInfo <CuentaSAPInfo>(); var condicion = da.Tabla <CuentaSAPInfo>().Where(e => e.Activo == filtro.Activo); if (filtro.CuentaSAPID > 0) { condicion = condicion.Where(e => e.CuentaSAPID == filtro.CuentaSAPID); } if (!string.IsNullOrEmpty(filtro.Descripcion)) { condicion = condicion.Where(e => e.Descripcion.Contains(filtro.Descripcion)); } result.TotalRegistros = condicion.Count(); int inicio = pagina.Inicio; int limite = pagina.Limite; if (inicio > 1) { int limiteReal = (limite - inicio) + 1; inicio = (limite / limiteReal); limite = limiteReal; } var paginado = condicion .OrderBy(e => e.Descripcion) .Skip((inicio - 1) * limite) .Take(limite); result.Lista = paginado.ToList(); return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Metodo para buscar la Cuenta en SAP /// </summary> private void Buscar() { try { if (!string.IsNullOrWhiteSpace(Contexto.Sociedad) && !string.IsNullOrWhiteSpace(Contexto.CuentaSAP)) { var cuentaSAPPL = new CuentaSAPPL(); Contexto.CuentaSAP = Contexto.CuentaSAP.PadLeft(10, '0'); CuentaSAPInfo cuentaSAPExiste = cuentaSAPPL.ObtenerPorCuentaSAP(Contexto); if (cuentaSAPExiste != null && cuentaSAPExiste.CuentaSAPID > 0) { SkMessageBox.Show(this, Properties.Resources.CuentaSAPNuevo_CuentaExiste, MessageBoxButton.OK, MessageImage.Warning); return; } Contexto.PlanCuenta = PlanCuenta; Contexto = cuentaSAPPL.ObtenerCuentaSAPInterfaz(Contexto); if (Contexto == null) { SkMessageBox.Show(this, Properties.Resources.CuentaSAPNuevo_CuentaNoExiste, MessageBoxButton.OK, MessageImage.Warning); InicializaContexto(); return; } if (Contexto.Bloqueada) { SkMessageBox.Show(this, Properties.Resources.CuentaSAPNuevo_CuentaBloqueada, MessageBoxButton.OK, MessageImage.Warning); return; } btnGuardar.IsEnabled = true; } } catch (Exception ex) { Logger.Error(ex); SkMessageBox.Show(this, Properties.Resources.CuentaSAPNuevo_ErrorBuscar, MessageBoxButton.OK, MessageImage.Error); } }
/// <summary> /// Obtiene una cuenta sap por filtro sin tipo de cuenta /// </summary> /// <param name="cuentaSAP"></param> /// <returns></returns> internal CuentaSAPInfo ObtenerPorFiltroSinTipo(CuentaSAPInfo cuentaSAP) { try { Logger.Info(); var cuentaSAPDAL = new CuentaSAPDAL(); CuentaSAPInfo result = cuentaSAPDAL.ObtenerPorFiltroSinTipo(cuentaSAP); return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene un lista paginada /// </summary> /// <param name="pagina"></param> /// <param name="filtro"></param> /// <returns></returns> public ResultadoInfo <CuentaSAPInfo> ObtenerPorPagina(PaginacionInfo pagina, CuentaSAPInfo filtro) { try { Logger.Info(); var cuentaSAPBL = new CuentaSAPBL(); ResultadoInfo <CuentaSAPInfo> result = cuentaSAPBL.ObtenerPorPagina(pagina, filtro); return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene una cuenta mediante la interfaz con SAP /// </summary> /// <param name="cuentaSAP"></param> /// <returns></returns> public CuentaSAPInfo ObtenerCuentaSAPInterfaz(CuentaSAPInfo cuentaSAP) { try { Logger.Info(); var cuentaSAPBL = new CuentaSAPBL(); CuentaSAPInfo result = cuentaSAPBL.ObtenerCuentaSAPInterfaz(cuentaSAP); return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene parametros para crear /// </summary> /// <param name="info">Valores de la entidad</param> /// <returns></returns> internal static Dictionary <string, object> ObtenerParametrosCrear(CuentaSAPInfo info) { try { Logger.Info(); var parametros = new Dictionary <string, object> { { "@CuentaSAP", info.CuentaSAP }, { "@Descripcion", info.Descripcion }, { "@TipoCuentaID", info.TipoCuenta.TipoCuentaID }, { "@Activo", info.Activo }, { "@UsuarioCreacionID", info.UsuarioCreacionID }, }; return(parametros); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Metodo para Actualizar un nuevo registro de CuentaSAP /// </summary> /// <param name="info">Valores de la entidad que se actualizarán</param> internal void Actualizar(CuentaSAPInfo info) { try { Logger.Info(); Dictionary <string, object> parameters = AuxCuentaSAPDAL.ObtenerParametrosActualizar(info); Update("CuentaSAP_Actualizar", parameters); } catch (SqlException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (DataException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
private IList <PolizaInfo> ObtenerPoliza(TraspasoMpPaMedInfo traspasoMp) { var polizasSalidaTraspaso = new List <PolizaInfo>(); IList <ClaseCostoProductoInfo> cuentasAlmacenProductoSalida = ObtenerCostosProducto(traspasoMp.AlmacenOrigen.AlmacenID); IList <ClaseCostoProductoInfo> cuentasAlmacenProductoEntrada = ObtenerCostosProducto(traspasoMp.AlmacenDestino.AlmacenID); if (cuentasAlmacenProductoSalida == null) { throw new ExcepcionServicio("No se encuentran cuentas configuradas, para productos del almacén origen"); } if (cuentasAlmacenProductoEntrada == null) { throw new ExcepcionServicio("No se encuentran cuentas configuradas, para productos del almacén de destino"); } TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.EntradaTraspaso.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.EntradaTraspaso)); } IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP(); string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; var linea = 1; //TO DO REVISAR SI CAMBIARA EL REF 3 var ref3 = new StringBuilder(); ref3.Append("03"); ref3.Append( string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft( 10, ' ')); ref3.Append(new Random(10).Next(10, 20)); ref3.Append(new Random(30).Next(30, 40)); ref3.Append(DateTime.Now.Millisecond); ref3.Append(postFijoRef3); var almacenMovimientoBL = new AlmacenMovimientoBL(); AlmacenMovimientoInfo almacenMovimiento = almacenMovimientoBL.ObtenerPorId(traspasoMp.AlmacenMovimientoID); string numeroReferencia = ObtenerNumeroReferenciaFolio(almacenMovimiento.FolioMovimiento); //string numeroReferencia = ObtenerNumeroReferencia; DateTime fecha = traspasoMp.FechaTraspaso; string archivoFolio = ObtenerArchivoFolio(fecha); var organizacionBL = new OrganizacionBL(); OrganizacionInfo organizacionOrigen = organizacionBL.ObtenerPorAlmacenID(traspasoMp.AlmacenOrigen.AlmacenID); if (organizacionOrigen == null) { organizacionOrigen = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo() }; } OrganizacionInfo organizacionDestino = organizacionBL.ObtenerPorAlmacenID(traspasoMp.AlmacenDestino.AlmacenID); if (organizacionDestino == null) { organizacionDestino = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo() }; } IList <CuentaAlmacenSubFamiliaInfo> cuentasSubFamiliaSalida = ObtenerCostosSubFamilia(traspasoMp.AlmacenOrigen.AlmacenID); IList <CuentaAlmacenSubFamiliaInfo> cuentasSubFamiliaEntrada = ObtenerCostosSubFamilia(traspasoMp.AlmacenDestino.AlmacenID); ParametroOrganizacionInfo parametroCentroCostoOrigen = ObtenerParametroOrganizacionPorClave(organizacionOrigen.OrganizacionID, ParametrosEnum.CTACENTROCOSTOMP.ToString()); if (parametroCentroCostoOrigen == null) { throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO")); } ParametroOrganizacionInfo parametroCentroCostoDestino = ObtenerParametroOrganizacionPorClave(organizacionDestino.OrganizacionID, ParametrosEnum.CTACENTROCOSTOMP.ToString()); if (parametroCentroCostoDestino == null) { throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO")); } bool afectaCosto; CuentaSAPInfo claveContableCargo; afectaCosto = ValidarAfectacionCuentaCosto(traspasoMp.ProductoOrigen); if (!afectaCosto && (traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.Enfermeria.GetHashCode() || traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ManejoGanado.GetHashCode() || traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ReimplanteGanado.GetHashCode()) || traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.GeneralGanadera.GetHashCode()) { var cuentaSapSubFamiliaEntrada = cuentasSubFamiliaEntrada.FirstOrDefault( cuenta => cuenta.SubFamiliaID == traspasoMp.ProductoOrigen.SubFamilia.SubFamiliaID); if (cuentaSapSubFamiliaEntrada == null) { cuentaSapSubFamiliaEntrada = new CuentaAlmacenSubFamiliaInfo(); } claveContableCargo = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapSubFamiliaEntrada.CuentaSAPID); } else { var cuentaSapEntrada = cuentasAlmacenProductoEntrada.FirstOrDefault( cuenta => cuenta.ProductoID == traspasoMp.ProductoOrigen.ProductoId); if (cuentaSapEntrada == null) { cuentaSapEntrada = new ClaseCostoProductoInfo(); } claveContableCargo = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapEntrada.CuentaSAPID); } if (traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.CentroAcopio.GetHashCode()) { ParametroOrganizacionInfo cuentaMedicamento = ObtenerParametroOrganizacionPorClave(organizacionDestino.OrganizacionID, ParametrosEnum.CuentaMedicamentoTransito.ToString()); if (cuentaMedicamento == null) { cuentaMedicamento = new ParametroOrganizacionInfo { Valor = string.Empty }; } claveContableCargo = cuentasSap.FirstOrDefault( sap => sap.CuentaSAP.Equals(cuentaMedicamento.Valor, StringComparison.InvariantCultureIgnoreCase)); } if (claveContableCargo == null) { throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta del producto {0}", traspasoMp.ProductoOrigen.ProductoDescripcion)); } linea = 0; linea++; var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = fecha, Folio = numeroReferencia, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", traspasoMp.ImporteTraspaso.ToString("F2")), Renglon = Convert.ToString(linea), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableCargo.CuentaSAP, CentroCosto = claveContableCargo.CuentaSAP.StartsWith(PrefijoCuentaCentroCosto) ? parametroCentroCostoDestino.Valor : string.Empty, Division = organizacionDestino.Division, ArchivoFolio = archivoFolio, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, numeroReferencia, traspasoMp.ProductoOrigen.ProductoDescripcion, string.Format("{0} {1}.", traspasoMp.CantidadTraspasarDestino.ToString("N2"), traspasoMp.ProductoOrigen.UnidadMedicion.ClaveUnidad), traspasoMp.PrecioTraspasoDestino.ToString("C2")), Sociedad = organizacionDestino.Sociedad, DescripcionProducto = claveContableCargo.Descripcion, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacionDestino.Sociedad), }; PolizaInfo polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaTraspaso.Add(polizaSalida); #region CuentaAbono CuentaSAPInfo claveContableAbono = null; afectaCosto = ValidarAfectacionCuentaCosto(traspasoMp.ProductoOrigen); if (!afectaCosto && (traspasoMp.AlmacenOrigen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.Enfermeria.GetHashCode() || traspasoMp.AlmacenOrigen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ManejoGanado.GetHashCode() || traspasoMp.AlmacenOrigen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ReimplanteGanado.GetHashCode()) || traspasoMp.AlmacenDestino.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.GeneralGanadera.GetHashCode()) { var cuentaSapSubFamiliaSalida = cuentasSubFamiliaSalida.FirstOrDefault( cuenta => cuenta.SubFamiliaID == traspasoMp.ProductoOrigen.SubFamilia.SubFamiliaID); if (cuentaSapSubFamiliaSalida == null) { cuentaSapSubFamiliaSalida = new CuentaAlmacenSubFamiliaInfo(); } claveContableAbono = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapSubFamiliaSalida.CuentaSAPID); } else { var cuentaSapSalida = cuentasAlmacenProductoSalida.FirstOrDefault( cuenta => cuenta.ProductoID == traspasoMp.ProductoOrigen.ProductoId); if (cuentaSapSalida == null) { cuentaSapSalida = new ClaseCostoProductoInfo(); } claveContableAbono = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapSalida.CuentaSAPID); } if (traspasoMp.AlmacenOrigen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.CentroAcopio.GetHashCode()) { ParametroOrganizacionInfo cuentaMedicamento = ObtenerParametroOrganizacionPorClave(organizacionOrigen.OrganizacionID, ParametrosEnum.CuentaMedicamentoTransito.ToString()); if (cuentaMedicamento == null) { cuentaMedicamento = new ParametroOrganizacionInfo { Valor = string.Empty }; } claveContableAbono = cuentasSap.FirstOrDefault( sap => sap.CuentaSAP.Equals(cuentaMedicamento.Valor, StringComparison.InvariantCultureIgnoreCase)); } if (claveContableAbono == null) { throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta del producto {0}", traspasoMp.ProductoOrigen.ProductoDescripcion)); } #endregion CuentaAbono linea++; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = fecha, Folio = numeroReferencia, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", (traspasoMp.ImporteTraspaso * -1).ToString("F2")), Renglon = Convert.ToString(linea), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableAbono.CuentaSAP, ArchivoFolio = archivoFolio, CentroCosto = claveContableAbono.CuentaSAP.StartsWith(PrefijoCuentaCentroCosto) ? parametroCentroCostoOrigen.Valor : string.Empty, Division = organizacionOrigen.Division, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, numeroReferencia, traspasoMp.ProductoOrigen.ProductoDescripcion, string.Format("{0} {1}.", traspasoMp.CantidadTraspasarOrigen.ToString("N2"), traspasoMp.ProductoOrigen.UnidadMedicion.ClaveUnidad), traspasoMp.PrecioTraspasoOrigen.ToString("C2")), Sociedad = organizacionOrigen.Sociedad, DescripcionProducto = claveContableAbono.Descripcion, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacionOrigen.Sociedad), }; polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaTraspaso.Add(polizaSalida); return(polizasSalidaTraspaso); }
/// <summary> /// Genera la estructura de la poliza de la 212 /// </summary> /// <param name="polizaSacrificioModel"></param> /// <param name="cuentasSap"></param> /// <param name="proveedores"></param> /// <param name="parametroGeneral"></param> /// <param name="organizacion"></param> /// <param name="textoDocumento"></param> /// <param name="tipoMovimiento"></param> /// <param name="postFijoRef3"></param> /// <param name="parametroOrganizacion"> </param> /// <returns></returns> private List <PolizaInfo> ObtenerPoliza212(List <PolizaSacrificioModel> datosPoliza , IList <CuentaSAPInfo> cuentasSap , IList <ProveedorInfo> proveedores , ParametroGeneralInfo parametroGeneral , OrganizacionInfo organizacion , string textoDocumento, string tipoMovimiento , string postFijoRef3, ParametroOrganizacionInfo parametroOrganizacion) { var polizasSacrificio = new List <PolizaInfo>(); DatosPolizaInfo datoCliente; bool datoClienteRegistrado = false; int linea = 0; int canales = 0; decimal peso = 0; PolizaInfo polizaSacrificioCliente = new PolizaInfo(); var sbRef3 = new StringBuilder(); sbRef3.Append("03"); sbRef3.Append( string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft( 10, ' ')); sbRef3.Append(new Random(10).Next(10, 20)); sbRef3.Append(new Random(30).Next(30, 40)); sbRef3.Append(DateTime.Now.Millisecond); sbRef3.Append(postFijoRef3); PolizaSacrificioModel polizaSacrificioModel = new PolizaSacrificioModel(); var sbArchivo = new StringBuilder(ObtenerArchivoFolio(datosPoliza.FirstOrDefault().Fecha)); Thread.Sleep(1000); for (var indexSacrificio = 0; indexSacrificio < datosPoliza.Count; indexSacrificio++) { polizaSacrificioModel = datosPoliza[indexSacrificio]; long folio = 0; long.TryParse(polizaSacrificioModel.Folio, out folio); //var numeroReferencia = new StringBuilder(string.Format("{0}{1}", polizaSacrificioModel.Folio, ObtenerNumeroReferencia)); var numeroReferencia = ObtenerNumeroReferenciaFolio(Convert.ToInt64(folio)); CuentaSAPInfo cuentaSAP = cuentasSap.FirstOrDefault(cuenta => cuenta.CuentaSAP.Equals(ObtenerCuentaCanal)); if (cuentaSAP == null) { throw new ExcepcionServicio("CUENTA PARA CANAL NO CONFIGURADA"); } var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = polizaSacrificioModel.Fecha, Folio = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? polizaSacrificioModel.ImporteCanal.ToString("F2") : (polizaSacrificioModel.ImporteCanal * -1).ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(++linea), Ref3 = sbRef3.ToString(), Cuenta = cuentaSAP.CuentaSAP, CentroBeneficio = parametroOrganizacion.Valor, DescripcionCosto = cuentaSAP.Descripcion, Division = organizacion.Division, ArchivoFolio = sbArchivo.ToString(), ImporteIva = "0", PesoOrigen = polizaSacrificioModel.Peso, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2}-{3} {4} CANALES {5}", polizaSacrificioModel.Serie, polizaSacrificioModel.Folio, tipoMovimiento, polizaSacrificioModel.Lote , polizaSacrificioModel.Canales , polizaSacrificioModel.Peso), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; PolizaInfo polizaSacrificio = GeneraRegistroPoliza(datos); polizaSacrificio.Corral = polizaSacrificioModel.Corral; polizasSacrificio.Add(polizaSacrificio); cuentaSAP = cuentasSap.FirstOrDefault(cuenta => cuenta.CuentaSAP.Equals(ObtenerCuentaPiel)); if (cuentaSAP == null) { throw new ExcepcionServicio("CUENTA PARA PIEL NO CONFIGURADA"); } datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = polizaSacrificioModel.Fecha, Folio = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? polizaSacrificioModel.ImportePiel.ToString("F2") : (polizaSacrificioModel.ImportePiel * -1).ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(++linea), Ref3 = sbRef3.ToString(), Cuenta = cuentaSAP.CuentaSAP, ImporteIva = "0", CentroBeneficio = parametroOrganizacion.Valor, DescripcionCosto = cuentaSAP.Descripcion, Division = organizacion.Division, ArchivoFolio = sbArchivo.ToString(), PesoOrigen = polizaSacrificioModel.Peso, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2}-{3} {4} CANALES {5}", polizaSacrificioModel.Serie, polizaSacrificioModel.Folio, tipoMovimiento, polizaSacrificioModel.Lote , polizaSacrificioModel.Canales , polizaSacrificioModel.Peso), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaSacrificio = GeneraRegistroPoliza(datos); polizaSacrificio.Corral = polizaSacrificioModel.Corral; polizasSacrificio.Add(polizaSacrificio); cuentaSAP = cuentasSap.FirstOrDefault(cuenta => cuenta.CuentaSAP.Equals(ObtenerCuentaViscera)); if (cuentaSAP == null) { throw new ExcepcionServicio("CUENTA PARA VISCERA NO CONFIGURADA"); } datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = polizaSacrificioModel.Fecha, Folio = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? polizaSacrificioModel.ImporteViscera.ToString("F2") : (polizaSacrificioModel.ImporteViscera * -1).ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(++linea), Ref3 = sbRef3.ToString(), ImporteIva = "0", Cuenta = cuentaSAP.CuentaSAP, CentroBeneficio = parametroOrganizacion.Valor, DescripcionCosto = cuentaSAP.Descripcion, Division = organizacion.Division, ArchivoFolio = sbArchivo.ToString(), PesoOrigen = polizaSacrificioModel.Peso, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2}-{3} {4} CANALES {5}", polizaSacrificioModel.Serie, polizaSacrificioModel.Folio, tipoMovimiento, polizaSacrificioModel.Lote , polizaSacrificioModel.Canales , polizaSacrificioModel.Peso), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaSacrificio = GeneraRegistroPoliza(datos); polizaSacrificio.Corral = polizaSacrificioModel.Corral; polizasSacrificio.Add(polizaSacrificio); ProveedorInfo proveedor = proveedores.FirstOrDefault(codigo => codigo.CodigoSAP.Equals(parametroGeneral.Valor)); if (proveedor == null) { throw new ExcepcionServicio(string.Format("EL PROVEEDOR CON CODIGO {0} SE ENCUENTRA INACTIVO", parametroGeneral.Valor)); } if (datoClienteRegistrado) { polizaSacrificioCliente.Importe = string.Format("{0}", Cancelacion ? (Convert.ToDecimal(polizaSacrificioCliente.Importe) + ((polizaSacrificioModel.ImporteViscera + polizaSacrificioModel.ImporteCanal + polizaSacrificioModel.ImportePiel) * -1)).ToString("F2") : (Convert.ToDecimal(polizaSacrificioCliente.Importe) + (polizaSacrificioModel.ImporteViscera + polizaSacrificioModel.ImporteCanal + polizaSacrificioModel.ImportePiel)).ToString("F2")); canales = canales + polizaSacrificioModel.Canales; peso = peso + polizaSacrificioModel.Peso; polizaSacrificioCliente.Concepto = String.Format("{0}-{1} {2} {3} CANALES {4} Fecha:{5}", polizaSacrificioModel.Serie, polizaSacrificioModel.Folio, tipoMovimiento , canales , peso, polizaSacrificioModel.Fecha.ToString("yyyyMMdd")); } else { datoCliente = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = polizaSacrificioModel.Fecha, Folio = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? ((polizaSacrificioModel.ImporteViscera + polizaSacrificioModel.ImporteCanal + polizaSacrificioModel.ImportePiel) * -1).ToString("F2") : (polizaSacrificioModel.ImporteViscera + polizaSacrificioModel.ImporteCanal + polizaSacrificioModel.ImportePiel).ToString("F2")), IndicadorImpuesto = String.Empty, //Renglon = Convert.ToString(++linea), Ref3 = sbRef3.ToString(), Cliente = proveedor.CodigoSAP, DescripcionCosto = proveedor.Descripcion, Division = organizacion.Division, ArchivoFolio = sbArchivo.ToString(), PesoOrigen = polizaSacrificioModel.Peso, ImporteIva = "0", TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} CANALES {4} Fecha:{5}", polizaSacrificioModel.Serie, polizaSacrificioModel.Folio, tipoMovimiento , polizaSacrificioModel.Canales , polizaSacrificioModel.Peso, polizaSacrificioModel.Fecha.ToString("yyyyMMdd")), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; datoClienteRegistrado = true; polizaSacrificioCliente = GeneraRegistroPoliza(datoCliente); peso = polizaSacrificioModel.Peso; canales = polizaSacrificioModel.Canales; } } polizaSacrificioCliente.NumeroLinea = (++linea).ToString(); polizaSacrificioCliente.Corral = "A"; polizasSacrificio.Add(polizaSacrificioCliente); return(polizasSacrificio); }
private IList <PolizaInfo> ObtenerPoliza(List <PolizaEntradaSalidaPorAjusteModel> ajustesDeInventario) { var polizasSalidaAjuste = new List <PolizaInfo>(); TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.SalidaAjuste.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.SalidaAjuste)); } string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; var linea = 1; var almacenMovimientoBL = new AlmacenMovimientoBL(); List <AlmacenMovimientoDetalle> almancenMovimientosDetalle = ajustesDeInventario.Select(mov => new AlmacenMovimientoDetalle { AlmacenMovimientoDetalleID = mov.AlmacenMovimientoDetalleID }).ToList(); AlmacenMovimientoInfo almacenMovimiento = almacenMovimientoBL.ObtenerMovimientoPorClaveDetalle(almancenMovimientosDetalle); if (almacenMovimiento == null) { almacenMovimiento = new AlmacenMovimientoInfo(); } string archivoFolio = ObtenerArchivoFolio(almacenMovimiento.FechaMovimiento); AlmacenInfo almacen = ObtenerAlmacen(almacenMovimiento.AlmacenID); if (almacen == null) { almacen = new AlmacenInfo { Organizacion = new OrganizacionInfo() }; } OrganizacionInfo organizacion = ObtenerOrganizacionIVA(almacen.Organizacion.OrganizacionID); if (organizacion == null) { organizacion = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo() }; } var ref3 = new StringBuilder(); ref3.Append("03"); ref3.Append( string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft( 10, ' ')); ref3.Append(new Random(10).Next(10, 20)); ref3.Append(new Random(30).Next(30, 40)); ref3.Append(DateTime.Now.Millisecond); ref3.Append(postFijoRef3); //string numeroReferencia = ObtenerNumeroReferencia; string numeroReferencia = ObtenerNumeroReferenciaFolio(almacenMovimiento.FolioMovimiento); ParametroOrganizacionInfo parametroOrganizacionMerma; if (almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.Enfermeria.GetHashCode() || almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ManejoGanado.GetHashCode() || almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ReimplanteGanado.GetHashCode()) { parametroOrganizacionMerma = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID, ParametrosEnum.CTAMERMAENG.ToString()); } else { parametroOrganizacionMerma = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID, ParametrosEnum.CTAMERMA.ToString()); } if (parametroOrganizacionMerma == null) { throw new ExcepcionServicio("CUENTA DE MERMA NO CONFIGURADA"); } IList <CuentaSAPInfo> cuentasSAP = ObtenerCuentasSAP(); IList <CuentaAlmacenSubFamiliaInfo> almacenesSubFamilia = ObtenerCostosSubFamilia(almacen.AlmacenID); IList <ClaseCostoProductoInfo> almacenesProductos = ObtenerCostosProducto(almacen.AlmacenID); IList <ProductoInfo> productos = ObtenerProductos(); IList <UnidadMedicionInfo> unidades = ObtenerUnidadesMedicion(); ProductoInfo producto; ParametroOrganizacionInfo parametroCentroCosto = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID, ParametrosEnum.CTACENTROCOSTOMP.ToString()); if (parametroCentroCosto == null) { throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO")); } ClaseCostoProductoInfo almacenProducto; CuentaAlmacenSubFamiliaInfo almacenSubFamilia; CuentaSAPInfo cuentaSAP; bool afectaCosto; for (var indexAjustes = 0; indexAjustes < ajustesDeInventario.Count; indexAjustes++) { PolizaEntradaSalidaPorAjusteModel ajuste = ajustesDeInventario[indexAjustes]; cuentaSAP = null; producto = productos.FirstOrDefault(clave => clave.ProductoId == ajuste.ProductoID); if (producto == null) { throw new ExcepcionServicio(string.Format("CUENTA DE MERMA NO CONFIGURADA {0}", ajuste.ProductoID)); } afectaCosto = ValidarAfectacionCuentaCosto(producto); if (!afectaCosto && (almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.Enfermeria.GetHashCode() || almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ManejoGanado.GetHashCode() || almacen.TipoAlmacen.TipoAlmacenID == TipoAlmacenEnum.ReimplanteGanado.GetHashCode())) { almacenSubFamilia = almacenesSubFamilia.FirstOrDefault(sub => sub.SubFamiliaID == producto.SubfamiliaId); if (almacenSubFamilia != null) { cuentaSAP = cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAPID == almacenSubFamilia.CuentaSAPID); } } else { almacenProducto = almacenesProductos.FirstOrDefault(prod => prod.ProductoID == producto.ProductoId); if (almacenProducto != null) { cuentaSAP = cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAPID == almacenProducto.CuentaSAPID); } } if (cuentaSAP == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "CUENTA NO CONFIGURADA PARA EL PRODUCTO", producto.ProductoDescripcion)); } UnidadMedicionInfo unidad = unidades.FirstOrDefault(uni => uni.UnidadID == producto.UnidadId); if (unidad == null) { unidad = new UnidadMedicionInfo(); } CuentaSAPInfo cuentaCargo = cuentasSAP.FirstOrDefault( clave => clave.CuentaSAP.Equals(parametroOrganizacionMerma.Valor, StringComparison.CurrentCultureIgnoreCase)); if (cuentaCargo == null) { throw new ExcepcionServicio("CUENTA DE MERMA NO CONFIGURADA"); } var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = almacenMovimiento.FechaMovimiento, Folio = almacenMovimiento.FolioMovimiento.ToString(), Importe = string.Format("{0}", ajuste.Importe.ToString("F2")), Renglon = Convert.ToString(linea++), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = parametroOrganizacionMerma.Valor, CentroCosto = parametroOrganizacionMerma.Valor.StartsWith(PrefijoCuentaCentroCosto) || parametroOrganizacionMerma.Valor.StartsWith(PrefijoCuentaCentroGasto) ? parametroCentroCosto.Valor : string.Empty, Division = organizacion.Division, ArchivoFolio = archivoFolio, DescripcionCosto = cuentaCargo.Descripcion, PesoOrigen = Math.Round(ajuste.Cantidad, 0), TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, almacenMovimiento.FolioMovimiento, producto.ProductoDescripcion, string.Format("{0} {1}", ajuste.Cantidad.ToString("N2"), unidad.ClaveUnidad), ajuste.Precio.ToString("C2")), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; PolizaInfo polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaAjuste.Add(polizaSalida); datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = almacenMovimiento.FechaMovimiento, Folio = almacenMovimiento.FolioMovimiento.ToString(), Importe = string.Format("{0}", (ajuste.Importe * -1).ToString("F2")), Renglon = Convert.ToString(linea++), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = cuentaSAP.CuentaSAP, Division = organizacion.Division, ArchivoFolio = archivoFolio, DescripcionCosto = cuentaSAP.Descripcion, CentroCosto = cuentaSAP.CuentaSAP.StartsWith(PrefijoCuentaCentroCosto) || cuentaSAP.CuentaSAP.StartsWith(PrefijoCuentaCentroGasto) ? parametroCentroCosto.Valor : string.Empty, PesoOrigen = Math.Round(ajuste.Cantidad, 0), TipoDocumento = textoDocumento, ClaseDocumento = postFijoRef3, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, almacenMovimiento.FolioMovimiento, producto.ProductoDescripcion, string.Format("{0} {1}", ajuste.Cantidad.ToString("N2"), unidad.ClaveUnidad), ajuste.Precio.ToString("C2")), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaAjuste.Add(polizaSalida); } return(polizasSalidaAjuste); }
/// <summary> /// Obtiene un lista paginada /// </summary> /// <param name="pagina"></param> /// <param name="filtro"></param> /// <returns></returns> internal ResultadoInfo <CuentaSAPInfo> ObtenerPorPagina(PaginacionInfo pagina, CuentaSAPInfo filtro) { try { Dictionary <string, object> parameters = AuxCuentaSAPDAL.ObtenerParametrosPorPagina(pagina, filtro); DataSet ds = Retrieve("[dbo].[CuentaSAP_ObtenerPorPagina]", parameters); ResultadoInfo <CuentaSAPInfo> result = null; if (ValidateDataSet(ds)) { result = MapCuentaSAPDAL.ObtenerPorPagina(ds); } return(result); } catch (SqlException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (DataException ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Separa los nodos de las polizas en cargos y abonos /// </summary> /// <param name="polizas">nodos de la poliza que se separaran como registros</param> /// <param name="cargos">cargos encontrados en los nodos de la poliza</param> /// <param name="abonos">abonos encontrados en los nodos de la poliza</param> protected override void GeneraLineaRegistroContable(IList <PolizaInfo> polizas, out IList <PolizaInfo> cargos, out IList <PolizaInfo> abonos) { try { base.GeneraLineaRegistroContable(polizas, out cargos, out abonos); const int cadenaLarga = 50; //obtiene todos los costos activos: var costosActivos = ObtenerCostos(); if (costosActivos == null) { var ex = new Exception(Properties.ResourceServices.PolizaSalidaMuerteGanadoTransito_CostosNoEncontrados); Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } //filtra la lista de todos los costos activos, solo conservando los costos que se incluyen en la poliza var costoLista = (from costo in costosActivos let tempCosto = detalles.FirstOrDefault(detalle => detalle.CostoId == costo.CostoID) where tempCosto != null select new CostoInfo { CostoID = tempCosto.CostoId, ClaveContable = costo.ClaveContable, Descripcion = costo.Descripcion }).ToList(); costosActivos.Clear(); costosActivos = costoLista; // PolizaModel.RegistroContable = new List <PolizaRegistroContableModel>(); PolizaRegistroContableModel registroContable; foreach (var cargo in cargos) { if (cargo.Descripcion == null) { //al nodo de la poliza le encuentra la descripcion del costo usando la clave contable del mismo: var descripcionCosto = costosActivos.FirstOrDefault( costo => cargo.Cuenta.EndsWith(costo.ClaveContable)); //en caso de no encontrarse, no se asigna descripcion, en caso de encontrarse se asigna la descripcion del costo cargo.Descripcion = descripcionCosto == null ? string.Empty : descripcionCosto.Descripcion; } //si la descripcion es demasiado larga, se solo muestra la cantidad de letras que cabe en la linea var sbDescripcion = new StringBuilder(); sbDescripcion.Append(cargo.Descripcion.Length > cadenaLarga ? cargo.Descripcion.Substring(0, cadenaLarga - 1).Trim() : cargo.Descripcion.Trim()); registroContable = new PolizaRegistroContableModel { Cuenta = Cancelacion ? string.IsNullOrWhiteSpace(cargo.Proveedor) ? cargo.Cuenta : cargo.Proveedor : cargo.Cuenta, Descripcion = sbDescripcion.ToString(), Cargo = Convert.ToDecimal(cargo.Importe.Replace("-", string.Empty)).ToString( "N", CultureInfo.InvariantCulture) }; PolizaModel.RegistroContable.Add(registroContable); } var cuentaSapBL = new CuentaSAPBL(); var cuentaSap = cuentaSapBL.ObtenerTodos(); foreach (var abono in abonos) { var cuenta = cuentaSap.FirstOrDefault(x => x.CuentaSAP == abono.Cuenta); if (cuenta == null) { cuenta = new CuentaSAPInfo(); } //al nodo de la poliza le encuentra la descripcion del costo usando la clave contable del mismo: var sbDescripcion = new StringBuilder(); sbDescripcion.Append(cuenta.Descripcion.Length > cadenaLarga ? cuenta.Descripcion.Substring(0, cadenaLarga - 1).Trim() : cuenta.Descripcion.Trim()); registroContable = new PolizaRegistroContableModel { Cuenta = (string.IsNullOrWhiteSpace(abono.Proveedor) ? abono.Cuenta : abono.Proveedor), Descripcion = sbDescripcion.ToString(), Concepto = string.Empty, Abono = Convert.ToDecimal(abono.Importe.Replace("-", string.Empty)).ToString( "N", CultureInfo.CurrentCulture) }; PolizaModel.RegistroContable.Add(registroContable); } } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene los parametros para obtner por filtro sin tipo de cuenta /// </summary> /// <param name="filtro"></param> /// <returns></returns> internal static Dictionary <string, object> ObtenerParametrosPorFiltroSinTipo(CuentaSAPInfo filtro) { try { Logger.Info(); var parametros = new Dictionary <string, object> { { "@CuentaSAPID", filtro.CuentaSAPID }, { "@CuentaSAP", filtro.CuentaSAP }, { "@Descripcion", filtro.Descripcion }, { "@Activo", filtro.Activo }, }; return(parametros); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
private IList <PolizaInfo> ObtenerPoliza(SalidaProductoInfo salidaProducto) { var polizasSalida = new List <PolizaInfo>(); TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.SalidaVentaProducto.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.SalidaVentaProducto)); } string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; var linea = 1; var ref3 = new StringBuilder(); ref3.Append("03"); ref3.Append( string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft( 10, ' ')); ref3.Append(new Random(10).Next(10, 20)); ref3.Append(new Random(30).Next(30, 40)); ref3.Append(DateTime.Now.Millisecond); ref3.Append(postFijoRef3); //string numeroReferencia = string.Format("{0}{1}", salidaProducto.FolioSalida, ObtenerNumeroReferencia); string numeroReferencia = ObtenerNumeroReferenciaFolio(salidaProducto.FolioSalida); IList <CuentaSAPInfo> cuentasSAP = ObtenerCuentasSAP(); IList <ClaseCostoProductoInfo> almacenesProductos = ObtenerCostosProducto(salidaProducto.Almacen.AlmacenID); OrganizacionInfo organizacion = ObtenerOrganizacionIVA(salidaProducto.Organizacion.OrganizacionID); if (organizacion == null) { organizacion = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo() }; } ClaseCostoProductoInfo almacenProducto = almacenesProductos.FirstOrDefault(prod => prod.ProductoID == salidaProducto.Producto.ProductoId); if (almacenProducto == null) { throw new ExcepcionServicio(string.Format("{0} {1} {2}", "CUENTA PARA PRODUCTO", salidaProducto.Producto.Descripcion, "NO CONFIGURADA")); } CuentaSAPInfo cuentaSAP = cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAPID == almacenProducto.CuentaSAPID); if (cuentaSAP == null) { cuentaSAP = new CuentaSAPInfo { Descripcion = string.Empty, CuentaSAP = string.Empty }; } ClaveContableInfo claveContableCosto = ObtenerCuentaInventario(salidaProducto.Organizacion. OrganizacionID, TipoPoliza.ConsumoAlimento); if (claveContableCosto == null) { throw new ExcepcionServicio(string.Format("{0}", "CUENTA DE COSTO NO CONFIGURADA")); } ClaveContableInfo claveContableBeneficios = ObtenerCuentaInventario(salidaProducto.Organizacion. OrganizacionID, TipoPoliza.SalidaVentaProducto); if (claveContableBeneficios == null) { throw new ExcepcionServicio(string.Format("{0}", "CUENTA DE BENEFICIOS NO CONFIGURADA")); } ParametroOrganizacionInfo parametroCentroCosto = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID, ParametrosEnum.CTACENTROCOSTOMP.ToString()); if (parametroCentroCosto == null) { throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE COSTO NO CONFIGURADO")); } ParametroOrganizacionInfo parametroCentroBeneficio = ObtenerParametroOrganizacionPorClave(organizacion.OrganizacionID, ParametrosEnum.CTACENTROBENEFICIOMP.ToString()); if (parametroCentroBeneficio == null) { throw new ExcepcionServicio(string.Format("{0}", "CENTRO DE BENEFICIO NO CONFIGURADO")); } string archivoFolio = ObtenerArchivoFolio(salidaProducto.FechaSalida); int cantidad = salidaProducto.PesoBruto - salidaProducto.PesoTara; var almacenMovimientoDetalleBL = new AlmacenMovimientoDetalleBL(); AlmacenMovimientoDetalle detalleMovimiento = almacenMovimientoDetalleBL.ObtenerPorAlmacenMovimientoID( salidaProducto.AlmacenMovimiento.AlmacenMovimientoID); if (detalleMovimiento == null) { detalleMovimiento = new AlmacenMovimientoDetalle(); } if (unidades == null) { unidades = ObtenerUnidadesMedicion(); } if (productos == null) { productos = ObtenerProductos(); } ProductoInfo producto = productos.FirstOrDefault(clave => clave.ProductoId == salidaProducto.Producto.ProductoId); if (producto == null) { producto = new ProductoInfo(); } switch ((SubFamiliasEnum)producto.SubfamiliaId) { case SubFamiliasEnum.Granos: claveContableBeneficios.Valor = string.Concat(claveContableBeneficios.Valor, PostFijoSubFamiliaGranos); claveContableCosto.Valor = string.Concat(claveContableCosto.Valor, PostFijoSubFamiliaGranos); break; default: claveContableBeneficios.Valor = string.Concat(claveContableBeneficios.Valor, PostFijoSubFamiliaNoGranos); claveContableCosto.Valor = string.Concat(claveContableCosto.Valor, PostFijoSubFamiliaNoGranos); break; } var traspaso = false; if (salidaProducto.TipoMovimiento.TipoMovimientoID == TipoMovimiento.ProductoSalidaTraspaso.GetHashCode() || salidaProducto.TipoMovimiento.Descripcion.Equals("salida por traspaso", StringComparison.InvariantCultureIgnoreCase)) { salidaProducto.Cliente = new ClienteInfo { CodigoSAP = salidaProducto.CuentaSAP.CuentaSAP, Descripcion = salidaProducto.CuentaSAP.Descripcion }; traspaso = true; } string unidad = unidades.Where(clave => clave.UnidadID == producto.UnidadId). Select(uni => uni.ClaveUnidad).FirstOrDefault(); var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = salidaProducto.FechaSalida, Folio = salidaProducto.FolioSalida.ToString(), Cliente = traspaso ? string.Empty : salidaProducto.Cliente.CodigoSAP, Cuenta = traspaso ? salidaProducto.Cliente.CodigoSAP : string.Empty, Importe = string.Format("{0}", salidaProducto.Importe.ToString("F2")), Renglon = Convert.ToString(linea++), ImporteIva = "0", ClaseDocumento = postFijoRef3, Ref3 = ref3.ToString(), Division = organizacion.Division, ArchivoFolio = archivoFolio, DescripcionCosto = salidaProducto.Cliente.Descripcion, PesoOrigen = cantidad, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, salidaProducto.FolioSalida, cantidad.ToString("N0"), unidad, cuentaSAP.Descripcion), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad) }; PolizaInfo polizaSalida = GeneraRegistroPoliza(datos); polizasSalida.Add(polizaSalida); datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = salidaProducto.FechaSalida, Folio = salidaProducto.FolioSalida.ToString(), Importe = (detalleMovimiento.Importe * -1).ToString("F2"), Renglon = Convert.ToString(linea++), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = cuentaSAP.CuentaSAP, DescripcionCosto = cuentaSAP.Descripcion, Division = organizacion.Division, ArchivoFolio = archivoFolio, PesoOrigen = cantidad, ClaseDocumento = postFijoRef3, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, salidaProducto.FolioSalida, cantidad.ToString("N0"), unidad, cuentaSAP.Descripcion), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad) }; polizaSalida = GeneraRegistroPoliza(datos); polizasSalida.Add(polizaSalida); if (!traspaso) { cuentaSAP = cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAP == claveContableCosto.Valor); if (cuentaSAP == null) { throw new ExcepcionServicio("CUENTA DE COSTO NO CONFIGURADA"); } datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = salidaProducto.FechaSalida, Folio = salidaProducto.FolioSalida.ToString(), Importe = detalleMovimiento.Importe.ToString("F2"), Renglon = Convert.ToString(linea++), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = cuentaSAP.CuentaSAP, Division = organizacion.Division, ArchivoFolio = archivoFolio, DescripcionCosto = cuentaSAP.Descripcion, CentroCosto = claveContableCosto.Valor.StartsWith(PrefijoCuentaCentroCosto) || claveContableCosto.Valor.StartsWith(PrefijoCuentaCentroGasto) ? parametroCentroCosto.Valor : string.Empty, //CentroBeneficio = // claveContableBeneficios.Valor.StartsWith(PrefijoCuentaCentroBeneficio) // ? parametroCentroBeneficio.Valor // : string.Empty, PesoOrigen = cantidad, ClaseDocumento = postFijoRef3, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, salidaProducto.FolioSalida, cantidad.ToString("N0"), unidad, cuentaSAP.Descripcion), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad) }; polizaSalida = GeneraRegistroPoliza(datos); polizasSalida.Add(polizaSalida); cuentaSAP = cuentasSAP.FirstOrDefault(cuenta => cuenta.CuentaSAP == claveContableBeneficios.Valor); if (cuentaSAP == null) { throw new ExcepcionServicio("CUENTA DE BENEFICIOS NO CONFIGURADA"); } datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = salidaProducto.FechaSalida, Folio = salidaProducto.FolioSalida.ToString(), Importe = string.Format("{0}", (salidaProducto.Importe * -1).ToString("F2")), Renglon = Convert.ToString(linea), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = cuentaSAP.CuentaSAP, Division = organizacion.Division, ArchivoFolio = archivoFolio, DescripcionCosto = cuentaSAP.Descripcion, //CentroCosto = // claveContableCosto.Valor.StartsWith(PrefijoCuentaCentroCosto) || // claveContableCosto.Valor.StartsWith(PrefijoCuentaCentroGasto) // ? parametroCentroCosto.Valor // : string.Empty, CentroBeneficio = claveContableBeneficios.Valor.StartsWith(PrefijoCuentaCentroBeneficio) ? parametroCentroBeneficio.Valor : string.Empty, PesoOrigen = cantidad, ClaseDocumento = postFijoRef3, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} {4}", tipoMovimiento, salidaProducto.FolioSalida, cantidad.ToString("N0"), unidad, cuentaSAP.Descripcion), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad) }; polizaSalida = GeneraRegistroPoliza(datos); polizasSalida.Add(polizaSalida); } return(polizasSalida); }
/// <summary> /// Genera la estructura de la poliza de la 300 /// </summary> /// <param name="polizaSacrificioModel"></param> /// <param name="cuentasSap"></param> /// <param name="proveedores"></param> /// <param name="parametroGeneral"></param> /// <param name="organizacion"></param> /// <param name="textoDocumento"></param> /// <param name="tipoMovimiento"></param> /// <param name="postFijoRef3"></param> /// <returns></returns> private List <PolizaInfo> ObtenerPoliza300(List <PolizaSacrificioModel> datosPoliza , IList <CuentaSAPInfo> cuentasSap , IList <ProveedorInfo> proveedores , ParametroGeneralInfo parametroGeneral , OrganizacionInfo organizacion , string textoDocumento, string tipoMovimiento , string postFijoRef3) { var polizasSacrificio = new List <PolizaInfo>(); decimal importe = 0; int linea = 0; var sbRef3 = new StringBuilder(); sbRef3.Append("03"); sbRef3.Append( string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft( 10, ' ')); sbRef3.Append(new Random(10).Next(10, 20)); sbRef3.Append(new Random(30).Next(30, 40)); sbRef3.Append(DateTime.Now.Millisecond); sbRef3.Append(postFijoRef3); var sbArchivo = new StringBuilder(ObtenerArchivoFolio(datosPoliza.FirstOrDefault().Fecha)); Thread.Sleep(1000); PolizaSacrificioModel polizaSacrificioModel = new PolizaSacrificioModel(); datosPoliza = datosPoliza.GroupBy(grupo => new { grupo.Serie, grupo.Folio }) .Select(dato => new PolizaSacrificioModel { OrganizacionID = dato.Select(org => org.OrganizacionID).FirstOrDefault(), Canales = dato.Select(can => can.Canales).Sum(), //Lote = dato.Select(lot => lot.Lote).FirstOrDefault(), Peso = dato.Select(peso => peso.Peso).Sum(), Fecha = dato.Select(fech => fech.Fecha).FirstOrDefault(), Folio = dato.Key.Folio, //LoteID = dato.Select(lot => lot.LoteID).FirstOrDefault(), //Codigo = dato.Select(cod => cod.Codigo).FirstOrDefault(), ImporteCanal = dato.Select(imp => imp.ImporteCanal).Sum(), Serie = dato.Key.Serie, ImportePiel = dato.Select(imp => imp.ImportePiel).Sum(), ImporteViscera = dato.Select(imp => imp.ImporteViscera).Sum() }).ToList(); for (var indexSacrificio = 0; indexSacrificio < datosPoliza.Count; indexSacrificio++) { polizaSacrificioModel = datosPoliza[indexSacrificio]; importe = polizaSacrificioModel.ImporteViscera + polizaSacrificioModel.ImporteCanal + polizaSacrificioModel.ImportePiel; //var numeroReferencia = new StringBuilder(string.Format("{0}{1}", polizaSacrificioModel.Folio, ObtenerNumeroReferencia)); var numeroReferencia = ObtenerNumeroReferenciaFolio(Convert.ToInt64(polizaSacrificioModel.Folio)); CuentaSAPInfo cuentaSAP = cuentasSap.FirstOrDefault(cuenta => cuenta.CuentaSAP.Equals(ObtenerCuentaPoliza300)); if (cuentaSAP == null) { throw new ExcepcionServicio("CUENTA PARA CANAL NO CONFIGURADA"); } var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = polizaSacrificioModel.Fecha, Folio = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (importe * -1).ToString("F2") : importe.ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(++linea), ImporteIva = "0", Ref3 = sbRef3.ToString(), Cuenta = cuentaSAP.CuentaSAP, Segmento = "S300", DescripcionCosto = cuentaSAP.Descripcion, Division = organizacion.Division, ArchivoFolio = sbArchivo.ToString(), PesoOrigen = polizaSacrificioModel.Peso, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} CANALES {4} Fecha: {5}", polizaSacrificioModel.Serie, polizaSacrificioModel.Folio, tipoMovimiento , polizaSacrificioModel.Canales , polizaSacrificioModel.Peso , polizaSacrificioModel.Fecha.ToString("yyyyMMdd")), Sociedad = organizacion.Sociedad, ArchivoEnviadoServidor = 1 }; PolizaInfo polizaSacrificio = GeneraRegistroPoliza(datos); polizasSacrificio.Add(polizaSacrificio); ProveedorInfo proveedor = proveedores.FirstOrDefault(codigo => codigo.CodigoSAP.Equals(parametroGeneral.Valor)); if (proveedor == null) { throw new ExcepcionServicio(string.Format("EL PROVEEDOR CON CODIGO {0} SE ENCUENTRA INACTIVO", parametroGeneral.Valor)); } datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = polizaSacrificioModel.Fecha, Folio = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (importe).ToString("F2") : (importe * -1).ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(++linea), Ref3 = sbRef3.ToString(), ImporteIva = "0", ClaveProveedor = proveedor.CodigoSAP, DescripcionCosto = proveedor.Descripcion, Division = organizacion.Division, ArchivoFolio = sbArchivo.ToString(), PesoOrigen = polizaSacrificioModel.Peso, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} {2} {3} CANALES {4} Fecha: {5}", polizaSacrificioModel.Serie, polizaSacrificioModel.Folio, tipoMovimiento , polizaSacrificioModel.Canales , polizaSacrificioModel.Peso , polizaSacrificioModel.Fecha.ToString("yyyyMMdd")), Sociedad = organizacion.Sociedad, ArchivoEnviadoServidor = 1, Segmento = "S300", }; polizaSacrificio = GeneraRegistroPoliza(datos); polizasSacrificio.Add(polizaSacrificio); } return(polizasSacrificio); }
private IList <PolizaInfo> ObtenerPoliza(GastoInventarioInfo gastoInventario) { var polizasGastosInventario = new List <PolizaInfo>(); var costos = new List <int> { gastoInventario.Costo.CostoID }; var retencionBL = new RetencionBL(); var retenciones = retencionBL.ObtenerRetencionesConCosto(costos); IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP(); TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.GastosInventario.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.GastosInventario)); } string textoDocumento = tipoPoliza.TextoDocumento; string tipoMovimiento = tipoPoliza.ClavePoliza; string postFijoRef3 = tipoPoliza.PostFijoRef3; var ref3 = new StringBuilder(); ref3.Append("03"); ref3.Append( string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft( 10, ' ')); ref3.Append(new Random(10).Next(10, 20)); ref3.Append(new Random(30).Next(30, 40)); ref3.Append(DateTime.Now.Millisecond); ref3.Append(postFijoRef3); //string numeroReferencia = ObtenerNumeroReferencia; string numeroReferencia = ObtenerNumeroReferenciaFolio(gastoInventario.FolioGasto); DateTime fecha = gastoInventario.FechaGasto; string archivoFolio = ObtenerArchivoFolio(fecha); OrganizacionInfo organizacion = ObtenerOrganizacionIVA(gastoInventario.Organizacion.OrganizacionID); if (organizacion == null) { organizacion = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo() }; } bool esProveedor = gastoInventario.Proveedor != null && gastoInventario.Proveedor.ProveedorID > 0; bool tieneRetencion = gastoInventario.Retencion; var renglon = 0; ClaveContableInfo claveContableInfo = ObtenerCuentaInventario(gastoInventario.Costo , gastoInventario.Organizacion.OrganizacionID , 0); CuentaSAPInfo cuentaSapProvision = null; if (!esProveedor) { cuentaSapProvision = cuentasSap.FirstOrDefault( clave => clave.CuentaSAPID == gastoInventario.CuentaSAP.CuentaSAPID); if (cuentaSapProvision == null) { cuentaSapProvision = cuentasSap.FirstOrDefault( clave => clave.CuentaSAP.Equals(gastoInventario.CuentaGasto, StringComparison.InvariantCultureIgnoreCase)); if (cuentaSapProvision == null) { throw new ExcepcionServicio( string.Format("No se encuentra configurada la cuenta de provisión, para el costo {0}", gastoInventario.Costo.Descripcion)); } } } string complementoConcepto; if (gastoInventario.Corral != null) { complementoConcepto = string.Format("Corral {0}", gastoInventario.Corral.Codigo); } else { complementoConcepto = string.Format("{0} Corrales", gastoInventario.TotalCorrales); } PolizaInfo polizaEntrada; if (esProveedor) { if (!gastoInventario.IVA && !tieneRetencion) { renglon++; var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (gastoInventario.Importe * -1).ToString("F2") : gastoInventario.Importe.ToString("F2")), Renglon = Convert.ToString(renglon), Division = organizacion.Division, ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableInfo.Valor, ArchivoFolio = archivoFolio, DescripcionCosto = claveContableInfo.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), ClaveProveedor = gastoInventario.Proveedor.CodigoSAP, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? gastoInventario.Importe.ToString("F2") : (gastoInventario.Importe * -1).ToString("F2")), Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), ArchivoFolio = archivoFolio, DescripcionCosto = gastoInventario.Proveedor.Descripcion, PesoOrigen = 0, Division = organizacion.Division, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); } else { if (gastoInventario.IVA) { CuentaSAPInfo cuentaIva = cuentasSap.FirstOrDefault( clave => clave.CuentaSAP.Equals(organizacion.Iva.CuentaRecuperar.ClaveCuenta)); if (cuentaIva == null) { throw new ExcepcionServicio(string.Format("No se encuentra configurada la cuenta de iva, para la organización.")); } renglon++; var importeIva = gastoInventario.Importe * (organizacion.Iva.TasaIva / 100); var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (gastoInventario.Importe * -1).ToString("F2") : gastoInventario.Importe.ToString("F2")), Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableInfo.Valor, ArchivoFolio = archivoFolio, DescripcionCosto = claveContableInfo.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (importeIva * -1).ToString("F2") : importeIva.ToString("F2")) , Renglon = Convert.ToString(renglon), ImporteIva = gastoInventario.Importe.ToString("F2"), ClaveImpuesto = ClaveImpuesto, CondicionImpuesto = CondicionImpuesto, IndicadorImpuesto = organizacion.Iva.IndicadorIvaRecuperar, Ref3 = ref3.ToString(), Division = organizacion.Division, Cuenta = organizacion.Iva.CuentaRecuperar.ClaveCuenta, ArchivoFolio = archivoFolio, DescripcionCosto = cuentaIva.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaveProveedor = gastoInventario.Proveedor.CodigoSAP, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (gastoInventario.Importe + importeIva).ToString("F2") : ((gastoInventario.Importe + importeIva) * -1).ToString("F2")), Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), ArchivoFolio = archivoFolio, DescripcionCosto = gastoInventario.Proveedor.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); } if (tieneRetencion) { RetencionInfo retencion; if (retenciones != null && retenciones.Any()) { retencion = retenciones.Where( costo => costo.CostoID.Equals(gastoInventario.Costo.CostoID)). Select(ret => ret).FirstOrDefault(); if (retencion == null) { throw new ExcepcionServicio(string.Format("No se encuentra configurada retención para el costo {0}", gastoInventario.Costo.Descripcion)); } } else { throw new ExcepcionServicio(string.Format("No se encuentra configurada retención para el costo {0}", gastoInventario.Costo.Descripcion)); } var parametrosRetencion = new StringBuilder(); parametrosRetencion.Append(String.Format("{0}{1}" , retencion.IndicadorRetencion , retencion.TipoRetencion)); var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaveProveedor = gastoInventario.Proveedor.CodigoSAP, ClaseDocumento = postFijoRef3, IndicadorImpuesto = parametrosRetencion.ToString(), Importe = string.Format("{0}{1}", Cancelacion ? string.Empty : "-", "0"), Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), CodigoRetencion = retencion.IndicadorImpuesto, TipoRetencion = retencion.IndicadorRetencion, ArchivoFolio = archivoFolio, DescripcionCosto = gastoInventario.Proveedor.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); if (!gastoInventario.IVA) { renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaveProveedor = gastoInventario.Proveedor.CodigoSAP, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? gastoInventario.Importe.ToString("F2") : (gastoInventario.Importe * -1).ToString("F2")) , Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), ArchivoFolio = archivoFolio, DescripcionCosto = gastoInventario.Proveedor.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (gastoInventario.Importe * -1).ToString("F2") : gastoInventario.Importe.ToString("F2")), Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableInfo.Valor, ArchivoFolio = archivoFolio, DescripcionCosto = claveContableInfo.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); } } } } else { renglon++; var datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (gastoInventario.Importe * -1).ToString("F2") : gastoInventario.Importe.ToString("F2")), Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = claveContableInfo.Valor, ArchivoFolio = archivoFolio, DescripcionCosto = claveContableInfo.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); renglon++; datos = new DatosPolizaInfo { NumeroReferencia = numeroReferencia, FechaEntrada = gastoInventario.FechaGasto, Folio = gastoInventario.FolioGasto.ToString(CultureInfo.InvariantCulture), Division = organizacion.Division, ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? gastoInventario.Importe.ToString("F2") : (gastoInventario.Importe * -1).ToString("F2")), CentroCosto = gastoInventario.CentroCosto, Renglon = Convert.ToString(renglon), ImporteIva = "0", Ref3 = ref3.ToString(), Cuenta = cuentaSapProvision.CuentaSAP, ArchivoFolio = archivoFolio, DescripcionCosto = cuentaSapProvision.Descripcion, PesoOrigen = 0, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1},{2}", tipoMovimiento, gastoInventario.FolioGasto , complementoConcepto), Sociedad = organizacion.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad), }; polizaEntrada = GeneraRegistroPoliza(datos); polizasGastosInventario.Add(polizaEntrada); } return(polizasGastosInventario); }