示例#1
0
        public override bool LerMarcacoes(Marcacoes marcacoes, AssepontoRep.Bridge.TipoImportacaoMarcacoes tipoimportacao)
        {
            bool Result          = false;
            int  NRegistrosLidos = 0;

            Connect();

            try
            {
                DBApp db         = new DBApp();
                int   ProximoNsr = db.getLastNsr(TerminalDados.Indice) + 1;


                if (!_rep.BuscarAFD(ProximoNsr))
                {
                    log.AddLog(Consts.MARCACOES_NAO_HA_NOVAS);
                }
                else
                {
                    string cLinha;
                    while (_rep.LerAFD(out cLinha))
                    {
                        AssepontoRep.Marcacoes.Marcacao mrc = new AssepontoRep.Marcacoes.Marcacao();

                        if (marcacoes.InterpretarRegistroAfd(cLinha, out mrc))
                        {
                            if (mrc.Tipo == Marcacoes.TiposRegistroAfd.Marcacao)
                            {
                                marcacoes.Add(mrc);
                            }
                        }

                        //if (Convert.ToInt32(cLinha.Substring(9, 1)) == (int)(Marcacoes.TiposRegistroAfd.Marcacao))
                        //{
                        //    string PIS = cLinha.Substring(22, 12).Replace("\n", "").Replace("\t", "").Replace("\r", "");
                        //    string DataHora = cLinha.Substring(10, 12);
                        //    string NSR = cLinha.Substring(0, 9);

                        //    marcacoes.Add(PIS, extrairDateTime(DataHora), Convert.ToInt32(NSR));
                        //}

                        NRegistrosLidos++;
                    }

                    if (NRegistrosLidos == 0)
                    {
                        log.AddLog(Consts.ERRO_ENVIO_COMANDO);
                    }

                    if (marcacoes.Count == 0)
                    {
                        log.AddLog(Consts.MARCACOES_NAO_HA_NOVAS);
                    }

                    Result = true;
                }
            }
            catch (Exception ex)
            {
                log.AddLog(ex.Message);
                Result = false;
            }
            finally
            {
                _rep.Desconectar();
            }

            return(Result);
        }
示例#2
0
        public override bool LerMarcacoes(Marcacoes marcacoes, TipoImportacaoMarcacoes tipoimportacao)
        {
            base.LerMarcacoes(marcacoes, tipoimportacao);

            bool  Result     = false;
            DBApp db         = new DBApp();
            int   ProximoNsr = db.getLastNsr(TerminalDados.Indice) + 1;
            int   Contador   = 0;

            MRPRecord[] registrosMRP;

            if (PrintPointIII_Conectar())
            {
                try
                {
                    try
                    {
                        _watchComm.RepositioningMRPRecordsPointer(ProximoNsr.ToString());
                    }
                    catch (Exception ex)
                    {
                        log.AddLog(Consts.MARCACOES_NAO_HA_NOVAS);
                    }

                    registrosMRP = this._watchComm.InquiryMRPRecords(false, false, true, false, false);

                    while (registrosMRP != null)
                    {
                        foreach (MRPRecord registroMRP in registrosMRP)
                        {
                            if (registroMRP is MRPRecord_RegistrationMarkingPoint)
                            {
                                string Pis = ((MRPRecord_RegistrationMarkingPoint)registroMRP).Pis;

                                DateTime DataHora = ((MRPRecord_RegistrationMarkingPoint)registroMRP).DateTimeMarkingPoint;
                                int      Nsr      = Convert.ToInt32(((MRPRecord_RegistrationMarkingPoint)registroMRP).NSR);
                                marcacoes.Add(Pis, DataHora, Nsr);
                                Contador++;

                                if (Nsr > ProximoNsr)
                                {
                                    ProximoNsr = Nsr;
                                }
                            }
                        }

                        registrosMRP = _watchComm.ConfirmationReceiptMRPRecords();
                    }

                    base.FinalizarImportacaoMarcacoes(marcacoes, ProcessarMarcacoesAoImportar.ProcessarSim);
                }
                catch (Exception ex)
                {
                    log.AddLog(ex.Message);
                }
                finally
                {
                    PrintPointIII_Desconectar();
                }
            }
            return(Result);
        }
