public void gerarACJEF(string pDataIni, string pDataFim) { ComponentePonto.ComponentePonto ponto = new ComponentePonto.ComponentePonto(); ACJEF_Cabecalho ACJEFCabecalho = new ACJEF_Cabecalho(); // Registro 1 - Cabecalho /* * Campo01: String; // “000000000”. * Campo02: String; // Tipo do registro, “1”. * Campo03: String; // Tipo de identificador do empregador, “1” para CNPJ ou “2” para CPF. * Campo04: String; // CNPJ ou CPF do empregador. * Campo05: String; // CEI do empregador, quando existir. * Campo06: String; // Razão social ou nome do empregador. * Campo07: String; // Data inicial dos registros no arquivo, no formato “ddmmaaaa”. * Campo08: String; // Data final dos registros no arquivo, no formato “ddmmaaaa”. * Campo09: String; // Data de geração do arquivo, no formato “ddmmaaaa”. * Campo10: String; // Horário da geração do arquivo, no formato “hhmm”. */ ACJEFCabecalho.Campo03 = "1"; ACJEFCabecalho.Campo04 = Empresa.Cnpj; ACJEFCabecalho.Campo05 = ""; ACJEFCabecalho.Campo06 = Empresa.RazaoSocial; ACJEFCabecalho.Campo07 = System.DateTime.Parse(pDataIni).ToString("ddMMyyyy"); ACJEFCabecalho.Campo08 = System.DateTime.Parse(pDataFim).ToString("ddMMyyyy"); ACJEFCabecalho.Campo09 = DateTime.Today.ToString("ddMMyyyy"); ACJEFCabecalho.Campo10 = DateTime.Now.ToString("HHmm"); ponto.ACJEFCabecalho = ACJEFCabecalho; List <PontoHorarioDTO> listaPontoHorario = new List <PontoHorarioDTO>(); try { using (ServicoPontoClient serv = new ServicoPontoClient()) { PontoHorarioDTO horario = new PontoHorarioDTO(); horario.Empresa = Empresa; listaPontoHorario = serv.selectPontoHorario(horario); } } catch (Exception ex) { throw ex; } if (listaPontoHorario.Count > 0) { List <ACJEF_Registro2> listaACJEFRegistro2 = new List <ACJEF_Registro2>(); for (int i = 0; i < listaPontoHorario.Count; i++) { // Registro 2 - Horários Contratuais /* * Campo01: String; // NSR. * Campo02: String; // Tipo do registro, “2”. * Campo03: String; // Código do Horário (CH), no formato “nnnn”. * Campo04: String; // Entrada, no formato “hhmm”. * Campo05: String; // Saída, no formato “hhmm”. * Campo06: String; // Início intervalo, no formato “hhmm”. * Campo07: String; // Fim intervalo, no formato “hhmm”. */ ACJEF_Registro2 ACJEFRegistro2 = new ACJEF_Registro2(); ACJEFRegistro2.Campo03 = listaPontoHorario[i].Codigo; if (listaPontoHorario[i].HoraInicioJornada.Trim().Length == 8) { ACJEFRegistro2.Campo04 = listaPontoHorario[i].HoraInicioJornada.Substring(0, 2) + listaPontoHorario[i].HoraInicioJornada.Substring(3, 2); } if (listaPontoHorario[i].HoraFimJornada.Trim().Length == 8) { ACJEFRegistro2.Campo05 = listaPontoHorario[i].HoraFimJornada.Substring(0, 2) + listaPontoHorario[i].HoraFimJornada.Substring(3, 2); } if (listaPontoHorario[i].Saida01.Trim().Length == 8) { ACJEFRegistro2.Campo06 = listaPontoHorario[i].Saida01.Substring(0, 2) + listaPontoHorario[i].Saida01.Substring(3, 2); } if (listaPontoHorario[i].Entrada02.Trim().Length == 8) { ACJEFRegistro2.Campo07 = listaPontoHorario[i].Entrada02.Substring(0, 2) + listaPontoHorario[i].Entrada02.Substring(3, 2); } listaACJEFRegistro2.Add(ACJEFRegistro2); } ponto.ListaACJEFRegistro2 = listaACJEFRegistro2; } List <ACJEF_Registro3> listaACJEFRegistro3 = new List <ACJEF_Registro3>(); PontoFechamentoJornadaViewModel fechamento = new PontoFechamentoJornadaViewModel(); for (int i = 0; i < fechamento.ListaPontoFechamentoJornada.Count; i++) { // Registro 3 - Detalhe /* * Campo01: String; // NSR. * Campo02: String; // tipo do registro, “3”. * Campo03: String; // Número do PIS do empregado. * Campo04: String; // Data de início da jornada, no formato “ddmmaaaa”. * Campo05: String; // Primeiro horário de entrada da jornada, no formato “hhmm”. * Campo06: String; // Código do horário (CH) previsto para a jornada, no formato “nnnn”. * Campo07: String; // Horas diurnas não extraordinárias, no formato “hhmm”. * Campo08: String; // Horas noturnas não extraordinárias, no formato “hhmm”. * Campo09: String; // Horas extras 1, no formato “hhmm”. * Campo10: String; // Percentual do adicional de horas extras 1, onde as 3 primeiras posições indicam a parte inteira e a seguinte a fração decimal. * Campo11: String; // Modalidade da hora extra 1, assinalado com “D” se as horas extras forem diurnas e “N” se forem noturnas. * Campo12: String; // Horas extras 2, no formato “hhmm”. * Campo13: String; // Percentual do adicional de horas extras 2, onde as 3 primeiras posições indicam a parte inteira e a seguinte a fração decimal. * Campo14: String; // Modalidade da hora extra 2, assinalado com “D” se as horas extras forem diurnas e “N” se forem noturnas. * Campo15: String; // Horas extras 3, no formato “hhmm”. * Campo16: String; // Percentual do adicional de horas extras 3, onde as 3 primeiras posições indicam a parte inteira e a seguinte a fração decimal. * Campo17: String; // Modalidade da hora extra 3, assinalado com “D” se as horas extras forem diurnas e “N” se forem noturnas. * Campo18: String; // Horas extras 4, no formato “hhmm”. * Campo19: String; // Percentual do adicional de horas extras 4, onde as 3 primeiras posições indicam a parte inteira e a seguinte a fração decimal. * Campo20: String; // Modalidade da hora extra 4, assinalado com “D” se as horas extras forem diurnas e “N” se forem noturnas. * Campo21: String; // Horas de faltas e/ou atrasos. * Campo22: String; // Sinal de horas para compensar. “1” se for horas a maior e “2” se for horas a menor. * Campo23: String; // Saldo de horas para compensar no formato “hhmm”. */ ACJEF_Registro3 ACJEFRegistro3 = new ACJEF_Registro3(); ACJEFRegistro3.Campo03 = fechamento.ListaPontoFechamentoJornada[i].Colaborador.PisNumero; ACJEFRegistro3.Campo04 = fechamento.ListaPontoFechamentoJornada[i].DataFechamento.Value.ToString("ddMMyyyy"); if (fechamento.ListaPontoFechamentoJornada[i].Entrada01.Trim().Length == 8) { ACJEFRegistro3.Campo05 = fechamento.ListaPontoFechamentoJornada[i].Entrada01.Substring(0, 2) + fechamento.ListaPontoFechamentoJornada[i].Entrada01.Substring(3, 2); } ACJEFRegistro3.Campo06 = fechamento.ListaPontoFechamentoJornada[i].CodigoHorario; if (String.IsNullOrEmpty(fechamento.ListaPontoFechamentoJornada[i].CargaHorariaDiurna).ToString().Trim().Length == 8) { ACJEFRegistro3.Campo07 = fechamento.ListaPontoFechamentoJornada[i].CargaHorariaDiurna.Substring(0, 2) + fechamento.ListaPontoFechamentoJornada[i].CargaHorariaDiurna.Substring(3, 2); } if (String.IsNullOrEmpty(fechamento.ListaPontoFechamentoJornada[i].CargaHorariaNoturna).ToString().Trim().Length == 8) { ACJEFRegistro3.Campo08 = fechamento.ListaPontoFechamentoJornada[i].CargaHorariaNoturna.Substring(0, 2) + fechamento.ListaPontoFechamentoJornada[i].CargaHorariaNoturna.Substring(3, 2); } if (String.IsNullOrEmpty(fechamento.ListaPontoFechamentoJornada[i].HoraExtra01).ToString().Trim().Length == 8) { ACJEFRegistro3.Campo09 = fechamento.ListaPontoFechamentoJornada[i].HoraExtra01.Substring(0, 2) + fechamento.ListaPontoFechamentoJornada[i].HoraExtra01.Substring(3, 2); } ACJEFRegistro3.Campo10 = fechamento.ListaPontoFechamentoJornada[i].PercentualHoraExtra01.Value.ToString("000") + "0"; ACJEFRegistro3.Campo11 = fechamento.ListaPontoFechamentoJornada[i].ModalidadeHoraExtra01; if (String.IsNullOrEmpty(fechamento.ListaPontoFechamentoJornada[i].HoraExtra02).ToString().Trim().Length == 8) { ACJEFRegistro3.Campo12 = fechamento.ListaPontoFechamentoJornada[i].HoraExtra02.Substring(0, 2) + fechamento.ListaPontoFechamentoJornada[i].HoraExtra02.Substring(3, 2); } ACJEFRegistro3.Campo13 = fechamento.ListaPontoFechamentoJornada[i].PercentualHoraExtra02.Value.ToString("000") + "0"; ACJEFRegistro3.Campo14 = fechamento.ListaPontoFechamentoJornada[i].ModalidadeHoraExtra02; if (String.IsNullOrEmpty(fechamento.ListaPontoFechamentoJornada[i].HoraExtra03).ToString().Trim().Length == 8) { ACJEFRegistro3.Campo15 = fechamento.ListaPontoFechamentoJornada[i].HoraExtra03.Substring(0, 2) + fechamento.ListaPontoFechamentoJornada[i].HoraExtra03.Substring(3, 2); } ACJEFRegistro3.Campo16 = fechamento.ListaPontoFechamentoJornada[i].PercentualHoraExtra03.Value.ToString("000") + "0"; ACJEFRegistro3.Campo17 = fechamento.ListaPontoFechamentoJornada[i].ModalidadeHoraExtra03; if (String.IsNullOrEmpty(fechamento.ListaPontoFechamentoJornada[i].HoraExtra04).ToString().Trim().Length == 8) { ACJEFRegistro3.Campo18 = fechamento.ListaPontoFechamentoJornada[i].HoraExtra04.Substring(0, 2) + fechamento.ListaPontoFechamentoJornada[i].HoraExtra04.Substring(3, 2); } ACJEFRegistro3.Campo19 = fechamento.ListaPontoFechamentoJornada[i].PercentualHoraExtra04.Value.ToString("000") + "0"; ACJEFRegistro3.Campo20 = fechamento.ListaPontoFechamentoJornada[i].ModalidadeHoraExtra04; if (String.IsNullOrEmpty(fechamento.ListaPontoFechamentoJornada[i].FaltaAtraso).ToString().Trim().Length == 8) { ACJEFRegistro3.Campo21 = fechamento.ListaPontoFechamentoJornada[i].FaltaAtraso.Substring(0, 2) + fechamento.ListaPontoFechamentoJornada[i].FaltaAtraso.Substring(3, 2); } ACJEFRegistro3.Campo22 = fechamento.ListaPontoFechamentoJornada[i].Compensar; if (String.IsNullOrEmpty(fechamento.ListaPontoFechamentoJornada[i].BancoHoras).ToString().Trim().Length == 8) { ACJEFRegistro3.Campo23 = fechamento.ListaPontoFechamentoJornada[i].BancoHoras.Substring(0, 2) + fechamento.ListaPontoFechamentoJornada[i].BancoHoras.Substring(3, 2); } listaACJEFRegistro3.Add(ACJEFRegistro3); } ponto.ListaACJEFRegistro3 = listaACJEFRegistro3; ACJEF_Trailer ACJEFTrailer = new ACJEF_Trailer(); ponto.ACJEFTrailer = ACJEFTrailer; SaveFileDialog dialog = new SaveFileDialog(); dialog.Filter = "Arquivo ACJEF (*.txt) | *.txt"; dialog.Title = "Selecione o arquivo"; dialog.InitialDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); if (dialog.ShowDialog() == true) { ponto.gerarArquivoACJEF(dialog.FileName); } }
public void importarArquivo(string pNomeArquivo) { ComponentePonto.ComponentePonto ponto = new ComponentePonto.ComponentePonto(); ponto.processarArquivoAFD(pNomeArquivo); // pega o ID do relógio de ponto PontoRelogioDTO relogio = new PontoRelogioDTO(); relogio.NumeroSerie = ponto.pontoAFD.AFDCabecalho.Campo07; try { using (ServicoPontoClient serv = new ServicoPontoClient()) { List <PontoRelogioDTO> listaRelogio = serv.selectPontoRelogio(relogio); if (listaRelogio.Count > 0) { relogio = listaRelogio[0]; } } } catch (Exception ex) { throw ex; } // verificar se os dados estão no banco de dados e grava os que não estão for (int i = 0; i < ponto.pontoAFD.ListaAFDRegistro3.Count; i++) { // pega o ID do colaborador ColaboradorDTO colaborador = new ColaboradorDTO(); colaborador.PisNumero = ponto.pontoAFD.ListaAFDRegistro3[i].Campo05; try { using (ServicoPontoClient serv = new ServicoPontoClient()) { List <ColaboradorDTO> listaColaborador = serv.selectColaborador(colaborador); if (listaColaborador.Count > 0) { colaborador = listaColaborador[0]; PontoMarcacaoDTO marcacao = new PontoMarcacaoDTO(); marcacao.Colaborador = colaborador; marcacao.PontoRelogio = relogio; string dataMarcacao = ponto.pontoAFD.ListaAFDRegistro3[i].Campo03.Substring(0, 2) + "/" + ponto.pontoAFD.ListaAFDRegistro3[i].Campo03.Substring(2, 2) + "/" + ponto.pontoAFD.ListaAFDRegistro3[i].Campo03.Substring(4, 4); marcacao.DataMarcacao = System.DateTime.Parse(dataMarcacao); List <PontoMarcacaoDTO> listaMarcacao = serv.selectPontoMarcacao(marcacao); if (listaMarcacao.Count == 0) { marcacao.Nsr = int.Parse(ponto.pontoAFD.ListaAFDRegistro3[i].Campo01); string horaMarcacao = ponto.pontoAFD.ListaAFDRegistro3[i].Campo04.Substring(0, 2) + ":" + ponto.pontoAFD.ListaAFDRegistro3[i].Campo04.Substring(2, 2) + ":00"; marcacao.HoraMarcacao = horaMarcacao; marcacao.TipoRegistro = "O"; serv.salvarAtualizarPontoMarcacao(marcacao); } } } } catch (Exception ex) { throw ex; } } }