예제 #1
0
        public int InsertarComprobante(string sucursal, string nofactura, DateTime fecha, DateTime fechavencimiento, int tipocomprobante,
                                       int idcentrocosto, int tipofactura, int contable, int condicioncompra,
                                       int idproveedor)
        {
            int result;

            using (Context = new Entities())
            {
                Comprobantes c = new Comprobantes();
                c.Sucursal          = sucursal;
                c.NoFactura         = nofactura;
                c.Fecha             = fecha;
                c.FechaVencimiento  = fechavencimiento;
                c.IdTipoComprobante = tipocomprobante;
                c.IdCentroCosto     = idcentrocosto;
                c.IdTipoFactura     = tipofactura;
                c.Contable          = contable;
                c.IdCondicionCompra = condicioncompra;
                c.IdProveedor       = idproveedor;
                Context.Comprobantes.Add(c);
                Context.SaveChanges();
                result = 1;
                return(result);
            }
        }
예제 #2
0
        private void GenerarArchivoDetalle(Comprobantes obj)
        {
            string     filename = GetFolder(obj) + obj.GetFileNameDetalle();
            TextWriter tw       = new StreamWriter(filename, false, Encoding.Default);

            tw.Write((businessLogic as ComprobantesBL).GetStreamDetalle(obj));
            tw.Close();
        }
예제 #3
0
        public String GetStreamDetalle(Comprobantes comp)
        {
            StringBuilder ret = new StringBuilder();

            foreach (DetallesComprobantes item in comp.Items)
            {
                //Campo 1: Tipo de Comprobante
                ret.Append(comp.Tipo.Codigo.Substring(0, 2));
                //Campo 2: Controlador Fiscal
                ret.Append(" ");
                //Campo 3: Fecha del Comprobante
                ret.Append(comp.Emision.ToString("yyyyMMdd"));
                //Campo 4: Punto de Venta
                ret.Append(comp.NroCbante.Substring(0, 4));
                //Campo 5: Número de Comprobante
                ret.Append(comp.NroCbante.Substring(5, 8));
                //Campo 6: Número de Comprobante Registrado
                ret.Append(comp.NroCbante.Substring(5, 8));
                //Campo 7: Cantidad
                ret.Append(item.Cantidad.ToString().PadLeft(7, '0').PadRight(12, '0'));
                //Campo 8: Unidad de medida
                ret.Append("07");                  //UNIDAD
                //Campo 9: Precio unitario - 16 caracteres
                ret.Append((item.ImpUnitarioNeto * (1 - comp.Descuento / 100)).ToString("#0.#00").Replace(".", "").Replace(",", "").PadLeft(16, '0'));
                //Campo 10: Importe de bonificación  - 15 caracteres
                ret.Append("000000000000000");
                //Campo 11: Importe de ajuste  - 16 caracteres
                ret.Append("0000000000000000");
                //Campo 12: Subtotal por registro  - 16 caracteres
                //precio unitario (campo 9) multiplicado por la cantidad (campo 7) , menos el importe de la bonificación si las hubiere (campo 10) más el importe de ajuste (campo 11) de corresponder
                ret.Append(((item.ImpTotalNeto * (1 - comp.Descuento / 100)) * item.Cantidad).ToString("#0.#00").Replace(".", "").Replace(",", "").PadLeft(16, '0'));
                //Campo 13: Alícuota de IVA aplicable
                ret.Append(item.TipoIva.Alicuota.ToString("#0.#0").Replace(".", "").Replace(",", "").PadLeft(4, '0'));
                //Campo 14: Indicación de exento o gravado
                if (item.TipoIva.Alicuota != 0)
                {
                    ret.Append('G');
                }
                else
                {
                    ret.Append('E');
                }
                //Campo 15: Indicación de anulación
                if (item.Comprobante.Estado == Comprobantes.EstadoAnulado)
                {
                    ret.Append("A");
                }
                else
                {
                    ret.Append(" ");
                }
                //Campo 16: Diseño libre (nombre del producto)
                ret.Append(item.Producto.Nombre.PadRight(75, ' '));
                //Fin de registro
                ret.Append("\r\n");                // "\r\n";
            }
            return(ret.ToString());
        }
예제 #4
0
        public virtual IList GetDTODetalle(Comprobantes comp)
        {
            ArrayList list = new ArrayList();

            foreach (DetallesComprobantes item in comp.Items)
            {
                list.Add(new DetallesComprobantesDTO(item));
            }
            return(list);
        }