示例#3
0
        public override bool LerMarcacoes(Marcacoes marcacoes, AssepontoRep.Bridge.TipoImportacaoMarcacoes tipoimportacao)
        {
            bool Result = base.LerMarcacoes(marcacoes, tipoimportacao);

            DBApp db         = new DBApp();
            int   ProximoNsr = db.getLastNsr(TerminalDados.Indice) + 1;

            string ArquivoTemp = Path.GetTempFileName();

            int Contador = 0;

            if (Connect(TerminalDados.Indice))
            {
                int resultado = envioDll.LeCadastro(TerminalDados.IP, 5, ProximoNsr.ToString(), ArquivoTemp);

                if (resultado == 0)
                {
                    List <string> arquivo = new List <string>();
                    Wr.Classes.Files.ReadFile(ArquivoTemp, arquivo);

                    foreach (string S in arquivo)
                    {
                        string[] linhaReg = S.Split(';');
                        if (linhaReg[1] == Convert.ToInt32(Marcacoes.TiposRegistroAfd.Marcacao).ToString())
                        {
                            string Pis = linhaReg[4];

                            try
                            {
                                DateTime DataHora = new DateTime(
                                    Convert.ToInt32(linhaReg[2].Substring(4, 4)),
                                    Convert.ToInt32(linhaReg[2].Substring(2, 2)),
                                    Convert.ToInt32(linhaReg[2].Substring(0, 2)),
                                    Convert.ToInt32(linhaReg[3].Substring(0, 2)),
                                    Convert.ToInt32(linhaReg[3].Substring(2, 2)),
                                    0
                                    );

                                int Nsr = Convert.ToInt32(linhaReg[0]);

                                marcacoes.Add(Pis, DataHora, Nsr);
                                Contador++;
                                Result = true;
                            }
                            catch
                            {
                                log.AddLog(S);
                                Result = false;
                            }
                        }
                    }

                    File.Delete(ArquivoTemp);
                    Disconnect(TerminalDados.Indice);
                }
                else
                {
                    Disconnect(TerminalDados.Indice);
                    LogMensagem(resultado);
                }
            }

            return(Result);
        }
示例#4
0
        public bool Gertec_ImportarMarcacoes(int Terminal, string TerminalNome, Marcacoes marcacoes)
        {
            bool  Result     = false;
            DBApp db         = new DBApp();
            int   ProximoNsr = db.getLastNsr(Terminal) + 1;

            string diretoriomarcacoes = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\Asseponto\\Marcacoes\\" + TerminalNome;

            Wr.Classes.Files.ForceDirectories(diretoriomarcacoes);

            string ArquivoTemp = Path.GetTempFileName();

            System.Text.Encoding iso_8859_1 = System.Text.Encoding.GetEncoding("iso-8859-1");

            int Contador = 0;

            if (Gertec_Conectar())
            {
                int resultado = envioDll.LeCadastro(IP, 5, ProximoNsr.ToString(), ArquivoTemp);
                if (resultado == 0)
                {
                    FileStream   abreArquivoTxt = new FileStream(ArquivoTemp, FileMode.Open, FileAccess.Read);
                    StreamReader sr             = new StreamReader(abreArquivoTxt, iso_8859_1);
                    string       line           = "";

                    while ((line = sr.ReadLine()) != null)
                    {
                        string[] linhaReg = line.Split(';');
                        if (linhaReg[1] == "3")
                        {
                            string   Pis  = linhaReg[4];
                            bool     Erro = false;
                            DateTime DataHora;

                            try
                            {
                                DataHora = new DateTime(
                                    Convert.ToInt32(linhaReg[2].Substring(4, 4)),
                                    Convert.ToInt32(linhaReg[2].Substring(2, 2)),
                                    Convert.ToInt32(linhaReg[2].Substring(0, 2)),
                                    Convert.ToInt32(linhaReg[3].Substring(0, 2)),
                                    Convert.ToInt32(linhaReg[3].Substring(2, 2)),
                                    0
                                    );

                                int Nsr = Convert.ToInt32(linhaReg[0]);

                                if (Nsr > ProximoNsr)
                                {
                                    ProximoNsr = Nsr;
                                }

                                marcacoes.Add(Pis, DataHora, Nsr);
                                Contador++;
                            }
                            catch
                            {
                                log.AddLog(line);
                                Erro = true;
                            }
                        }
                    }

                    sr.Close();

                    File.Delete(ArquivoTemp);

                    Gertec_Desconectar();

                    if (Contador > 0)
                    {
                        string Arquivo = marcacoes.SaveToFile();
                        log.AddLog(String.Format(Consts.ARQUIVO_GERADO, Arquivo));

                        Result = true;
                    }
                    else
                    {
                        log.AddLog(Consts.SEM_MARCACOES);
                    }

                    if (ProximoNsr > 0)
                    {
                        db.setLastNsr(Terminal, ProximoNsr);
                    }
                }
                else
                {
                    Gertec_Desconectar();
                    LogMensagem(resultado);
                }
            }

            return(Result);
        }
