// metodo que reconhece o nao terminal identificadores private bool identificadores(ref Identificadores idents) { int guarda = index; Identificador_r ident_r = new Identificador_r(); ident_r.ident1 = new Identificador(); if (identificador(ref ident_r.ident1)) { if (identificador_r(ref ident_r.ident2)) { idents = ident_r; return(true); } } index = guarda; Identificador ident = new Identificador(); if (identificador(ref ident)) { idents = ident; return(true); } return(false); }
public static int Insert(Identificadores ide) { int retorno = 0; try { IDbConnection objConexao; // Abre a conexao IDbCommand objCommand; // Cria o comando string sql = "INSERT INTO identificadores(ide_estado, ide_identificador, usu_codigo, tid_codigo) " + "VALUES(?ide_estado, ?ide_identificador, ?usu_codigo, ?tid_codigo)"; objConexao = Mapped.Connection(); objCommand = Mapped.Command(sql, objConexao); objCommand.Parameters.Add(Mapped.Parameter("?ide_estado", ide.Ide_estado)); objCommand.Parameters.Add(Mapped.Parameter("?ide_identificador", ide.Ide_identificador)); //Fk objCommand.Parameters.Add(Mapped.Parameter("?usu_codigo", ide.Usu_codigo.Usu_codigo)); objCommand.Parameters.Add(Mapped.Parameter("?tid_codigo", ide.Tid_codigo.Tid_codigo)); objCommand.ExecuteNonQuery(); // utilizado quando cdigo não tem retorno, como seria o caso do SELECT objConexao.Close(); objCommand.Dispose(); objConexao.Dispose(); } catch (Exception e) { retorno = -2; } return(retorno); }
/// <summary> /// Aplica un filtro predeterminado del pais actual, si la clase tiene el atributo correspondiente /// </summary> private void FiltrarVistaPorPais() { if (!(View is ListView)) { return; } var typeInfo = View.ObjectTypeInfo; var filtroPorPaisAttribute = typeInfo.FindAttributes <FiltroPorPaisAttribute>().Any(c => c.Filtrar); var paisPredeterminado = Identificadores.GetInstance(ObjectSpace).PaisPredeterminado; if (!filtroPorPaisAttribute || paisPredeterminado == null) { return; } if (typeInfo.FindMember("Pais") != null) { ((ListView)View).CollectionSource.Criteria["filtro_pais_actual"] = new GroupOperator(GroupOperatorType.Or, new BinaryOperator("Pais.Oid", paisPredeterminado.Oid, BinaryOperatorType.Equal), new NullOperator("Pais")); } else if (typeInfo.FindMember("NacimientoPais") != null) { ((ListView)View).CollectionSource.Criteria["filtro_pais_actual"] = new GroupOperator(GroupOperatorType.Or, new BinaryOperator("NacimientoPais.Oid", paisPredeterminado.Oid, BinaryOperatorType.Equal), new NullOperator("NacimientoPais")); } }
// POST: api/Endereco public IHttpActionResult Identificadores([FromBody] Identificadores identificadores) { if (autenticar.autenticacao(Request, 3) == null) { return(Content(HttpStatusCode.Unauthorized, "Credenciais Invalidas ou Ausentes!")); } Identificadores ide = new Identificadores(); ide.Ide_estado = identificadores.Ide_estado; ide.Ide_identificador = identificadores.Ide_identificador; ide.Usu_codigo = identificadores.Usu_codigo; ide.Tid_codigo = identificadores.Tid_codigo; int retorno = IdentificadoresDB.Insert(ide); if (retorno == -2) { return(BadRequest()); } else { return(Ok()); } }
private void recuperarAutorizacionAction_Execute(object sender, SimpleActionExecuteEventArgs e) { //cargar identificadores y sesión de la AFIP. Si no hay una válida, se inicia una nueva sesión y se guardan los cambios en la DB var objSpace = ( XPObjectSpace )Application.CreateObjectSpace( ); var identificadores = Identificadores.GetInstance(objSpace); if (identificadores.FacturaElectronicaEnte == null) { throw new Exception("Ente de factura electrónica no definida para esta empresa"); } var sesionWsfe = identificadores.FacturaElectronicaEnte.GetSesion(Sesion.ServicioWSFE); objSpace.CommitChanges( ); var comprobante = ( Comprobante )View.CurrentObject; //if ( comprobante.AutorizadaResultado == "A" ) // throw new Exception( "Comprobante ya autorizado" ); var request = new FECompConsultaReq { CbteNro = comprobante.Numero, CbteTipo = Convert.ToInt32(((ComprobanteTipo)comprobante.Tipo.GetMemberValue(AFIPModule.PropertyNameCodigoAfip)).Codigo), PtoVta = comprobante.Sector }; var resp = ConsultarAutorizacion(sesionWsfe, request); if (resp.Errors != null && resp.Errors.Count > 0) { var err = resp.Errors.Aggregate("", (current, error) => current + (error.Code + " - " + error.Msg + "\n")); //TODO errores de Encoding. No encontre otra manera de arreglarlo err = err.Replace("ó", "ó").Replace("ú", "ú"); comprobante.AutorizadaNotas = err; throw new Exception("Error en la operación:\n" + err); } if (resp.ResultGet == null) { throw new Exception("Error en la operación:\nNo se obtuvieron datos para la consulta"); } comprobante.AutorizadaResultado = resp.ResultGet.Resultado; comprobante.AutorizadaNotas = ""; if (resp.ResultGet.Observaciones != null && resp.ResultGet.Observaciones.Count > 0) { var obs = resp.ResultGet.Observaciones.Aggregate("", (current, observacion) => current + (observacion.Code + " - " + observacion.Msg + "\n")); comprobante.AutorizadaNotas += obs; } comprobante.AutorizadaCodigo = resp.ResultGet.CodAutorizacion; if (!string.IsNullOrWhiteSpace(resp.ResultGet.FchVto)) { comprobante.AutorizadaCodigoFecVto = new DateTime(Convert.ToInt32(resp.ResultGet.FchVto.Substring(0, 4)), Convert.ToInt32(resp.ResultGet.FchVto.Substring(4, 2)), Convert.ToInt32(resp.ResultGet.FchVto.Substring(6, 2))); } }
public override void AfterConstruction() { base.AfterConstruction(); Tipo = TipoPersona.Fisica; if (CoreAppLogonParameters.Instance.EmpresaActual(Session) != null) { NacimientoPais = Identificadores.GetInstance(Session).PaisPredeterminado; } }
public override void AfterConstruction( ) { base.AfterConstruction( ); Especie = Identificadores.GetInstance(Session).EspeciePredeterminada; Fecha = DateTime.Today; CantidadCuotas = 1; Cambio = 1; ConceptosIncluidos = ConceptosIncluidos.Productos; }
private void NewObjectViewController_ObjectCreated(object sender, ObjectCreatedEventArgs e) { if (!(e.CreatedObject is Documento)) { return; } var objectSpace = e.ObjectSpace; var nuevoDocumento = ( Documento )e.CreatedObject; //Al inicializar un nuevo objeto Documento, encapsularlo en una nueva Poliza, y este a su vez en una nueva Carpeta //(cuando comienza un nuevo negocio desde cero) var identif = Identificadores.GetInstance(objectSpace); nuevoDocumento.Tipo = objectSpace.FindObject <DocumentoTipo>(CriteriaOperator.Parse("Clase = 'Poliza'")); nuevoDocumento.Poliza = objectSpace.CreateObject <Poliza>( ); nuevoDocumento.Poliza.Carpeta = objectSpace.CreateObject <Carpeta>( ); var interviniente = objectSpace.CreateObject <DocumentoInterviniente>( ); interviniente.Rol = identif.RolAseguradora; interviniente.Participacion = 100; interviniente.Principal = true; nuevoDocumento.Intervinientes.Add(interviniente); nuevoDocumento.Poliza.Aseguradora = interviniente; interviniente = objectSpace.CreateObject <DocumentoInterviniente>( ); interviniente.Rol = identif.RolTomador; interviniente.Participacion = 100; interviniente.Principal = true; nuevoDocumento.Poliza.Tomador = interviniente; interviniente = objectSpace.CreateObject <DocumentoInterviniente>( ); interviniente.Rol = identif.RolOrganizador; interviniente.Participacion = 100; interviniente.Principal = true; interviniente.Interviniente = CoreAppLogonParameters.Instance.EmpresaActual(objectSpace).Persona; nuevoDocumento.Poliza.Organizador = interviniente; /*interv = e.ObjectSpace.CreateObject< DocumentoInterviniente >( ); * interv.Rol = ident.RolProductor; * interv.Participacion = 100; * interv.Principal = true; * nuevoDoc.Poliza.Productor = interv;*/ nuevoDocumento.Intervinientes.Add(nuevoDocumento.Poliza.Aseguradora); nuevoDocumento.Intervinientes.Add(nuevoDocumento.Poliza.Tomador); nuevoDocumento.Intervinientes.Add(nuevoDocumento.Poliza.Organizador); //nuevoDoc.Intervinientes.Add( nuevoDoc.Poliza.Productor ); }
private static void SyncTelefono(PhoneNumberKey phoneNumberKey, IdentificacionTipo identificacionTipo, Contact contact, Persona persona, IObjectSpace objectSpace, Identificadores config) { if (identificacionTipo == null) { identificacionTipo = config.IdentificacionTipoTelOtro; } if (contact.PhoneNumbers.Contains(phoneNumberKey)) { var phone = contact.PhoneNumbers[phoneNumberKey]; SyncIdentificacion(persona, identificacionTipo, objectSpace, phone, phoneNumberKey.ToString( )); } }
// metodo auxiliar para reconhecer a recursividade dos identificadores private bool identificador_r(ref Identificadores idents) { int guarda = index; if (tokens[index].valor.Equals(',')) { index++; Identificador_r ident_r = new Identificador_r(); ident_r.ident1 = new Identificador(); if (identificador(ref ident_r.ident1)) { if (identificador_r(ref ident_r.ident2)) { idents = ident_r; return(true); } } } index = guarda; if (tokens[index].valor.Equals(',')) { index++; Identificador ident = new Identificador(); if (identificador(ref ident)) { idents = ident; return(true); } } return(false); }
private void reversarAction_Execute(object sender, SimpleActionExecuteEventArgs e) { var selectedComprobantes = View.SelectedObjects; if (selectedComprobantes.Count == 0) { throw new UserFriendlyException("Seleccione al menos un comprobante"); } var mensajes = ""; var cloner = new BasicObjectCloner(true); foreach (Comprobante comprobante in selectedComprobantes) { try { if (comprobante.Estado != ComprobanteEstado.Confirmado) { throw new UserFriendlyException("No puede reversar un comprobante no confirmado."); } if (comprobante.ComprobanteReversion != null) { throw new UserFriendlyException("El comprobante ya se encuentra reversado."); } comprobante.SetIgnoreOnChangedRecursive(true); var copy = ( Comprobante )cloner.CloneTo(comprobante, typeof(Comprobante)); copy.Estado = ComprobanteEstado.Pendiente; copy.Fecha = DateTime.Today; var patronLeyendaReversado = Identificadores.GetInstance(ObjectSpace).PatronConceptoReversado; if (!string.IsNullOrEmpty(patronLeyendaReversado)) { copy.Concepto = string.Format(patronLeyendaReversado, copy.Concepto); } copy.ComprobanteReversion = null; copy.Numero = 0; foreach (var item in copy.Items) { item.DebeHaber = item.DebeHaber == DebeHaber.Debe ? DebeHaber.Haber : DebeHaber.Debe; } copy.Save( ); comprobante.ComprobanteReversion = copy; comprobante.Save( ); ConfirmarComprobante(copy); } catch (Exception exc) { mensajes += "\n" + comprobante.Descripcion + ": " + exc.Message; } } ObjectSpace.CommitChanges( ); if (mensajes != "") { throw new UserFriendlyException("Errores en el reversado de uno o más comprobantes:" + mensajes); } View.Refresh( ); }
private void ComprobanteController_ComprobanteAutorizando(object sender, ComprobanteAutorizandoArgs args) { var comprobante = ( Comprobante )args.Comprobante; if (!Convert.ToBoolean(comprobante.Talonario.GetMemberValue(AFIPWsMtxcaModule.PropertyNameFacturaElectronicaMtxca))) { return; } //cargar identificadores y sesión de la AFIP. Si no hay una válida, se inicia una nueva sesión y se guardan los cambios en la DB var objSpace = Application.CreateObjectSpace( ); var identificadores = Identificadores.GetInstance(objSpace); if (identificadores.FacturaElectronicaEnte == null) { throw new Exception("Ente de factura electrónica no definida para esta empresa"); } var sesionWsmtxca = identificadores.FacturaElectronicaEnte.GetSesion(ServiceName); objSpace.CommitChanges( ); if (comprobante.AutorizadaResultado == ResultadoAutorizacion.Autorizada) { throw new Exception("Comprobante ya autorizado por la AFIP"); } ComprobanteCAEResponseType comprobanteResponse; CodigoDescripcionType[] arrayObservaciones; CodigoDescripcionType[] arrayErrores; CodigoDescripcionType evento; var resp = service.autorizarComprobante(GetAuth(sesionWsmtxca), GetComprobanteType(( Comprobante )sender), out comprobanteResponse, out arrayObservaciones, out arrayErrores, out evento); comprobante.AutorizadaNotas = ""; if (arrayErrores != null && arrayErrores.Length > 0) { var err = arrayErrores.Aggregate("", (current, error) => current + (error.codigo + " - " + error.descripcion + "\n")); //TODO errores de Encoding. No encontre otra manera de arreglarlo err = err.Replace("ó", "ó").Replace("ú", "ú"); comprobante.AutorizadaNotas = err; throw new Exception("Error de autorización:\n" + err); } if (comprobanteResponse == null) { throw new Exception("Error de autorización:\nNo se obtuvieron datos"); } comprobante.AutorizadaResultado = resp.ToString( ); if (arrayObservaciones != null && arrayObservaciones.Length > 0) { var obs = arrayObservaciones.Aggregate("", (current, observacion) => current + (observacion.codigo + " - " + observacion.descripcion + "\n")); comprobante.AutorizadaNotas += obs; } comprobante.AutorizadaCodigo = comprobanteResponse.CAE.ToString( ); comprobante.AutorizadaCodigoFecVto = comprobanteResponse.fechaVencimientoCAE; args.Autorizado = comprobante.AutorizadaResultado == ResultadoAutorizacion.Autorizada; }
private void ObtenerCotizacionActionExecute(object sender, SimpleActionExecuteEventArgs e) { //cargar identificadores y sesión de la AFIP. Si no hay una válida, se inicia una nueva sesión y se guardan los cambios en la DB var objSpace = ( XPObjectSpace )Application.CreateObjectSpace( ); var identificadores = Identificadores.GetInstance(objSpace); if (identificadores.FacturaElectronicaEnte == null) { throw new Exception("Ente de factura electrónica no definida para esta empresa"); } var sesionWsmtxca = identificadores.FacturaElectronicaEnte.GetSesion(ServiceName); objSpace.CommitChanges( ); var especie = ( Especie )View.CurrentObject; CodigoDescripcionType[] arrayObservaciones; CodigoDescripcionType[] arrayErrores; CodigoDescripcionType evento; if (especie.Moneda == null) { throw new UserFriendlyException("La especie actual no tiene moneda asignada."); } var monedaAfip = especie.Moneda.GetMemberValue(AFIPModule.PropertyNameCodigoAfip) as AFIP.Moneda; if (monedaAfip == null) { throw new UserFriendlyException("La moneda asociada no tiene equivalencia con la AFIP."); } var especiePredeterminada = Fondos.Identificadores.GetInstance(objSpace).EspeciePredeterminada; if (especiePredeterminada == null) { throw new UserFriendlyException("No hay especie predeterminada definida en el sistema."); } var cotiz = service.consultarCotizacionMoneda(GetAuth(sesionWsmtxca), monedaAfip.Codigo, out arrayErrores, out evento); if (arrayErrores != null && arrayErrores.Length > 0) { var err = arrayErrores.Aggregate("", (current, error) => current + (error.codigo + " - " + error.descripcion + "\n")); //TODO errores de Encoding. No encontre otra manera de arreglarlo err = err.Replace("ó", "ó").Replace("ú", "ú"); throw new Exception("Error en la operación:\n" + err); } var ec = objSpace.CreateObject <EspecieCotizacion>( ); ec.EspecieOrigen = objSpace.GetObject(especie); ec.EspecieDestino = especiePredeterminada; ec.Vendedor = cotiz; ec.Fecha = DateTime.Today; ec.Save( ); objSpace.CommitChanges( ); View.Refresh( ); }
private void SincronizarContactosActionExecute(object sender, SimpleActionExecuteEventArgs e) { var config = Identificadores.GetInstance(ObjectSpace); if (config.CuentaSincContactos == null) { throw new UserFriendlyException("No se configuró la cuenta de Exchange a utilizar para sincronizar contactos."); } if (config.IdentificacionTipoEmail == null) { throw new UserFriendlyException("No se configuró el tipo de identif. para emails, para sincronizar contactos."); } if (config.IdentificacionTipoTelOtro == null) { throw new UserFriendlyException("No se configuró el tipo de identif. para 'otros teléfonos', para sincronizar contactos."); } var service = config.CuentaSincContactos.ExchangeService; var objectSpace = Application.CreateObjectSpace( ); var paresDirecciones = new List <ParPersonaDireccionDireccion>( ); // Get the number of items in the Contacts folder. To keep the response smaller, request only the TotalCount property. var contactsfolder = ContactsFolder.Bind(service, WellKnownFolderName.Contacts); // Instantiate the item view with the number of items to retrieve from the Contacts folder. FindItemsResults <Item> findResults; var view = new ItemView(EWSModule.NumContactosPorLote, 0, OffsetBasePoint.Beginning); var propSet = new PropertySet(BasePropertySet.FirstClassProperties, ContactSchema.HasPicture, ContactSchema.Birthday, ContactSchema.Notes, ContactSchema.WeddingAnniversary, ContactSchema.PhysicalAddresses, ContactSchema.ImAddresses, ContactSchema.PhoneNumbers, ContactSchema.EmailAddresses, ContactSchema.CompleteName, ContactSchema.Attachments); do { // Retrieve the items in the Contacts folder that have the properties you've selected. findResults = contactsfolder.FindItems(view); service.LoadPropertiesForItems(findResults, propSet); processItems(findResults, objectSpace, config, paresDirecciones); if (findResults.NextPageOffset.HasValue) { view.Offset = findResults.NextPageOffset.Value; } } while(findResults.MoreAvailable); objectSpace.CommitChanges( ); objectSpace.Dispose( ); if (!paresDirecciones.IsEmpty( )) { var auxObjectSpace = Application.CreateObjectSpace( ); foreach (var par in paresDirecciones) { var persDir = auxObjectSpace.GetObjectByKey <PersonaDireccion>(par.PersonaDireccion.Oid); persDir.Direccion = auxObjectSpace.GetObjectByKey <Direccion>(par.Direccion.Oid); persDir.Save( ); } auxObjectSpace.CommitChanges( ); } ObjectSpace.Refresh( ); }
private void processItems(IEnumerable <Item> findResults, IObjectSpace objectSpace, Identificadores config, List <ParPersonaDireccionDireccion> paresDirecciones) { foreach (var item in findResults) { if (!(item is Contact)) { continue; } var contact = item as Contact; var persona = objectSpace.FindObject <Persona>(new BinaryOperator(EWSModule.PropertyCodigoEWS, item.Id.UniqueId)) ?? objectSpace.CreateObject <Persona>( ); var modifEWS = ( DateTime? )persona.GetMemberValue(EWSModule.PropertyModifFechaEWS); if (modifEWS.HasValue && modifEWS.Value == item.LastModifiedTime) { continue; } persona.SetMemberValue(EWSModule.PropertyCodigoEWS, item.Id.UniqueId); persona.SetMemberValue(EWSModule.PropertyModifFechaEWS, item.LastModifiedTime); persona.Grupo = CoreAppLogonParameters.Instance.GrupoActual(persona.Session); if (persona.Oid == -1) //Persona nueva { persona.Tipo = TipoPersona.Juridica; //si tiene asignado un apellido, o un telefono celular, inducimos que probablemente es una persona fisica if (!string.IsNullOrEmpty(contact.CompleteName.Surname) || contact.PhoneNumbers.Contains(PhoneNumberKey.MobilePhone)) { persona.Tipo = TipoPersona.Fisica; } } persona.Nombre = contact.CompleteName.FullName; persona.Tratamiento = contact.CompleteName.Title; persona.NombrePila = contact.CompleteName.GivenName; persona.SegundoNombre = contact.CompleteName.MiddleName; persona.ApellidosPaterno = contact.CompleteName.Surname; persona.NombreFantasia = contact.CompleteName.NickName; DateTime?birthday; if (contact.TryGetProperty(ContactSchema.Birthday, out birthday)) { persona.NacimientoFecha = birthday; } persona.Notas = contact.Notes; DateTime?anniversary; if (contact.TryGetProperty(ContactSchema.WeddingAnniversary, out anniversary)) { persona.AniversarioFecha = contact.WeddingAnniversary; } SyncIdentificacion(persona, config.IdentificacionTipoWebTrabajo, objectSpace, contact.BusinessHomePage, "BusinessHomePage"); SyncPropiedad(persona, config.PropiedadPuesto, objectSpace, contact.JobTitle, "JobTitle"); SyncPropiedad(persona, config.PropiedadDepartamento, objectSpace, contact.Department, "Department"); SyncPropiedad(persona, config.PropiedadAsistente, objectSpace, contact.AssistantName, "AssistantName"); SyncPropiedad(persona, config.PropiedadProfesion, objectSpace, contact.Profession, "Profession"); SyncPropiedad(persona, config.PropiedadEsposo, objectSpace, contact.SpouseName, "SpouseName"); SyncIM(ImAddressKey.ImAddress1, config.IdentificacionTipoIM, contact, persona, objectSpace); SyncIM(ImAddressKey.ImAddress2, config.IdentificacionTipoIM, contact, persona, objectSpace); SyncIM(ImAddressKey.ImAddress3, config.IdentificacionTipoIM, contact, persona, objectSpace); SyncDireccion(PhysicalAddressKey.Home, config.DireccionTipoParticular, contact, persona, objectSpace, paresDirecciones); SyncDireccion(PhysicalAddressKey.Business, config.DireccionTipoLaboral, contact, persona, objectSpace, paresDirecciones); SyncDireccion(PhysicalAddressKey.Other, config.DireccionTipoOtra, contact, persona, objectSpace, paresDirecciones); SyncTelefono(PhoneNumberKey.AssistantPhone, config.IdentificacionTipoTelAsistente, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.BusinessFax, config.IdentificacionTipoTelFaxTrabajo, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.BusinessPhone, config.IdentificacionTipoTelTrabajo, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.BusinessPhone2, config.IdentificacionTipoTelTrabajo, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.Callback, config.IdentificacionTipoTelDevLlamada, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.CarPhone, config.IdentificacionTipoTelAuto, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.CompanyMainPhone, config.IdentificacionTipoTelPpalCia, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.HomeFax, config.IdentificacionTipoFaxParticular, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.HomePhone, config.IdentificacionTipoTelParticular, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.HomePhone2, config.IdentificacionTipoTelParticular, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.Isdn, config.IdentificacionTipoTelISDN, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.MobilePhone, config.IdentificacionTipoTelMovil, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.OtherFax, config.IdentificacionTipoFaxOtro, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.OtherTelephone, config.IdentificacionTipoTelOtro, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.Pager, config.IdentificacionTipoTelPager, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.PrimaryPhone, config.IdentificacionTipoTelPrimario, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.RadioPhone, config.IdentificacionTipoTelRadio, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.Telex, config.IdentificacionTipoTelex, contact, persona, objectSpace, config); SyncTelefono(PhoneNumberKey.TtyTddPhone, config.IdentificacionTipoTTY, contact, persona, objectSpace, config); SyncEmail(EmailAddressKey.EmailAddress1, config.IdentificacionTipoEmail, contact, persona, objectSpace); SyncEmail(EmailAddressKey.EmailAddress2, config.IdentificacionTipoEmail, contact, persona, objectSpace); SyncEmail(EmailAddressKey.EmailAddress3, config.IdentificacionTipoEmail, contact, persona, objectSpace); //TODO: buscar otro mecanismo para cargar la foto (manual, con un boton on-demand?) //es demasiado pesado para que sea automatico /*var hasPicture = false; * contact.TryGetProperty( ContactSchema.HasPicture, out hasPicture ); * * if ( hasPicture ) * { * //contact.Load( new PropertySet( ItemSchema.Attachments ) ); * var pictureAttachment = contact.GetContactPictureAttachment( ); * if ( pictureAttachment != null ) * { * var ms = new MemoryStream( ); * pictureAttachment.Load( ms ); * p.Imagen = Image.FromStream( ms ); * } * }*/ persona.Save( ); Thread.Sleep(1); } }
private void button7_Click(object sender, EventArgs e) { Identificadores identificadores = new Identificadores(); }
private void ComprobanteController_ComprobanteAutorizando(object sender, ComprobanteAutorizandoArgs args) { var comprobante = (Comprobante)args.Comprobante; if (!Convert.ToBoolean(comprobante.Talonario.GetMemberValue(AFIPModule.PropertyNameFacturaElectronicaWsfeV1))) { return; } //cargar identificadores y sesión de la AFIP. Si no hay una válida, se inicia una nueva sesión y se guardan los cambios en la DB var objSpace = Application.CreateObjectSpace( ); var identificadores = Identificadores.GetInstance(objSpace); if (identificadores.FacturaElectronicaEnte == null) { throw new Exception("Ente de factura electrónica no definida para esta empresa"); } var sesionWsfe = identificadores.FacturaElectronicaEnte.GetSesion(Sesion.ServicioWSFE); objSpace.CommitChanges( ); if (comprobante.AutorizadaResultado == ResultadoAutorizacion.Autorizada) { throw new Exception("Comprobante ya autorizado por la AFIP"); } var resp = ObtenerAutorizacion(sesionWsfe, GetDetRequest(comprobante)); comprobante.AutorizadaNotas = ""; if (resp.Errors != null && resp.Errors.Count > 0) { var err = resp.Errors.Aggregate("", (current, error) => current + (error.Code + " - " + error.Msg + "\n")); //TODO errores de Encoding. No encontre otra manera de arreglarlo err = err.Replace("ó", "ó").Replace("ú", "ú"); comprobante.AutorizadaNotas = err; throw new Exception("Error de autorización:\n" + err); } if (resp.FeCabResp == null || resp.FeDetResp == null) { throw new Exception("Error de autorización:\nNo se obtuvieron datos"); } comprobante.AutorizadaResultado = resp.FeCabResp.Resultado; if (resp.FeDetResp.Count == 1) { if (resp.FeDetResp[0].Observaciones != null && resp.FeDetResp[0].Observaciones.Count > 0) { var obs = resp.FeDetResp[0].Observaciones.Aggregate("", (current, observacion) => current + (observacion.Code + " - " + observacion.Msg + "\n")); comprobante.AutorizadaNotas += obs; } comprobante.AutorizadaCodigo = resp.FeDetResp[0].CAE; if (!string.IsNullOrWhiteSpace(resp.FeDetResp[0].CAEFchVto)) { comprobante.AutorizadaCodigoFecVto = new DateTime(Convert.ToInt32(resp.FeDetResp[0].CAEFchVto.Substring(0, 4)), Convert.ToInt32(resp.FeDetResp[0].CAEFchVto.Substring(4, 2)), Convert.ToInt32(resp.FeDetResp[0].CAEFchVto.Substring(6, 2))); } } args.Autorizado = comprobante.AutorizadaResultado == ResultadoAutorizacion.Autorizada; }
private void ComprobanteExportAndMailReportAction_Execute(object sender, SingleChoiceActionExecuteEventArgs e) { if (e.SelectedObjects.Count == 0) { return; } var rutaBase = RutaExpComprobantes; if (string.IsNullOrEmpty(rutaBase)) { throw new UserFriendlyException("No está definida la ruta para exportación de comprobantes"); } var cuentaEmail = Identificadores.GetInstance(ObjectSpace).CuentaEmailFacturacion; if (cuentaEmail == null) { throw new UserFriendlyException("No está definida la cuenta de mail para el envío de comprobantes"); } var plantillaMensaje = Identificadores.GetInstance(ObjectSpace).PlantillaMensajeFacturacion; var plantillaContenido = plantillaMensaje != null ? plantillaMensaje.Contenido : ""; foreach (Comprobante obj in e.SelectedObjects) { var criteria = (CriteriaOperator) new BinaryOperator(View.ObjectTypeInfo.KeyMember.Name, ObjectSpace.GetKeyValue(obj)); var reportData = ObjectSpace.GetObject(( IReportData )e.SelectedChoiceActionItem.Data); var rep = ( XafReport )reportData.LoadReport(ObjectSpace); rep.SetFilteringObject(new LocalizedCriteriaWrapper(View.ObjectTypeInfo.Type, criteria)); var ruta = expandFilename(obj, rutaBase); var fileName = Path.GetFileName(ruta); var ms = new MemoryStream( ); rep.ExportToPdf(ms); var mail = new MailMessage( ); mail.Attachments.Add(new Attachment(ms, fileName, "application/pdf")); var cliente = ObjectSpace.FindObject <Cliente>(new BinaryOperator("Persona.Oid", obj.Destinatario.Oid)); if (cliente == null) { return; } var destinatario = cliente.EmailEnvioFacturacion; if (destinatario == null) { continue; } mail.From = new MailAddress(cuentaEmail.DireccionEmail, cuentaEmail.NombreMostrar); mail.To.Add(new MailAddress(destinatario.Valor, cliente.Persona.Nombre)); mail.CC.Add(new MailAddress("*****@*****.**", "Info (Facturacion)")); mail.Subject = fileName; mail.Body = plantillaContenido; mail.IsBodyHtml = true; cuentaEmail.SendMail(mail); } }
private void recuperarAutorizacionAction_Execute(object sender, SimpleActionExecuteEventArgs e) { //cargar identificadores y sesión de la AFIP. Si no hay una válida, se inicia una nueva sesión y se guardan los cambios en la DB var objSpace = ( XPObjectSpace )Application.CreateObjectSpace( ); var identificadores = Identificadores.GetInstance(objSpace); if (identificadores.FacturaElectronicaEnte == null) { throw new Exception("Ente de factura electrónica no definida para esta empresa"); } var sesionWsmtxca = identificadores.FacturaElectronicaEnte.GetSesion(ServiceName); objSpace.CommitChanges( ); var comprobante = ( Comprobante )View.CurrentObject; //if ( comprobante.AutorizadaResultado == "A" ) // throw new Exception( "Comprobante ya autorizado" ); CodigoDescripcionType[] arrayObservaciones; CodigoDescripcionType[] arrayErrores; CodigoDescripcionType evento; var consultaComprobanteRequest = new ConsultaComprobanteRequestType( ) { codigoTipoComprobante = Convert.ToInt16(((ComprobanteTipo)comprobante.Tipo.GetMemberValue(AFIPModule.PropertyNameCodigoAfip)).Codigo), numeroPuntoVenta = ( short )comprobante.Sector, numeroComprobante = comprobante.Numero }; var resp = service.consultarComprobante(GetAuth(sesionWsmtxca), consultaComprobanteRequest, out arrayObservaciones, out arrayErrores, out evento); if (arrayErrores != null && arrayErrores.Length > 0) { var err = arrayErrores.Aggregate("", (current, error) => current + (error.codigo + " - " + error.descripcion + "\n")); //TODO errores de Encoding. No encontre otra manera de arreglarlo err = err.Replace("ó", "ó").Replace("ú", "ú"); comprobante.AutorizadaNotas = err; throw new Exception("Error en la operación:\n" + err); } if (resp == null) { throw new Exception("Error en la operación:\nNo se obtuvieron datos para la consulta"); } //comprobante.AutorizadaResultado = resp.; comprobante.AutorizadaNotas = ""; if (arrayObservaciones != null && arrayObservaciones.Length > 0) { var obs = arrayObservaciones.Aggregate("", (current, observacion) => current + (observacion.codigo + " - " + observacion.descripcion + "\n")); comprobante.AutorizadaNotas += obs; } comprobante.AutorizadaCodigo = resp.codigoAutorizacion.ToString( ); comprobante.AutorizadaCodigoFecVto = resp.fechaVencimiento; }
protected override void GenerarPagoAnticipo(Dictionary <int, decimal> saldos) { //TODO: dependencia fuerte a XPO var session = (( XPObjectSpace )ObjectSpace).Session; var identificadores = Identificadores.GetInstance(ObjectSpace); var anticipoComprobanteTipo = identificadores.AnticipoComprobanteTipo; var anticipoConcepto = identificadores.AnticipoConcepto; var anticipoCuenta = identificadores.AnticipoCuenta; var empresaActual = CoreAppLogonParameters.Instance.EmpresaActual(ObjectSpace); var especiePredeterminada = Core.Fondos.Identificadores.GetInstance(ObjectSpace).EspeciePredeterminada; if (anticipoComprobanteTipo == null || anticipoConcepto == null || anticipoCuenta == null || especiePredeterminada == null) { throw new UserFriendlyException("Faltan valores de configuración para la generación de anticipos. Por favor revise."); } var compAnticipo = ObjectSpace.CreateObject <Comprobante>( ); var ordenPago = ( OrdenPago )View.CurrentObject; var originante = ordenPago.Destinatario; var ultimoNumero = session.Evaluate <Comprobante>(CriteriaOperator.Parse("MAX(Numero)"), CriteriaOperator.Parse("Originante = ? AND Tipo = ? AND Sector = 1", originante, anticipoComprobanteTipo)); ultimoNumero = ultimoNumero != null ? ( int )ultimoNumero + 1 : 1; compAnticipo.Empresa = empresaActual; compAnticipo.Sector = 1; compAnticipo.Numero = ( int )ultimoNumero; compAnticipo.Destinatario = empresaActual.Persona; compAnticipo.Originante = originante; compAnticipo.Cuenta = anticipoCuenta; compAnticipo.Especie = especiePredeterminada; compAnticipo.Cambio = 1; decimal valorTotalLocalAnticipo = 0; foreach (var saldo in saldos) { if (saldo.Key == especiePredeterminada.Oid) { valorTotalLocalAnticipo += saldo.Value; } else { var itm = ordenPago.Items.FirstOrDefault(item => item.Especie.Moneda.Oid == saldo.Key); if (itm == null) //nunca deberia pasar esto { throw new UserFriendlyException("No se pudo convertir el saldo del pago, a un anticipo en moneda local."); } valorTotalLocalAnticipo += saldo.Value * itm.Cambio; } } var comprobanteItem = ObjectSpace.CreateObject <ComprobanteItem>( ); comprobanteItem.Cantidad = 1; comprobanteItem.Concepto = anticipoConcepto; comprobanteItem.PrecioUnitario = valorTotalLocalAnticipo; compAnticipo.Items.Add(comprobanteItem); ordenPago.ComprobanteAnticipo = compAnticipo; }
private void SincronizarEmailsActionExecute(object sender, SimpleActionExecuteEventArgs e) { var config = Identificadores.GetInstance(ObjectSpace); if (config.CuentaSincEmails == null) { throw new UserFriendlyException("No se configuró la cuenta de Exchange a utilizar para sincronizar emails."); } if (config.ActividadTipoEmail == null) { throw new UserFriendlyException("No se configuró el tipo de actividad CRM para sincronizar emails."); } if (config.ActividadEstadoEmailPendiente == null) { throw new UserFriendlyException("No se configuró el estado de actividad CRM para los emails con marca de pendiente."); } if (config.ActividadEstadoEmailCompletado == null) { throw new UserFriendlyException("No se configuró el estado de actividad CRM para los emails con marca de completado."); } var service = config.CuentaSincEmails.ExchangeService; var objectSpace = Application.CreateObjectSpace( ); var clientes = objectSpace.GetObjects(typeof(Cliente)); var patrones = (from Cliente cliente in clientes where !string.IsNullOrEmpty(cliente.PatronEmailEntrante) select new ClientePatron { Cliente = cliente, Patron = new Regex(cliente.PatronEmailEntrante) }).ToList( ); var results = service.FindItems(WellKnownFolderName.Inbox, "", new ItemView(2000)); service.LoadPropertiesForItems(results, new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.NormalizedBody, ItemSchema.Attachments)); foreach (var email in results.OfType <EmailMessage>( ).Select(item => item)) { var actividad = objectSpace.FindObject <Actividad>(new BinaryOperator(EWSModule.PropertyCodigoEWS, email.Id.UniqueId)) ?? objectSpace.CreateObject <Actividad>( ); var modifEWS = ( DateTime? )actividad.GetMemberValue(EWSModule.PropertyModifFechaEWS); if (modifEWS.HasValue && modifEWS.Value == email.LastModifiedTime) { continue; } actividad.SetMemberValue(EWSModule.PropertyCodigoEWS, email.Id.UniqueId); actividad.SetMemberValue(EWSModule.PropertyModifFechaEWS, email.LastModifiedTime); actividad.Grupo = CoreAppLogonParameters.Instance.GrupoActual(actividad.Session); actividad.Tipo = objectSpace.GetObjectByKey <ActividadTipo>(config.ActividadTipoEmail.Oid); actividad.Asunto = email.Subject; actividad.Contenido = email.NormalizedBody.Text; if (email.Flag != null) { if (email.Flag.FlagStatus == ItemFlagStatus.Flagged) { actividad.Estado = objectSpace.GetObjectByKey <ActividadEstado>(config.ActividadEstadoEmailPendiente.Oid); } else if (email.Flag != null && email.Flag.FlagStatus == ItemFlagStatus.Complete) { actividad.Estado = objectSpace.GetObjectByKey <ActividadEstado>(config.ActividadEstadoEmailCompletado.Oid); } } actividad.DireccionRemitente = email.From.Address; actividad.DireccionDestinatario = email.ToRecipients.Aggregate("", (current, dir) => current + (dir.Address + ";")); if (actividad.DireccionDestinatario.Length > 0) { actividad.DireccionDestinatario = actividad.DireccionDestinatario.Remove(actividad.DireccionDestinatario.Length - 1); } actividad.DireccionCC = email.CcRecipients.Aggregate("", (current, dir) => current + (dir.Address + ";")); if (actividad.DireccionCC.Length > 0) { actividad.DireccionCC = actividad.DireccionCC.Remove(actividad.DireccionCC.Length - 1); } actividad.DireccionBCC = email.BccRecipients.Aggregate("", (current, dir) => current + (dir.Address + ";")); if (actividad.DireccionBCC.Length > 0) { actividad.DireccionBCC = actividad.DireccionBCC.Remove(actividad.DireccionBCC.Length - 1); } actividad.Inicio = actividad.Fin = email.DateTimeReceived; foreach (var patron in patrones.Where(patron => patron.Patron.IsMatch(email.From.Address))) { actividad.Cliente = patron.Cliente; break; } actividad.Save( ); } objectSpace.CommitChanges( ); ObjectSpace.Refresh( ); }