public DTO.Proveedores.DocumentoCompra BuscarOCrearDocumentoDeCompra(string empresa, string sucursal, int provId, int tipoDoc, string preNro, string nro)
        {
            try
            {
                Modelo.Proveedores.DocumentoCompra doc = null;

                ParameterOverride[] para =
                {
                    new ParameterOverride("empresa", empresa),
                    new ParameterOverride("entidad", "DocumentoCompra")
                };
                var buscador = (BuscadorDocumentoDeCompra)FabricaNegocios.Instancia.Resolver(typeof(BuscadorDocumentoDeCompra), para);

                if (buscador != null)
                {
                    doc = buscador.ObtenerDocumento(empresa, sucursal, provId, tipoDoc, preNro, nro).FirstOrDefault();
                }

                if (doc == null)
                {
                    var servicioCreador = (CreadorDocumentoCompra)FabricaNegocios.Instancia.Resolver(typeof(ICreadorDTO <Modelo.Proveedores.DocumentoCompra, DTO.Proveedores.DocumentoCompra>), para);
                    var nuevoDoc        = servicioCreador.Crear(new string[] { empresa, sucursal, provId.ToString(), tipoDoc.ToString(), preNro, nro });
                    if (!nuevoDoc.GetError())
                    {
                        return(nuevoDoc.GetEntidad());
                    }
                }
                //doc = new Modelo.Proveedores.DocumentoCompra();
                return(AutoMapper.Mapper.Map <DTO.Proveedores.DocumentoCompra>(doc));
            }
            catch (Exception ex)
            {
                throw new FaultException(ex.Message);
            }
        }
        protected override void sincronizarDetalle(DataTable dataTable, PropertyInfo propiedadEntidad, object entidad)
        {
            var listadetalle = (propiedadEntidad.GetValue(entidad) as IEnumerable <object>).Cast <Modelo.Proveedores.Aplicacion>().ToList();

            foreach (Modelo.Proveedores.Aplicacion item in listadetalle)
            {
                listadetalle.Add(item);
            }
            Modelo.Proveedores.Aplicacion aplicacion = null;
            foreach (DataRow row in dataTable.Rows)
            {
                if (row.RowState != DataRowState.Unchanged)
                {
                    aplicacion = new Modelo.Proveedores.Aplicacion();
                    //aca tengo que poner el detalle en aplicaciones y en esas cosas
                    var tipo = (TipoDocumento)Enum.Parse(typeof(TipoDocumento), row.Field <String>("Tipo"));
                    switch (tipo)
                    {
                    case TipoDocumento.Factura:
                        var detalle = new Modelo.Proveedores.DocumentoCompra();
                        detalle.Importe            = row.Field <decimal>("Importe");
                        detalle.Aplicado           = row.Field <decimal>("Aplicado");
                        detalle.Fecha              = row.Field <DateTime>("Fecha");
                        detalle.Prenumero          = row.Field <string>("Prenumero");
                        detalle.Numero             = row.Field <string>("Numero");
                        aplicacion.DocumentoCompra = detalle;
                        listadetalle.Add(aplicacion);
                        break;

                    case TipoDocumento.NotaDeCredito:
                        break;

                    case TipoDocumento.NotaDeDebito:
                        break;

                    case TipoDocumento.OrdenDePago:
                        if (row.Field <int>("Numero") != 0)
                        {
                            var detalleOrdenDePago = new Modelo.Proveedores.OrdenDePago();
                            detalleOrdenDePago.Importe  = row.Field <decimal>("Importe") * -1;
                            detalleOrdenDePago.Aplicado = row.Field <decimal>("Aplicado") * -1;
                            aplicacion.OrdenDePago      = detalleOrdenDePago;
                            listadetalle.Add(aplicacion);
                        }
                        break;

                    default:
                        break;
                    }
                }
                //aca tengo que setear de alguna forma la lista. Pero, como me afecta esto?
            }
            propiedadEntidad.SetValue(entidad, listadetalle);
        }