示例#5
0
        public override bool LerMarcacoes(Marcacoes marcacoes, AssepontoRep.Bridge.TipoImportacaoMarcacoes tipoimportacao)
        {
            Disconnect(TerminalDados.Indice);
            Connect(TerminalDados.Indice);

            List <string> lstrEventData;

            string[] split;
            DBApp    bd    = new DBApp();
            int      last  = bd.getLastNsr(TerminalDados.Indice);
            uint     uiNSR = Convert.ToUInt32(last == 0 ? 1 : last);

            try
            {
                this._objController.RequestTotalNSR();
                System.Threading.Thread.Sleep(100);
                lstrEventData = this._objController.GetEventData();
                split         = lstrEventData[6].Split(new string[] { " : " }, StringSplitOptions.None);
                uint uiMaxNSR = Convert.ToUInt32(split[1]);

                log.AddLog(":: ATENÇÃO :: A IMPORTAÇÃO DESSE RELÓGIO PODE DEMORAR, NÃO FINALIZE");
                log.AddLog("              ATÉ QUE TENHA TERMINADO ...");
                log.AddLog("AGUARDE...");
                System.Threading.Thread.Sleep(100);
                for (uint i = uiNSR; i <= uiMaxNSR; i++)
                {
                    this._objController.RequestEventByNSR(i);
                    int seg = 0;
                    System.Threading.Thread.Sleep(100);
                    EConnectionState state = EConnectionState.SendingData;
                    while (state == EConnectionState.SendingData)
                    {
                        state = this._objController.GetConnectionState();
                        //System.Threading.Thread.Sleep(100);
                        seg++;
                    }
                    if (state == EConnectionState.DataReceived)
                    {
                        this._objController.SetConnectionState(EConnectionState.Connected);


                        System.Threading.Thread.Sleep(100);
                        lstrEventData = this._objController.GetEventData();

                        if (lstrEventData == null)
                        {
                            throw new Exception("Evento não encontrado.");
                        }

                        int tipo = -1;
                        for (int c = 0; c < lstrEventData.Count; c++)
                        {
                            if (lstrEventData[c].Contains("Tipo do Registro"))
                            {
                                split = lstrEventData[c].Split(new string[] { " : " }, StringSplitOptions.None);
                                tipo  = Convert.ToInt32(split[1]);
                                break;
                            }
                        }

                        Marcacoes.Marcacao marc;
                        if (tipo == 3)
                        {
                            marc      = new Marcacoes.Marcacao();
                            marc.Tipo = Marcacoes.TiposRegistroAfd.Marcacao;
                            split     = lstrEventData[7].Split(new string[] { " : " }, StringSplitOptions.None);
                            string nsr = split[1];
                            marc.NSR = Convert.ToInt32(nsr);
                            split    = lstrEventData[9].Split(new string[] { " : " }, StringSplitOptions.None);
                            string datetime = split[1].Trim();
                            split         = lstrEventData[10].Split(new string[] { " : " }, StringSplitOptions.None);
                            datetime      = datetime + " " + split[1].Trim();
                            marc.DataHora = Convert.ToDateTime(datetime);
                            split         = lstrEventData[11].Split(new string[] { " : " }, StringSplitOptions.None);
                            string pis = split[1].Replace(".", "").Replace("-", "").Trim();
                            marc.Pis = pis;

                            marcacoes.Add(marc);
                        }
                    }
                }
                bd.setLastNsr(TerminalDados.Indice, (int)uiMaxNSR);
                bool retorno = (marcacoes.Count > 0);

                Disconnect(TerminalDados.Indice);
                return(retorno);
            }
            catch (Exception exError)
            {
                log.AddLog(Consts.ERRO_ENVIO_COMANDO);
                log.AddLog("Descrição ", true);
                log.AddLog(exError.Message);
                Disconnect(TerminalDados.Indice);
                return(false);
            }
        }