예제 #5
0
        public string GetFolder(Comprobantes obj)
        {
            DirectoryInfo folderInfo = new DirectoryInfo(GeneralSettings.Instance.FilesFolder + @"\" + obj.Tipo.Nombre + @"\" + obj.NroCbante);

            if (!folderInfo.Exists)
            {
                folderInfo.Create();
            }
            return(folderInfo.FullName + @"\");
        }
예제 #6
0
        public override Persistent GetNewInstance()
        {
            EmpresasBL empBL = new EmpresasBL();

            empBL.SetParameters(DBConnection);

            Comprobantes newComp = (Comprobantes)Activator.CreateInstance(PersistentType);

            newComp.Empresa   = empBL.GetObject(GeneralSettings.Instance.IdEmpresaDefault) as Empresas;
            newComp.Supertipo = tipo;
            return(newComp);
        }
예제 #7
0
        //#region WebService de Requerimiento de CAE (FEAutRequest)
        //protected string GetCAE(Comprobantes comprobante, out string nroComprobante)
        //{
        //    string result = String.Empty;
        //    LoginTickets loginTicket = GetLoginTicket(comprobante.Empresa);
        //    nroComprobante = "-1";
        //    if (loginTicket != null)
        //    {
        //        FEAuthRequest authRequest = new FEAuthRequest();
        //        authRequest.Token = loginTicket.Token;
        //        authRequest.Sign = loginTicket.Sign;
        //        authRequest.cuit = Convert.ToInt64(comprobante.Empresa.Cuit.Replace("-", ""));
        //        ComprobantesAdapter adapter = new ComprobantesAdapter(comprobante);
        //        FERequest request = adapter.GenerarFERequest(comprobante.Id);
        //        Service service = new Service();
        //        FEResponse response = service.FEAutRequest(authRequest, request);

        //        if (response.FedResp != null && response.FedResp[0].resultado == "R" && response.FedResp[0].motivo.StartsWith("11") && response.FedResp[0].cae == "NULL")
        //        {
        //            //Caso en que falla por correlatividad de comprobantes
        //            FERecuperaLastCMPResponse ultimoComEmitido = service.FERecuperaLastCMPRequest(authRequest, adapter.GenerarFELastCMPtype());
        //            comprobante.NroCbante = comprobante.NroCbante.Substring(0, 5) + (ultimoComEmitido.cbte_nro + 1).ToString().PadLeft(8, '0');
        //            adapter = new ComprobantesAdapter(comprobante);
        //            request = new FERequest();
        //            //Generación de otro ID
        //            long idDate = DateTime.Now.Year * 10000000000;
        //            idDate += DateTime.Now.Month * 100000000;
        //            idDate += DateTime.Now.Day * 1000000;
        //            idDate += DateTime.Now.Hour * 10000;
        //            idDate += DateTime.Now.Minute * 100;
        //            idDate += DateTime.Now.Second;
        //            request = adapter.GenerarFERequest(idDate);
        //            service = new Service();
        //            response = service.FEAutRequest(authRequest, request);
        //        }
        //        else
        //        {
        //            if (response.FedResp != null && response.FedResp[0].resultado == "R" && !String.IsNullOrEmpty(response.FedResp[0].motivo))
        //            {
        //                ArrayList motivos = new ArrayList();
        //                motivos.AddRange(response.FedResp[0].motivo.Split(";".ToCharArray()));
        //                StringBuilder logMotivos = new StringBuilder();
        //                if (motivos.Contains("01")) logMotivos.Append("01 \"La cuit informada no corresponde a un responsable inscripto en el iva activo\\n");
        //                if (motivos.Contains("02")) logMotivos.Append("02 \"La cuit informada no se encuentra autorizada a emitir comprobantes electronicos originales o el periodo de inicio autorizado es posterior al de la generacion de la solicitud\"\n");
        //                if (motivos.Contains("03")) logMotivos.Append("03 \"La cuit informada registra inconvenientes con el domicilio fiscal\"\n");
        //                if (motivos.Contains("04")) logMotivos.Append("04 \"El punto de venta informado no se encuentra declarado para ser utilizado en el presente regimen\"\n");
        //                if (motivos.Contains("05")) logMotivos.Append("05 \"La fecha del comprobante indicada no puede ser anterior en mas de cinco dias, si se trata de una venta, o anterior o posterior en mas de diez dias, si se trata de una prestacion de servicios, consecutivos de la fecha de remision del archivo art. 22 De la rg nro 2177-\"\n");
        //                if (motivos.Contains("06")) logMotivos.Append("06 \"La cuit informada no se encuentra autorizada a emitir comprobantes clase \"a\"\"\n");
        //                if (motivos.Contains("07")) logMotivos.Append("07 \"Para la clase de comprobante solicitado -comprobante clase a- debera consignar en el campo codigo de documento identificatorio del comprador el codigo \"80\"\n");
        //                if (motivos.Contains("08")) logMotivos.Append("08 \"La cuit indicada en el campo nro de identificacion del comprador es invalida\"\n");
        //                if (motivos.Contains("09")) logMotivos.Append("09 \"La cuit indicada en el campo nro de identificacion del comprador no existe en el padron unico de contribuyentes\"\n");
        //                if (motivos.Contains("10")) logMotivos.Append("10 \"La cuit indicada en el campo nro de identificacion del comprador no corresponde a un responsable inscripto en el iva activo\"\n");
        //                if (motivos.Contains("11")) logMotivos.Append("11 \"El nro de comprobante desde informado no es correlativo al ultimo nro de comprobante registrado/hasta solicitado para ese tipo de comprobante y punto de venta\"\n");
        //                if (motivos.Contains("12")) logMotivos.Append("12 \"El rango informado se encuentra autorizado con anterioridad para la misma cuit, tipo de comprobante y punto de venta\"\n");
        //                if (motivos.Contains("13")) logMotivos.Append("13 \"La cuit indicada se encuentra comprendida en el regimen establecido por la resolucion general nro 2177 y/o en el titulo I de la resolucion general nro 1361 art. 24 De la rg nro 2177\"\n");
        //                if (logMotivos.Length > 0) {
        //                    Logger.EscribirEventLog(logMotivos.ToString());
        //                }
        //            }
        //        }
        //        nroComprobante = comprobante.NroCbante;
        //        try
        //        {
        //            result = response.FedResp[0].cae;
        //        }
        //        catch (Exception ex)
        //        {
        //            nroComprobante = "-1";
        //            result = ex.Message;
        //        }
        //    }
        //    return result;
        //}
        //#endregion
        #endregion


        private string ReenviarComprobante(Comprobantes obj)
        {
            try
            {
                EnviarComprobante(obj, false);
            }
            catch (Exception)
            {
                return("No se pudo enviar el comprobante a la cuenta de email del cliente");
            }
            return(string.Empty);
        }
예제 #8
0
 //TODO: Repetido
 private void PersistirUltimoNroCbanteComprobante(Comprobantes comp)
 {
     if (comp.Tipo.Codigo == ConfigurationManager.AppSettings["tipoComprobante.FacturaA"])
     {
         comp.Empresa.UltimaFacturaA = comp.NroCbante;
     }
     else if (comp.Tipo.Codigo == ConfigurationManager.AppSettings["tipoComprobante.FacturaB"])
     {
         comp.Empresa.UltimaFacturaB = comp.NroCbante;
     }
     else if (comp.Tipo.Codigo == ConfigurationManager.AppSettings["tipoComprobante.FacturaC"])
     {
         comp.Empresa.UltimaFacturaC = comp.NroCbante;
     }
     else if (comp.Tipo.Codigo == ConfigurationManager.AppSettings["tipoComprobante.FacturaE"])
     {
         comp.Empresa.UltimaFacturaE = comp.NroCbante;
     }
     else if (comp.Tipo.Codigo == ConfigurationManager.AppSettings["tipoComprobante.NotaDebitoA"])
     {
         comp.Empresa.UltimaNotaDebitoA = comp.NroCbante;
     }
     else if (comp.Tipo.Codigo == ConfigurationManager.AppSettings["tipoComprobante.NotaDebitoB"])
     {
         comp.Empresa.UltimaNotaDebitoB = comp.NroCbante;
     }
     else if (comp.Tipo.Codigo == ConfigurationManager.AppSettings["tipoComprobante.NotaDebitoC"])
     {
         comp.Empresa.UltimaNotaDebitoC = comp.NroCbante;
     }
     else if (comp.Tipo.Codigo == ConfigurationManager.AppSettings["tipoComprobante.NotaDebitoE"])
     {
         comp.Empresa.UltimaNotaDebitoE = comp.NroCbante;
     }
     else if (comp.Tipo.Codigo == ConfigurationManager.AppSettings["tipoComprobante.NotaCreditoA"])
     {
         comp.Empresa.UltimaNotaCreditoA = comp.NroCbante;
     }
     else if (comp.Tipo.Codigo == ConfigurationManager.AppSettings["tipoComprobante.NotaCreditoB"])
     {
         comp.Empresa.UltimaNotaCreditoB = comp.NroCbante;
     }
     else if (comp.Tipo.Codigo == ConfigurationManager.AppSettings["tipoComprobante.NotaCreditoC"])
     {
         comp.Empresa.UltimaNotaCreditoC = comp.NroCbante;
     }
     else if (comp.Tipo.Codigo == ConfigurationManager.AppSettings["tipoComprobante.NotaCreditoE"])
     {
         comp.Empresa.UltimaNotaCreditoE = comp.NroCbante;
     }
 }
예제 #9
0
 private string AnularComprobante(Comprobantes obj)
 {
     obj.Anular();
     try
     {
         EnviarComprobante(obj, obj.VerReporte);                //true;
     }
     catch (Exception ex)
     {
         Logger.EscribirEventLog(ex);
         return("No se pudo enviar el comprobante a la cuenta de email del cliente");
     }
     return("");
 }
예제 #10
0
        public static string GetCAE(XmlDocument xmlEmpresa, XmlDocument xmlComprobante, out string logError, out string nroComprobante, ref long idCabecera)
        {
            XmlNode      node;
            Comprobantes comprobante = new Comprobantes();

            node = xmlComprobante.SelectSingleNode("//cuitCliente");
            comprobante.Cliente      = new Clientes();
            comprobante.Cliente.CUIT = node.InnerXml;
            node = xmlComprobante.SelectSingleNode("//numeroComprobante");
            comprobante.NroCbante = node.InnerXml;
            node                     = xmlComprobante.SelectSingleNode("//tipo");
            comprobante.Tipo         = new TiposComprobantes();
            comprobante.Tipo.Codigo  = node.InnerXml;
            node                     = xmlComprobante.SelectSingleNode("//emision");
            comprobante.Emision      = Convert.ToDateTime(node.InnerXml, culture);
            node                     = xmlComprobante.SelectSingleNode("//subtotalNeto ");
            comprobante.SubtotalNeto = Convert.ToInt32(node.InnerXml);
            node                     = xmlComprobante.SelectSingleNode("//iva1");
            comprobante.Iva1         = Convert.ToDouble(node.InnerXml);
            node                     = xmlComprobante.SelectSingleNode("//iva2");
            comprobante.Iva2         = Convert.ToDouble(node.InnerXml);
            node                     = xmlComprobante.SelectSingleNode("//total");
            comprobante.Total        = Convert.ToDouble(node.InnerXml);
            node                     = xmlComprobante.SelectSingleNode("//idComprobante");
            comprobante.Id           = Convert.ToInt32(node.InnerXml);

            comprobante.Empresa = new Empresas();
            node = xmlEmpresa.SelectSingleNode("//dnOrigen");
            comprobante.Empresa.DNOrigen = node.InnerXml;
            node = xmlEmpresa.SelectSingleNode("//dnDestino");
            comprobante.Empresa.DNDestino = node.InnerXml;
            node = xmlEmpresa.SelectSingleNode("//uniqueID");
            comprobante.Empresa.Id = Convert.ToInt32(node.InnerXml);
            node = xmlEmpresa.SelectSingleNode("//senderName");
            comprobante.Empresa.SenderName = node.InnerXml;
            node = xmlEmpresa.SelectSingleNode("//cuit");
            comprobante.Empresa.Cuit = node.InnerXml;

            /*
             */
            comprobante.Empresa.CAI = "CAI1455";
            comprobante.Empresa.CertificadoDestinoFileName = @"C:\Vero\Proyectos\MFD\MFDHOMO\Certificados\viset\CRT-root.cer";
            comprobante.Empresa.CertificadoFileName        = @"C:\Vero\Proyectos\MFD\MFDHOMO\Certificados\viset\viset.crt";
            comprobante.Empresa.CertificadoPassword        = "******";
            comprobante.Empresa.LoginTicketFileName        = @"C:\Vero\Proyectos\MFD\MFDHOMO\Certificados\viset\LoginTicketRequest.xml";
            //
            return(GetCAE(comprobante, out logError, out nroComprobante, ref idCabecera, false));
        }
예제 #11
0
        private int?GetUltimoNroComprobante(Comprobantes comprobante)
        {
            LoginTickets loginTicket = GetLoginTicket(comprobante.Empresa);

            if (loginTicket != null)
            {
                FEAuthRequest authRequest = new FEAuthRequest();
                authRequest.Token = loginTicket.Token;
                authRequest.Sign  = loginTicket.Sign;
                authRequest.cuit  = Convert.ToInt64(comprobante.Empresa.Cuit.Replace("-", ""));
                ComprobantesAdapter adapter = new ComprobantesAdapter(comprobante);
                Service             service = new Service();
                return(((FERecuperaLastCMPResponse)(service.FERecuperaLastCMPRequest(authRequest, adapter.GenerarFELastCMPtype()))).cbte_nro);
            }
            return(null);
        }
예제 #12
0
        private void GenerarXML(Comprobantes obj)
        {
            string filename = GetFolder(obj) + obj.GetFileName("xml");

            XmlTextWriter writer = new XmlTextWriter(filename, Encoding.GetEncoding("iso-8859-1"));             //Encoding.UTF8

            writer.Formatting = Formatting.Indented;
            XmlDocument factura = new ComprobantesAdapter(obj).GenerarXml();

            factura.WriteTo(writer);
            writer.Flush();
            writer.Close();
            if (!File.Exists(GetFolder(obj) + "Factura_v1.22.xsl"))
            {
                File.Copy(AppDomain.CurrentDomain.BaseDirectory + "Factura_v1.22.xsl", GetFolder(obj) + "Factura_v1.22.xsl");
            }
        }
예제 #13
0
        public static long?GetUltimoId(XmlDocument xmlEmpresa)
        {
            XmlNode      node;
            Comprobantes comprobante = new Comprobantes();

            comprobante.Empresa = new Empresas();
            node = xmlEmpresa.SelectSingleNode("//dnOrigen");
            comprobante.Empresa.DNOrigen = node.InnerXml;
            node = xmlEmpresa.SelectSingleNode("//dnDestino");
            comprobante.Empresa.DNDestino = node.InnerXml;
            node = xmlEmpresa.SelectSingleNode("//uniqueID");
            comprobante.Empresa.Id = Convert.ToInt32(node.InnerXml);
            node = xmlEmpresa.SelectSingleNode("//senderName");
            comprobante.Empresa.SenderName = node.InnerXml;
            node = xmlEmpresa.SelectSingleNode("//cuit");
            comprobante.Empresa.Cuit = node.InnerXml;
            return(GetUltimoId(comprobante));
        }
예제 #14
0
        public override bool RequiredFieldsValidator(Persistent persistentObject, ErrorMessages messages)
        {
            bool         result      = base.RequiredFieldsValidator(persistentObject, messages);
            Comprobantes comprobante = persistentObject as Comprobantes;

            result &= new RequiredFieldValidator(messages).Validate(comprobante.Tipo, "Debe ingresar un Tipo");
            result &= new RequiredFieldValidator(messages).Validate(comprobante.TipoPago, "Debe ingresar un Tipo de Pago");
            result &= new RequiredFieldValidator(messages).Validate(comprobante.Cliente, "Debe ingresar un Cliente");
            DateTime fechaEmisionCorta = Convert.ToDateTime(comprobante.Emision.ToShortDateString());
            DateTime fechaHoyCorta     = Convert.ToDateTime(DateTime.Now.ToShortDateString());

            /*bool fechaValida = (fechaEmisionCorta >= fechaHoyCorta) ;
             * if(!fechaValida ){
             *      messages.Add("La fecha de emisión deber ser mayor o igual a la fecha actual");
             * }
             * result &= fechaValida;*/
            return(result);
        }
예제 #15
0
        private static long?GetUltimoId(Comprobantes comprobante)
        {
            LoginTickets loginTicket = GetLoginTicket(comprobante.Empresa);

            if (loginTicket != null)
            {
                FEAuthRequest authRequest = new FEAuthRequest();
                authRequest.Token = loginTicket.Token;
                authRequest.Sign  = loginTicket.Sign;
                authRequest.cuit  = Convert.ToInt64(comprobante.Empresa.Cuit.Replace("-", ""));
                Service service = new Service();

                /*FEUltNroResponse ultid = service.FEUltNroRequest(authRequest);
                 * UltNroResponse nroo = ultid.nro;
                 * vError err = ultid.RError;*/
                return(((FEUltNroResponse)(service.FEUltNroRequest(authRequest))).nro.value);
            }
            return(null);
        }
예제 #16
0
        private ReportDocument GenerarReporteDetalle(Comprobantes obj, Boolean show, string filename)
        {
            ReportDocument   report     = ReportManager.GetReportDetalleComprobantes(businessLogic as ComprobantesBL, obj);
            ExportFormatType formatType = FormatoExportacionComprobante(GeneralSettings.Instance.FormatoComprobante);

            if (formatType != ExportFormatType.NoFormat)
            {
                report.ExportToDisk(formatType, filename);
            }
            else
            {
                GenerarXML(obj);
            }
            if (obj.VerReporte)
            {
                new ReportViewer().Open(report);
            }
            return(report);
        }
예제 #17
0
        public static void ModificarComprobante(Comprobantes array)
        {
            try
            {
                if (!Conexion.getInstance().Servicio.Where(w => w.idServicio == array.idServicio).Equals(true))
                {
                    Guid         f         = array.idComprobante;
                    Comprobantes modificar = Conexion.getInstance().Comprobantes.Where(w => w.idComprobante == f).FirstOrDefault();
                    modificar.monto       = array.monto;
                    modificar.pagado      = array.pagado;
                    modificar.activo      = array.activo;
                    modificar.fechaFinal  = array.fechaFinal;
                    modificar.fechaInicio = array.fechaInicio;
                    modificar.idCliente   = array.idCliente;
                    modificar.idServicio  = array.idServicio;
                    modificar.idUsuario   = array.idUsuario;
                    Conexion.getInstance().SaveChanges();
                    var i = Conexion.getInstance().Servicio.Join(
                        Conexion.getInstance().Equipo,
                        s => s.idEquipo,
                        e => e.idEquipo,
                        (s, e) => new {
                        s,
                        e
                    }).Where(w => w.s.idServicio == array.idServicio).ToList();
                    List <Equipo> equips = new List <Equipo>();
                    foreach (var item in i)
                    {
                        equips.Add(item.e);
                    }
                    ComprobantePDF(Conexion.getInstance().Comprobantes.Where(w => w.idComprobante == array.idComprobante).FirstOrDefault(), equips);

                    MessageBox.Show("El Comrobante fue modificado exitosamente", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #18
0
        public void enviarComprobante(String ruc, byte[] xmlFile, String tipoComprobante, String versionXsd)
        {
            try
            {
                sri.RecepcionComprobantesOfflineService servicio = new sri.RecepcionComprobantesOfflineService();
                servicio.Url = "https://celcer.sri.gob.ec/comprobantes-electronicos-ws/RecepcionComprobantesOffline";
                object[] res = servicio.validarComprobante(xmlFile);
                this.respuesta = res;
                XmlNode              nodoEstado       = (((System.Xml.XmlNode[])(((object[])(this.respuesta[0]))[0]))[0]);
                XmlNode              nodoComprobantes = (((System.Xml.XmlNode[])(((object[])(this.respuesta[0]))[0]))[1]);
                Comprobantes         comprobantes     = new Comprobantes();
                Comprobante.Mensajes mensajes         = new Comprobante.Mensajes();
                foreach (XmlNode nodo in nodoComprobantes.SelectNodes("/comprobantes"))
                {
                    Comprobante c = new Comprobante();
                    comprobantes = new Comprobantes();
                    if (nodo["comprobante"] != null)
                    {
                        foreach (XmlNode nodoMensajes in nodo["comprobante"]["mensajes"])
                        {
                            c.setClaveAcceso(nodo["comprobante"]["claveAcceso"].InnerText);
                            Mensaje mensaje = new Mensaje();
                            mensaje.setIdentificador(nodoMensajes["identificador"].InnerText);
                            mensaje.setMensaje(nodoMensajes["mensaje"].InnerText);
                            mensaje.setTipo(nodoMensajes["tipo"].InnerText);
                            mensajes.getMensaje().Add(mensaje);
                            c.setMensajes(mensajes);
                        }
                    }
                    comprobantes.getComprobante().Add(c);
                }

                this.respuestaSolicitud.setComprobantes(comprobantes);
                this.respuestaSolicitud.setEstado(nodoEstado.InnerText);
            }
            catch (Exception e)
            {
                this.respuestaSolicitud.setEstado("ERROR:" + e.ToString());
            }
        }
예제 #19
0
        private int GenerarNumeroDeComprobante()
        {
            int NumeroComprobante = 0;

            using (var context = new lts_sindicatoDataContext())
            {
                if (context.Comprobantes.Count() > 0)
                {
                    NumeroComprobante = Convert.ToInt32(context.Comprobantes.Max(x => x.Numero) + 1);
                }
                else
                {
                    NumeroComprobante = 1;
                }
                Comprobantes InsertarComprobante = new Comprobantes();
                InsertarComprobante.Numero  = NumeroComprobante;
                InsertarComprobante.Importe = Convert.ToDecimal(txt_TotalComprobante.Text);
                context.Comprobantes.InsertOnSubmit(InsertarComprobante);
                context.SubmitChanges();
                return(NumeroComprobante);
            }
        }
예제 #20
0
        public static int?GetUltimoNroComprobante(XmlDocument xmlEmpresa, XmlDocument xmlComprobante)
        {
            XmlNode      node;
            Comprobantes comprobante = new Comprobantes();

            node = xmlComprobante.SelectSingleNode("//numeroComprobante");
            comprobante.NroCbante = node.InnerXml;
            node                           = xmlComprobante.SelectSingleNode("//tipo");
            comprobante.Tipo               = new TiposComprobantes();
            comprobante.Tipo.Codigo        = node.InnerXml;
            comprobante.Empresa            = new Empresas();
            node                           = xmlEmpresa.SelectSingleNode("//dnOrigen");
            comprobante.Empresa.DNOrigen   = node.InnerXml;
            node                           = xmlEmpresa.SelectSingleNode("//dnDestino");
            comprobante.Empresa.DNDestino  = node.InnerXml;
            node                           = xmlEmpresa.SelectSingleNode("//uniqueID");
            comprobante.Empresa.Id         = Convert.ToInt32(node.InnerXml);
            node                           = xmlEmpresa.SelectSingleNode("//senderName");
            comprobante.Empresa.SenderName = node.InnerXml;
            node                           = xmlEmpresa.SelectSingleNode("//cuit");
            comprobante.Empresa.Cuit       = node.InnerXml;
            return(GetUltimoNroComprobante(comprobante));
        }
예제 #21
0
 public static void AltaComprobante(Comprobantes array)
 {
     try
     {
         Conexion.getInstance().Comprobantes.Add(array);
         Conexion.getInstance().SaveChanges();
         var i = Conexion.getInstance().Servicio.Join(
             Conexion.getInstance().Equipo,
             s => s.idEquipo,
             e => e.idEquipo,
             (s, e) => new { s, e }).Where(w => w.s.idServicio == array.idServicio).ToList();
         List <Equipo> equips = new List <Equipo>();
         foreach (var item in i)
         {
             equips.Add(item.e);
         }
         ComprobantePDF(Conexion.getInstance().Comprobantes.Where(w => w.idComprobante == array.idComprobante).FirstOrDefault(), equips);
         MessageBox.Show("El Comprobante fue agregado exitosamente", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Information);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString(), "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
예제 #22
0
 public string GetResumeStream(Comprobantes comp)
 {
     //return "Fecha: " + comp.Emision.ToString("yyyyMMdd") + " Nro: " + comp.NroCbante + " Importe: " + comp.Total + "\r\n";
     return("Fecha: " + comp.Emision.ToString("yyyyMMdd") + " Nro: " + comp.NroCbante + "\r\n");
 }
예제 #23
0
        //private
        public string EmitirComprobante(Comprobantes obj, out string nroComprobante, bool generarXML)
        {
            nroComprobante = "-1";

            //Generación de otro ID
            long idDate = DateTime.Now.Year * 10000000000;

            idDate += DateTime.Now.Month * 100000000;
            idDate += DateTime.Now.Day * 1000000;
            idDate += DateTime.Now.Hour * 10000;
            idDate += DateTime.Now.Minute * 100;
            idDate += DateTime.Now.Second;
            long idCabeceraWS = idDate;

            /*if (Status.ChequearConexion())
             * {*/
            if (((MFD.Main)(CRUDFormParent)).IsValidLicense())
            {
                try
                {
                    string errorLog;
                    //Reemplazado en MFDService
                    //obj.CAE = GetCAE(obj, out nroComprobante);
                    string result = MFDService.MFDService.GetCAE(obj, out errorLog, out nroComprobante, ref idCabeceraWS, loginTicketsBL, loginTicketRequestsBL, true);
                    //string result = "";
                    obj.NroCbante    = nroComprobante;
                    obj.IdCabeceraWS = idCabeceraWS;

                    if (obj.CAE != "NULL" && nroComprobante != "-1")
                    {
                        obj.CAE = result;
                        obj.Emitir();
                        ((MFD.Main)(CRUDFormParent)).StatusConn.Image = global::MFD.Properties.Resources.green;
                        ((MFD.Main)(CRUDFormParent)).StatusWS.Image   = global::MFD.Properties.Resources.green;
                    }
                    else
                    {
                        nroComprobante = "-1";
                        obj.NroCbante  = "-1";
                        string error = "No se pudo obtener el CAE. CAE='NULL'.\nPara más información revisar el eventLog en la vista MFD";
                        Logger.EscribirEventLog(error + Environment.NewLine + result);
                        return(error);
                    }
                }
                catch (Exception ex)
                {
                    nroComprobante = "-1";
                    Logger.EscribirEventLog(ex);
                    return("No se pudo obtener el CAE. " + ex.Message);
                }

                try
                {
                    //En estos momentos no se esta utilizando el check de Generar xml desde el formulario del comprobante
                    if (obj.GenerarXml)
                    {
                        GenerarXML(obj);
                    }
                }
                catch (Exception ex)
                {
                    Logger.EscribirEventLog(ex);
                    return("No se pudo generar el archivo xml correspondiente al comprobante");
                }
                try
                {
                    EnviarComprobante(obj, obj.VerReporte);                            //true;
                }
                catch (Exception ex)
                {
                    Logger.EscribirEventLog(ex);
                    return("No se pudo enviar el comprobante a la cuenta de email del cliente");
                }
                //	return string.Empty;
            }
            else
            {
                MessageBox.Show("Su licencia a expirado.");
                Application.Exit();
            }

            /*}
             * else {
             *      string error = "No se puede emitir el comprobante porque no hay conexión a internet.";
             *      Logger.EscribirEventLog(error);
             *      return error;
             *      //MessageBox.Show();
             * }*/
            return(string.Empty);
        }
예제 #24
0
        private void EnviarComprobante(Comprobantes obj, bool show)
        {
            try
            {
                string homologacion = "", validezLegal = "";
                if (ConfigurationManager.AppSettings["FlagEnvir"] == "0")
                {
                    homologacion = "HOMOLOGACIÓN";
                    validezLegal = " TENGA PRESENTE QUE EL COMPROBANTE QUE SE ADJUNTA ES SOLO DE PRUEBA Y EL MISMO NO POSEE VALIDEZ LEGAL";
                }

                string filename = GetFolder(obj) + obj.GetFileName(GeneralSettings.Instance.FormatoComprobante.ToString().ToLower().Substring(0, 3));

                if (!File.Exists(filename))
                {
                    GenerarReporteDetalle(obj, show, filename);
                }

                SmtpClient client = new SmtpClient(GeneralSettings.Instance.SmtpServer, GeneralSettings.Instance.SmtpServerPort);
                client.Credentials = new System.Net.NetworkCredential(GeneralSettings.Instance.SmtpUser, GeneralSettings.Instance.SmtpPass);

                MailAddress from = new MailAddress(GeneralSettings.Instance.SmtpUser, "Factura electronica de " + obj.Empresa.RazonSocial, System.Text.Encoding.UTF8);
                //MailAddress from = new MailAddress(GeneralSettings.Instance.SmtpUser, "Factura electronica " + ((homologacion != "") ? ("(" + homologacion + ") ") : ("")) + obj.Empresa.RazonSocial, System.Text.Encoding.UTF8);
                MailAddress to      = new MailAddress(obj.Cliente.Email);
                MailMessage message = new MailMessage(from, to);
                message.BodyEncoding    = System.Text.Encoding.UTF8;
                message.Subject         = GeneralSettings.Instance.EmailSubject;
                message.SubjectEncoding = System.Text.Encoding.UTF8;
                string userState = "Fact elect";
                //if (GeneralSettings.Instance.FormatoComprobante == FormatoComprobante.HTML) {
                //    string body = GenerarBodyHTML(filename, obj.GetFileNameDetalle());
                //    AlternateView htmlView = AlternateView.CreateAlternateViewFromString(body, null, "text/html");
                //    //create the LinkedResource (embedded image)
                //    LinkedResource logo = new LinkedResource(obj.Empresa.LogoEmpresaFileName);
                //    logo.ContentId = "logo";
                //    //add the LinkedResource to the appropriate view
                //    htmlView.LinkedResources.Add(logo);
                //    //add the views
                //    message.AlternateViews.Add(htmlView);
                //}
                message.Attachments.Add(new Attachment(filename));
                ExportFormatType formatType = FormatoExportacionComprobante(GeneralSettings.Instance.FormatoComprobante);
                if (formatType == ExportFormatType.NoFormat)
                {
                    string filenameXSL = AppDomain.CurrentDomain.BaseDirectory + "Factura_v1.22.xsl";
                    message.Attachments.Add(new Attachment(filenameXSL));
                }
                //message.Body = ("Ha recibido una factura electrónica de " + obj.Empresa.RazonSocial + ", por favor compruebe que la ha recepcionado correctamente, en caso de no ser así sepa disculpar y contactese con la empresa." + "La informacion contenida en el documento adjunto es de indole estrictamente confidencial.");
                message.Body = GeneralSettings.Instance.EmailTexto;
                message.Headers.Add("Disposition-Notification-To", GeneralSettings.Instance.SmtpUser);

                try
                {
                    client.SendAsync(message, userState);
                }
                catch (Exception ex)
                {
                    string err = ex.Message;
                    throw ex;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #25
0
        private void btnGuardarServicio_Click(object sender, EventArgs e)
        {
            try
            {
                DialogResult dr = MessageBox.Show("¿Desea ingresar este comprobante?", "INFO", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);

                if (dr.Equals(DialogResult.Yes))
                {
                    if (txtMonto.Text != null &&
                        txtFi.Text != null &&
                        DateTime.Parse(txtFi.Text) <= DateTime.Parse(txtFf.Text) &&
                        txtFf.Text != null &&
                        (radioBnoActivo.Checked != false ||
                         radioBsiActivo.Checked != false) &&
                        (radioBnoPagado.Checked != false ||
                         radioBsiPagado.Checked != false))
                    {
                        if (id.Equals(Guid.Empty))
                        {
                            if (CrudServicios.verificarComprobante(Guid.Parse(txtClientes.SelectedValue.ToString()), Convert.ToDateTime(txtFi.Text), Convert.ToDateTime(txtFf.Text)).Equals(false))
                            {
                                int c1 = DateTime.Compare(DateTime.Parse(txtFi.Text), DateTime.Parse(DateTime.Today.ToShortDateString()));
                                int c2 = DateTime.Compare(DateTime.Parse(txtFf.Text), DateTime.Parse(DateTime.Today.ToShortDateString()));

                                if (c1 >= 0 && c2 >= 0)
                                {
                                    id  = Guid.NewGuid();
                                    idS = Guid.NewGuid();
                                    idU = Conexion.usuario.idUsuario;
                                    idC = Guid.Parse(txtClientes.SelectedValue.ToString());

                                    foreach (DataGridViewRow item in dgvEquiposD.Rows)
                                    {
                                        if (item.Cells[0].Value.Equals(true))
                                        {
                                            CrudServicios.AltaServicio(new Servicio
                                            {
                                                idServicio = idS,
                                                idEquipo   = Guid.Parse(item.Cells[1].Value.ToString())
                                            }, activo);
                                        }
                                    }

                                    Comprobantes newRecibo = new Comprobantes
                                    {
                                        idComprobante = id,
                                        idCliente     = idC,
                                        idUsuario     = idU,
                                        idServicio    = idS,
                                        fechaInicio   = Convert.ToDateTime(txtFi.Text),
                                        fechaFinal    = Convert.ToDateTime(txtFf.Text),
                                        pagado        = activoPago,
                                        activo        = activo,
                                        monto         = Convert.ToDecimal(txtMonto.Text)
                                    };
                                    CrudServicios.AltaComprobante(newRecibo);
                                    clearInterface();
                                    cargarTabla();
                                }
                                else
                                {
                                    MessageBox.Show("La fecha no es la correcta", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                }
                            }
                            else
                            {
                                MessageBox.Show("El comprobante ya ha sido creado, búscalo en la tabla debajo", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                        }
                        else
                        {
                            foreach (DataGridViewRow item in dgvEquiposA.Rows)
                            {
                                if (!item.Cells[0].Value.Equals(true))
                                {
                                    CrudServicios.BajaServicio(Guid.Parse(item.Cells[1].Value.ToString()), idS);
                                }
                            }

                            foreach (DataGridViewRow item in dgvEquiposD.Rows)
                            {
                                if (item.Cells[0].Value.Equals(true))
                                {
                                    CrudServicios.AltaServicio(new Servicio
                                    {
                                        idServicio = idS,
                                        idEquipo   = Guid.Parse(item.Cells[1].Value.ToString())
                                    }, activo);
                                }
                            }

                            Comprobantes recibo = new Comprobantes
                            {
                                idComprobante = id,
                                idCliente     = idC,
                                idUsuario     = idU,
                                idServicio    = idS,
                                fechaInicio   = Convert.ToDateTime(txtFi.Text),
                                fechaFinal    = Convert.ToDateTime(txtFf.Text),
                                pagado        = activoPago,
                                activo        = activo,
                                monto         = Convert.ToDecimal(txtMonto.Text)
                            };

                            CrudServicios.ModificarComprobante(recibo);
                            clearInterface();
                            cargarTabla();
                        }
                    }
                    else
                    {
                        MessageBox.Show("Ingrese o corrija los campos", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #26
0
        protected string GetStreamVentas(Comprobantes comp, LibroVentasTotal total)
        {
            StringBuilder ret1 = new StringBuilder();
            StringBuilder ret2 = new StringBuilder();
            StringBuilder ret3 = new StringBuilder();
            IDictionary <Ivas, IList <DetallesComprobantes> > detallesPorIva = GetDetallesPorIva(comp);

            #region Campos 1 a 10 (comunes)
            //Campo 1: Tipo de registro
            ret1.Append("1");
            //Campo 2: Fecha del comprobante
            ret1.Append(comp.Emision.ToString("yyyyMMdd"));
            //Campo 3: Tipo de Comprobante
            ret1.Append(comp.Tipo.Codigo.Substring(0, 2));
            //Campo 4: Controlador Fiscal
            ret1.Append(" ");
            //Campo 5: Punto de Venta
            ret1.Append(comp.NroCbante.Substring(0, 4));
            //Campo 6: Número de Comprobante
            ret1.Append(comp.NroCbante.Substring(5, 8).PadLeft(20, '0'));
            //Campo 7: Número de Comprobante Registrado
            ret1.Append(comp.NroCbante.Substring(5, 8).PadLeft(20, '0'));
            //Campo 8: Código de documento identificatorio del comprador
            ret1.Append(GeneralSettings.Instance.CodigoCUIT.Substring(0, 2));
            //Campo 9: Número de identificación del comprador
            ret1.Append(comp.CUITCliente.Replace("-", "").PadRight(11, ' '));
            //Campo 10: Apellido y nombres o denominación del comprador
            ret1.Append((comp.NombreCliente.Length < 30) ? comp.NombreCliente.PadRight(30, ' ') : comp.NombreCliente.Substring(0, 30));
            #endregion

            #region Campos 22 a 30 (comunes)
            //Campo 22: Tipo de responsable
            ret3.Append(comp.TipoCliente.Codigo.Substring(0, 2));
            //Campo 23: Códigos de Moneda
            ret3.Append(GeneralSettings.Instance.CodigoMoneda.Substring(0, 3));
            //Campo 24: Tipo de Cambio
            ret3.Append("0001000000");
            //Campo 25: Cantidad de alícuotas de IVA
            ret3.Append("1");
            //Campo 26: Código de operación
            ret3.Append(" ");
            //Campo 27: CAI
            ret3.Append(comp.Empresa.CAI.ToString().PadRight(14, ' '));
            //Campo 28: Fecha de vencimiento
            ret3.Append(comp.Empresa.FechaVtoCAI.ToString("yyyyMMdd"));
            //Campo 29: Fecha anulación del comprobante
            if (comp.Estado != Comprobantes.EstadoAnulado)
            {
                ret3.Append("00000000");
            }
            else
            {
                ret3.Append(comp.Anulacion.Value.ToString("yyyyMMdd"));
            }
            //Campo 30: Información adicional
            ret3.Append(String.Empty.PadRight(75, ' '));
            #endregion

            #region Campos 11 a 21 (por alicuota de iva)

            foreach (KeyValuePair <Ivas, IList <DetallesComprobantes> > pair in detallesPorIva)
            {
                Comprobantes comprobanteAuxiliar = new Comprobantes();
                comprobanteAuxiliar.Items   = pair.Value;
                comprobanteAuxiliar.Cliente = comp.Cliente;
                comprobanteAuxiliar.Empresa = comp.Empresa;
                comprobanteAuxiliar.CalcularTotales(comprobanteAuxiliar);

                total.CantidadRegistros++;
                total.ImporteTotal    += comprobanteAuxiliar.Total;
                total.ImporteNeto     += comprobanteAuxiliar.SubtotalNeto;
                total.ImporteImpuesto += (comprobanteAuxiliar.Iva1 + comprobanteAuxiliar.Iva2);

                //Campo 11: Importe total de la operación
                ret2.Append(comprobanteAuxiliar.Total.ToString("#0.#0").Replace(".", "").Replace(",", "").PadLeft(15, '0'));
                //Campo 12: Importe total de conceptos que no integran el precio neto gravado
                ret2.Append("000000000000000");
                //Campo 13: Importe Neto Gravado
                ret2.Append(comprobanteAuxiliar.SubtotalNeto.ToString("#0.#0").Replace(".", "").Replace(",", "").PadLeft(15, '0'));
                //Campo 14: Alicuota de iva
                ret2.Append(pair.Key.Alicuota.ToString("#0.#0").Replace(".", "").Replace(",", "").PadLeft(4, '0'));
                //Campo 15: Impuesto liquidado
                //ret2.Append((comprobanteAuxiliar.Iva1 + comprobanteAuxiliar.Iva2).ToString("#0.#0").Replace(".", "").Replace(",", "").PadLeft(15, '0'));
                ret2.Append((comprobanteAuxiliar.Iva1 + comprobanteAuxiliar.Iva2).ToString("#0.#0").Replace(".", "").Replace(",", "").PadLeft(15, '0'));
                //Campo 16: Impuesto liquidado a RNI o percepción a no categorizados
                //TODO: si el comprador es no inscripto o no categorizado (campo 23 = 02 o 07), esto es el 50% del campo 15
                ret2.Append("000000000000000");
                //Campo 17: Importe de operaciones exentas
                ret2.Append("000000000000000");
                //Campo 18: Importe de percepciones o pagos a cuenta sobre impuestos nacionales
                ret2.Append("000000000000000");
                //Campo 19: Importe de percepción de ingresos brutos
                ret2.Append(comprobanteAuxiliar.Percepciones.ToString("#0.#0").Replace(".", "").Replace(",", "").PadLeft(15, '0'));
                //Campo 20: Importe de percepciones por impuestos municipales
                ret2.Append("000000000000000");
                //Campo 21: Importe de impuestos internos
                ret2.Append("000000000000000");
            }
            #endregion
            //Registro
            return(ret1.Append(ret2).Append(ret3).Append("\r\n").ToString());
        }
예제 #27
0
        public override void OnModelCreating(ModelBuilder modelBuilder) {
            modelBuilder.Entity<Comprobante>(Comprobantes => {
                Comprobantes.HasKey(e => e.IdComprobante);

                Comprobantes.Property(e => e.IdUsuario).IsRequired();
                Comprobantes.Property(e => e.IdNegocio).IsRequired();
                Comprobantes.Property(e => e.IdEstatus).IsRequired();
                Comprobantes.Property(e => e.IdDireccion).IsRequired();
                Comprobantes.Property(e => e.Puntuacion).IsRequired();
                Comprobantes.Property(e => e.Precio).IsRequired();
                Comprobantes.Property(e => e.Efectivo).IsRequired();
                Comprobantes.Property(e => e.Fecha).IsRequired();

                Comprobantes
                    .HasOne(e => e.Negocio)
                    .WithMany(y => y.Comprobantes)
                    .HasForeignKey("fk_Comprobante_Negocio");
                Comprobantes
                    .HasOne(e => e.Usuario)
                    .WithMany(y => y.Comprobantes)
                    .HasForeignKey("fk_Comprobante_Usuario");
                Comprobantes
                    .HasOne(e => e.Estatus)
                    .WithOne(y => y.Comprobantes)
                    .HasForeignKey("fk_Comprobante_Estatus");
                Comprobantes
                    .HasOne(e => e.Direcccion)
                    .WithMany(y => y.Comprobantes)
                    .HasForeignKey("fk_Comprobante_Direccion");
            });
            modelBuilder.Entity<ComprobanteDetalle>(ComprobanteDetalles =>
            {
                ComprobanteDetalles.HasKey(e => e.IdComprobanteDetalle);
                ComprobanteDetalles.Property(e => e.IdComprobante).IsRequired();
                ComprobanteDetalles.Property(e => e.IdEstatus).IsRequired();
                ComprobanteDetalles.Property(e => e.IdServicio).IsRequired();
                ComprobanteDetalles.Property(e => e.Puntuacion).IsRequired();
                ComprobanteDetalles.Property(e => e.Precio).IsRequired();
                ComprobanteDetalles.Property(e => e.Cambio).IsRequired(false);
                ComprobanteDetalles.Property(e => e.Fecha).IsRequired();

                ComprobanteDetalles
                    .HasOne(e => e.Comprobante)
                    .WithMany(y => y.ComprobanteDetalles)
                    .HasForeignKey("fk_ComprobanteDetalle_Comprobante");
                ComprobanteDetalles
                    .HasOne(e => e.Estatus)
                    .WithOne(y => y.ComprobanteDetalles)
                    .HasForeignKey("fk_ComprobanteDetalle_Estatus");
                ComprobanteDetalles
                    .HasOne(e => e.Servicio)
                    .WithOne(y => y.ComprobanteDetalles)
                    .HasForeignKey("fk_ComprobanteDetalle_Servicio");
            });
            modelBuilder.Entity<Servicio>(Servicios =>
            {
                Servicios.HasKey(e => e.IdServicio);
                Servicios.Property(e => e.IdNegocio).IsRequired();
                Servicios.Property(e => e.Puntuacion).IsRequired();
                Servicios.Property(e => e.Nombre)
                    .HasMaxLength(200)
                    .IsUnicode(false)
                    .IsRequired();
                Servicios.Property(e => e.Descripcion)
                    .IsUnicode(false)
                    .IsRequired();
                Servicios.Property(e => e.Duracion)
                    .IsRequired();
                Servicios.Property(e => e.Precio)
                    .IsRequired();
                Servicios.Property(e => e.Fecha)
                    .IsRequired();

                Servicios
                    .HasOne(e => e.Negocio)
                    .WithMany(y => y.Servicios)
                    .HasForeignKey("fk_Servicio_Negocio");
            });
            modelBuilder.Entity<Negocio>(Negocios => {
                Negocios.HasKey(e => e.IdNegocio);
                Negocios.Property(e => e.IdImagen).IsRequired();
                Negocios.Property(e => e.Nombre)
                    .IsRequired()
                    .IsUnicode(false)
                    .HasMaxLength(100);
                Negocios.Property(e => e.RazonSocial)
                    .IsRequired()
                    .IsUnicode(false);
                Negocios.Property(e => e.PuntuacionFinal).IsRequired();
                Negocios.Property(e => e.Fecha).IsRequired();

                Negocios
                    .HasOne(e => e.Imagen)
                    .WithOne(y => y.Negocio)
                    .HasForeignKey("fk_Negocio_Imagen");
            });
            modelBuilder.Entity<Estatus>(Estatus => {
                Estatus.HasKey(e => e.IdEstatus);
                Estatus.Property(e => e.Nombre)
                    .IsRequired()
                    .IsUnicode(false)
                    .HasMaxLength(50);
                Estatus.Property(e => e.Fecha).IsRequired();
            });
            modelBuilder.Entity<Imagen>(Imagen => {
                Imagen.HasKey(e => e.IdImagen);
                Imagen.Property(e => e.Nombre)
                    .IsRequired()
                    .IsUnicode(false)
                    .HasMaxLength(500);
                Imagen.Property(e => e.Ruta)
                    .IsRequired()
                    .IsUnicode(false);
                Imagen.Property(e => e.Size).IsRequired();
                Imagen.Property(e => e.Fecha).IsRequired();

            });
            modelBuilder.Entity<Usuario>(Usuario => {
                Usuario.HasKey(e => e.IdUsuario);
                Usuario.Property(e => e.NickName)
                    .IsRequired()
                    .IsUnicode(false)
                    .HasMaxLength(50);
                Usuario.Property(e => e.Nombre)
                    .IsRequired()
                    .IsUnicode(false)
                    .HasMaxLength(200);
                Usuario.Property(e => e.ApellidoPaterno)
                    .IsRequired()
                    .IsUnicode(false)
                    .HasMaxLength(50);
                Usuario.Property(e => e.ApellidoMaterno)
                    .IsRequired()
                    .IsUnicode(false)
                    .HasMaxLength(50);
                Usuario.Property(e => e.Celular).IsRequired();
                Usuario.Property(e => e.Email)
                    .IsRequired()
                    .IsUnicode(false)
                    .HasMaxLength(50);
                Usuario.Property(e => e.Consumidor).IsRequired();
                Usuario.Property(e => e.Fecha).IsRequired();
            });
            modelBuilder.Entity<Direcccion>(Direcccions => {
                Direcccions.HasKey(e => e.IdDireccion);
                Direcccions.Property(e => e.Latitud).IsRequired();
                Direcccions.Property(e => e.Longitud).IsRequired();
                Direcccions.Property(e => e.Referencia)
                    .IsRequired()
                    .IsUnicode(false);
                Direcccions.Property(e => e.NumeroExterior).IsRequired();
                Direcccions.Property(e => e.Lugar)
                    .IsRequired()
                    .IsUnicode(false)
                    .HasMaxLength(200);
                Direcccions.Property(e => e.Calle)
                    .IsRequired()
                    .IsUnicode(false)
                    .HasMaxLength(200);
            });
        }
예제 #28
0
        public static string GetCAE(Comprobantes comprobante, out string logError, out string nroComprobante)
        {
            comprobante.Empresa            = new Empresas();
            comprobante.Empresa.Cuit       = "33-67789425-9";
            comprobante.Empresa.DNOrigen   = "serialNumber=CUIT 33677894259,[email protected],CN=VISET,OU=VISET,O=VISET,ST=Buenos Aires,C=AR";
            comprobante.Empresa.DNDestino  = "CN=wsaahomo; O=afip; C=ar; serialNumber=CUIT 33693450239";
            comprobante.Empresa.Id         = Convert.ToInt32("2");
            comprobante.Empresa.SenderName = "VISET";
            comprobante.Empresa.CAI        = "CAI1455";
            comprobante.Empresa.CertificadoDestinoFileName = @"C:\Vero\Proyectos\MFD\MFDHOMO\Certificados\viset\CRT-root.cer";
            comprobante.Empresa.CertificadoFileName        = @"C:\Vero\Proyectos\MFD\MFDHOMO\Certificados\viset\viset.crt";
            comprobante.Empresa.CertificadoPassword        = "******";
            comprobante.Empresa.LoginTicketFileName        = @"C:\Vero\Proyectos\MFD\MFDHOMO\Certificados\viset\LoginTicketRequest.xml";


            logError = String.Empty;
            string       result      = String.Empty;
            LoginTickets loginTicket = GetLoginTicket(comprobante.Empresa);

            nroComprobante = "-1";
            if (loginTicket != null)
            {
                FEAuthRequest authRequest = new FEAuthRequest();
                authRequest.Token = loginTicket.Token;
                authRequest.Sign  = loginTicket.Sign;
                authRequest.cuit  = Convert.ToInt64(comprobante.Empresa.Cuit.Replace("-", ""));
                ComprobantesAdapter adapter  = new ComprobantesAdapter(comprobante);
                FERequest           request  = adapter.GenerarFERequest(comprobante.Id);
                Service             service  = new Service();
                FEResponse          response = service.FEAutRequest(authRequest, request);

                if (response.FedResp != null && response.FedResp[0].resultado == "R" && response.FedResp[0].motivo.StartsWith("11") && response.FedResp[0].cae == "NULL")
                {
                    //Caso en que falla por correlatividad de comprobantes
                    FERecuperaLastCMPResponse ultimoComEmitido = service.FERecuperaLastCMPRequest(authRequest, adapter.GenerarFELastCMPtype());
                    comprobante.NroCbante = comprobante.NroCbante.Substring(0, 5) + (ultimoComEmitido.cbte_nro + 1).ToString().PadLeft(8, '0');
                    adapter = new ComprobantesAdapter(comprobante);
                    request = new FERequest();
                    //Generación de otro ID
                    long idDate = DateTime.Now.Year * 10000000000;
                    idDate  += DateTime.Now.Month * 100000000;
                    idDate  += DateTime.Now.Day * 1000000;
                    idDate  += DateTime.Now.Hour * 10000;
                    idDate  += DateTime.Now.Minute * 100;
                    idDate  += DateTime.Now.Second;
                    request  = adapter.GenerarFERequest(idDate);
                    service  = new Service();
                    response = service.FEAutRequest(authRequest, request);
                }
                else
                {
                    if (response.FedResp != null && response.FedResp[0].resultado == "R" && !String.IsNullOrEmpty(response.FedResp[0].motivo))
                    {
                        ArrayList motivos = new ArrayList();
                        motivos.AddRange(response.FedResp[0].motivo.Split(";".ToCharArray()));
                        StringBuilder logMotivos = new StringBuilder();
                        if (motivos.Contains("01"))
                        {
                            logMotivos.Append("01 \"La cuit informada no corresponde a un responsable inscripto en el iva activo\\n");
                        }
                        if (motivos.Contains("02"))
                        {
                            logMotivos.Append("02 \"La cuit informada no se encuentra autorizada a emitir comprobantes electronicos originales o el periodo de inicio autorizado es posterior al de la generacion de la solicitud\"\n");
                        }
                        if (motivos.Contains("03"))
                        {
                            logMotivos.Append("03 \"La cuit informada registra inconvenientes con el domicilio fiscal\"\n");
                        }
                        if (motivos.Contains("04"))
                        {
                            logMotivos.Append("04 \"El punto de venta informado no se encuentra declarado para ser utilizado en el presente regimen\"\n");
                        }
                        if (motivos.Contains("05"))
                        {
                            logMotivos.Append("05 \"La fecha del comprobante indicada no puede ser anterior en mas de cinco dias, si se trata de una venta, o anterior o posterior en mas de diez dias, si se trata de una prestacion de servicios, consecutivos de la fecha de remision del archivo art. 22 De la rg nro 2177-\"\n");
                        }
                        if (motivos.Contains("06"))
                        {
                            logMotivos.Append("06 \"La cuit informada no se encuentra autorizada a emitir comprobantes clase \"a\"\"\n");
                        }
                        if (motivos.Contains("07"))
                        {
                            logMotivos.Append("07 \"Para la clase de comprobante solicitado -comprobante clase a- debera consignar en el campo codigo de documento identificatorio del comprador el codigo \"80\"\n");
                        }
                        if (motivos.Contains("08"))
                        {
                            logMotivos.Append("08 \"La cuit indicada en el campo nro de identificacion del comprador es invalida\"\n");
                        }
                        if (motivos.Contains("09"))
                        {
                            logMotivos.Append("09 \"La cuit indicada en el campo nro de identificacion del comprador no existe en el padron unico de contribuyentes\"\n");
                        }
                        if (motivos.Contains("10"))
                        {
                            logMotivos.Append("10 \"La cuit indicada en el campo nro de identificacion del comprador no corresponde a un responsable inscripto en el iva activo\"\n");
                        }
                        if (motivos.Contains("11"))
                        {
                            logMotivos.Append("11 \"El nro de comprobante desde informado no es correlativo al ultimo nro de comprobante registrado/hasta solicitado para ese tipo de comprobante y punto de venta\"\n");
                        }
                        if (motivos.Contains("12"))
                        {
                            logMotivos.Append("12 \"El rango informado se encuentra autorizado con anterioridad para la misma cuit, tipo de comprobante y punto de venta\"\n");
                        }
                        if (motivos.Contains("13"))
                        {
                            logMotivos.Append("13 \"La cuit indicada se encuentra comprendida en el regimen establecido por la resolucion general nro 2177 y/o en el titulo I de la resolucion general nro 1361 art. 24 De la rg nro 2177\"\n");
                        }
                        if (logMotivos.Length > 0)
                        {
                            logError = logMotivos.ToString();
                        }
                    }
                }
                nroComprobante = comprobante.NroCbante;
                try
                {
                    result = response.FedResp[0].cae;
                }
                catch (Exception ex)
                {
                    nroComprobante = "-1";
                    result         = ex.Message;
                }
            }
            return(result);
        }
예제 #29
0
 public static string GetCAE(Comprobantes comprobante, out string logError, out string nroComprobante, LoginTicketsBL loginTickets, LoginTicketRequestsBL loginTicketRequests)
 {
     loginTicketsBL        = loginTickets;
     loginTicketRequestsBL = loginTicketRequests;
     return(GetCAE(comprobante, out logError, out nroComprobante));
 }
예제 #30
0
        protected IDictionary <Ivas, IList <DetallesComprobantes> > GetDetallesPorIva(Comprobantes comp)
        {
            IDictionary <Ivas, IList <DetallesComprobantes> > result = new Dictionary <Ivas, IList <DetallesComprobantes> >();

            foreach (DetallesComprobantes detalle in comp.Items)
            {
                if (!result.ContainsKey(detalle.TipoIva))
                {
                    result.Add(detalle.TipoIva, new List <DetallesComprobantes>());
                }
                result[detalle.TipoIva].Add(detalle);
            }

            return(result);
        }