示例#6
0
        public bool Dimep_ImportarMarcacoes(int Terminal, string TerminalNome, Marcacoes marcacoes)
        {
            bool  Result     = false;
            DBApp db         = new DBApp();
            int   ProximoNsr = db.getLastNsr(Terminal) + 1;

            int Contador = 0;

            MRPRecord[] registrosMRP;

            log.AddLog(AssepontoRep.Consts.INICIALIZANDO_IMPORTACAO_ARQUIVO);

            if (Dimep_Conectar())
            {
                try
                {
                    _watchComm.RepositioningMRPRecordsPointer(ProximoNsr.ToString());

                    registrosMRP = this._watchComm.InquiryMRPRecords(false, false, true, false);

                    while (registrosMRP != null)
                    {
                        foreach (MRPRecord registroMRP in registrosMRP)
                        {
                            if (registroMRP is MRPRecord_RegistrationMarkingPoint)
                            {
                                string Pis = ((MRPRecord_RegistrationMarkingPoint)registroMRP).Pis;

                                DateTime DataHora = ((MRPRecord_RegistrationMarkingPoint)registroMRP).DateTimeMarkingPoint;
                                int      Nsr      = Convert.ToInt32(((MRPRecord_RegistrationMarkingPoint)registroMRP).NSR);
                                marcacoes.Add(Pis, DataHora, Nsr);
                                Contador++;

                                if (Nsr > ProximoNsr)
                                {
                                    ProximoNsr = Nsr;
                                }
                            }
                        }

                        registrosMRP = _watchComm.ConfirmationReceiptMRPRecords();
                    }

                    if (Contador > 0)
                    {
                        string Arquivo = marcacoes.SaveToFile();
                        log.AddLog(String.Format(AssepontoRep.Consts.ARQUIVO_GERADO, Arquivo));

                        Result = true;

                        db.setLastNsr(Terminal, ProximoNsr);
                    }
                    else
                    {
                        log.AddLog(AssepontoRep.Consts.SEM_MARCACOES);
                    }
                }
                catch (Exception ex)
                {
                    log.AddLog(ex.Message);
                }
                finally
                {
                    Dimep_Desconectar();
                }
            }

            return(Result);
        }
示例#7
0
        public override bool LerMarcacoes(Marcacoes marcacoes, TipoImportacaoMarcacoes tipoimportacao)
        {
            base.LerMarcacoes(marcacoes, tipoimportacao);

            bool   Result = false;
            DBApp  db = new DBApp();
            int    ProximoNsr = db.getLastNsr(TerminalDados.Indice);
            int    NRegistrosLidos = 0, statusColeta = 0, nsr = 0, ret = 0, tentativas = 0;
            bool   recebeuUltimoBilhete = false;
            string dadosRegistro        = string.Empty;

            if (Connect(0))
            {
                try
                {
                    nsr = ProximoNsr;
                    while (!recebeuUltimoBilhete)
                    {
                        nsr++;
                        ret = innerRep.SolicitarRegistroNsr(nsr);
                        //string UltimoRegistro = innerRep.LerNumUltimoNsr();

                        if (ret == 0)
                        {
                            statusColeta = innerRep.LerStatusColeta();
                            tentativas   = 0;
                            while (statusColeta < 2 && tentativas < 1000)
                            {
                                Thread.Sleep(10);
                                Application.DoEvents();
                                Thread.Sleep(10);
                                statusColeta = innerRep.LerStatusColeta();
                                tentativas++;
                            }

                            if ((statusColeta == (int)Sdk_Inner_Rep.InnerRepPlusSDK.StatusLeitura.FINALIZADA_COM_ULTIMO_REGISTRO) ||
                                (statusColeta == (int)Sdk_Inner_Rep.InnerRepPlusSDK.StatusLeitura.FINALIZADA_COM_REGISTRO))
                            {
                                string numSerie = innerRep.LerNumSerieRep();
                                statusColeta = innerRep.LerResultadoColeta();

                                dadosRegistro = innerRep.LerRegistroLinha();

                                if (dadosRegistro != "" && dadosRegistro != null)
                                {
                                    AssepontoRep.Marcacoes.Marcacao mrc = new AssepontoRep.Marcacoes.Marcacao();

                                    if (marcacoes.InterpretarRegistroAfd(dadosRegistro, out mrc))
                                    {
                                        if (mrc.Tipo == Marcacoes.TiposRegistroAfd.Marcacao)
                                        {
                                            marcacoes.Add(mrc);
                                        }
                                    }
                                }


                                NRegistrosLidos++;
                            }
                            if ((statusColeta == (int)Sdk_Inner_Rep.InnerRepPlusSDK.StatusLeitura.FINALIZADA_SEM_REGISTRO) ||
                                (statusColeta == (int)Sdk_Inner_Rep.InnerRepPlusSDK.StatusLeitura.FINALIZADA_COM_ULTIMO_REGISTRO))
                            {
                                recebeuUltimoBilhete = true;
                            }
                        }
                    }

                    if (marcacoes.Count == 0)
                    {
                        log.AddLog(Consts.MARCACOES_NAO_HA_NOVAS);
                    }

                    innerRep.FinalizarLeitura();
                    Result = true;
                }
                catch (Exception ex)
                {
                    log.AddLog(ex.Message);
                }
            }
            return(Result);
        }
示例#8
0
        private bool RecebeMarcacoesTCP(Marcacoes marcacoes)
        {
            bool Result = false;

            DBApp db  = new DBApp();
            int   NSR = db.getLastNsr(TerminalDados.Indice);

            if (NSR == 0)
            {
                NSR = 1;
            }
            string mensagem = "!06,R,004,";
            string CRC      = CalculaCRC(mensagem, CalculaNsr(NSR));
            bool   primeiro = true;

            TcpClient     sock = new TcpClient();
            NetworkStream stream;

            sock.Connect(TerminalDados.IP, TerminalDados.Porta);
            stream = sock.GetStream();

            EnviaMensagem(mensagem.Substring(0, 10), stream);
            EnviaNSR(NSR, stream);
            EnviaMensagem(",", stream);
            EnviaMensagem(CRC, stream);

            bool recolhe = true;

            log.AddLog(string.Format(Consts.INICIALIZANDO_IMPORTACAO_ARQUIVO_NSR, NSR));

            while (recolhe)
            {
                Application.DoEvents();
                if (sock.Available > 9)
                {
                    byte[] comeco = new byte[10];
                    stream.Read(comeco, 0, 10);
                    string cabecalho = ConverteMensagem(comeco);

                    if (cabecalho == "!06,I,002,")
                    {
                        stream.Read(new byte[sock.Available], 0, sock.Available);
                        break;
                    }

                    int quantidadeBytes = Convert.ToInt32(cabecalho.Substring(6, 3));

                    byte[] byMarcacoes = new byte[quantidadeBytes];

                    while (sock.Available <= quantidadeBytes)
                    {
                    }

                    stream.Read(byMarcacoes, 0, byMarcacoes.Length);

                    log.AddLog(CortaMensagem(byMarcacoes, marcacoes, out NSR).ToString() + " restantes");

                    byte[] limpa = new byte[3];

                    stream.Read(limpa, 0, limpa.Length);

                    EnviaMensagem("!06,I,002,06,78", stream);
                    primeiro = false;

                    Application.DoEvents();
                }
            }

            if (Cancelar)
            {
                log.AddLog("CANCELADO");
            }
            else
            if (primeiro)
            {
                log.AddLog(Consts.MARCACOES_NAO_HA_NOVAS);
            }

            stream.Close();
            sock.Close();

            return(marcacoes.Count > 0);
        }