Option Strict Off
Option Explicit On
Imports VB = Microsoft.VisualBasic

Imports fatd_faturamento.BLL.Repositorio
Imports fatd_faturamento.ENTIDADE
Friend Class FrmEnviarBcosPix
	Inherits System.Windows.Forms.Form
	Dim intBcoId As Integer
	Dim iintBanID

	Dim strsql As String
	Dim istrMesAnoAnt As String
	Dim strBanco As String

	Dim strPath As String
	Dim strTabela As String
	Dim intBanID As String
	Dim lngSequencial As Integer
	Dim strNomeArquivo As String
	Dim strNomeArquivoSecundario As String
	Dim strExtensaoArq As String
	Dim strConvenio As String
	Dim strNrBco As String
	Dim strNmBco As String
	Public sRemessaBoleto As String
	Private LImagem() As Byte
	Private sNomeEmpresa As String
	Private sEnderecoEmpresa As String
	Private sCepEmpresa As String
	Private sCidadeEmpresa As String
	Private sUFempresa As String
	Private sBairroEmpresa As String
	Private sFoneEmpresa As String
	Private sWebEmpresa As String
	Private scpfCNPF As String
	Private sFiltraBancos As String

	Private Sub chkTrans_CheckStateChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles chkTrans.CheckStateChanged
		Call pegaDatasVencimento()
	End Sub

	Private Sub FrmEnviarBcosPix_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load

		Try
			strTabela = "nf f"
			'strNomeArquivoSecundario = GetConfig("arquivo.geracao.banco") & Format(Date.Now, "yyyyMMdd") & ".rem" '"GeracaoBanco.rem"
			strNomeArquivoSecundario = IIf(sRemessaBoleto = "B", "RemBoleto", "RemBanco") & Format(Date.Now, "ddMMyyyy") & ".rem"
			'*strPath = LeConfig("DIR_GERACAO_BANCO")
			strPath = GetConfig("dir.geracao.banco")
			'*txtMesAno.Text = LeConfig("MESANOFATURAMENTO")
			txtMesAno.Text = GetConfig("mes.ano.faturamento")
			istrMesAnoAnt = txtMesAno.Text
			txtDir.Text = strPath & strNomeArquivoSecundario
			txtMesAno.Text = fdataBanco(txtMesAno.Text)
			'PreencherBanco(cbxBanco)
			'sFiltraBancos = GetConfig("filtra.bancos")

			If sRemessaBoleto = "B" Then
				cmbTipo.SelectedIndex = 1
				Label4.Text = "BOLETO"
				chkMovtoExclui.Visible = False
				If sFiltraBancos = "N" Then
					cbxBanco.Enabled = False
				Else
					sCarregaBanco()
					cbxBanco.SelectedIndex = 0
					intBanID = VB6.GetItemData(cbxBanco, cbxBanco.SelectedIndex)
					Call Buscadados()
				End If
			Else
				cmbTipo.SelectedIndex = 0
				Label4.Text = "REMESSA"
				chkMovtoExclui.Visible = True

				sCarregaBanco()
				cbxBanco.SelectedIndex = 0
				intBanID = VB6.GetItemData(cbxBanco, cbxBanco.SelectedIndex)
				Call Buscadados()
			End If



			pgb.Value = 0
			System.Windows.Forms.Application.DoEvents()

			Call pegaDatasVencimento()
			'PreencherDatasVencimento(cmbDiaVenc)

			cmdGerar.Enabled = True
			cbProcessar.Enabled = False
			LVRota.Enabled = False
			chktodas.Enabled = False

		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: FrmEnviarBcosPix_Load" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try

	End Sub
	Private Sub cbxBanco_SelectedIndexChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cbxBanco.SelectedIndexChanged
		'intBcoId = cbxBanco.ItemData(cbxBanco.ListIndex)

		Dim istrBanNr As String
		Dim istrBanNm As String

		iintBanID = VB6.GetItemData(cbxBanco, cbxBanco.SelectedIndex)
		istrBanNr = Mid(VB6.GetItemString(cbxBanco, cbxBanco.SelectedIndex), 1, 3)
		istrBanNm = Trim(Mid(VB6.GetItemString(cbxBanco, cbxBanco.SelectedIndex), 6))

		Try
			Call Buscadados()

			If istrBanNm.Contains("CAIXA") Then
				txtSequencial.Text = Trim(Str(lngSequencial))
				txtDir.Text = strPath & IIf(strNomeArquivo = "", "Seq" & lngSequencial & "_" & strNomeArquivoSecundario, strNomeArquivo)
			Else
				txtSequencial.Text = Trim(Str(lngSequencial))
				txtDir.Text = strPath & IIf(strNomeArquivo = "", strNomeArquivoSecundario, strNomeArquivo)
			End If


		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: cbxBanco_SelectedIndexChanged" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try
	End Sub
	Private Function Buscadados() As Object

		Dim lstrsql As String
		Dim dt As DataTable
		Dim objAtualizaBancoDados As New entidadeAtualizaBancoDados
		Dim repositorioAtualizaBancoDados As New repositorioAtualizaBancoDados

		Try
			lstrsql = ""
			lstrsql = lstrsql & "SELECT ban_id, nrbco, nmbco, sequencial, nmarquivo, nmarqextesao, convenio, sequencialboleto "
			lstrsql = lstrsql & " FROM bancos "
			lstrsql = lstrsql & " WHERE tpmovto = 'D' AND ban_id = " & iintBanID
			'lstrsql = lstrsql & "ORDER BY LEFT(`rota`, 4) ASC "
			objAtualizaBancoDados.QUERY_NAME = lstrsql
			dt = repositorioAtualizaBancoDados.Consultar(objAtualizaBancoDados)

			If dt.Rows.Count <> 0 Then
				For Each row As DataRow In dt.Rows

					If cmbTipo.SelectedIndex = 0 Then
						lngSequencial = row.Item("sequencial")
						lngSequencial = IIf(IsDBNull(row.Item("sequencial")), 1, row.Item("sequencial"))
					Else
						lngSequencial = row.Item("sequencialboleto")
						lngSequencial = IIf(IsDBNull(row.Item("sequencialboleto")), 1, row.Item("sequencialboleto"))
						lngSequencial = lngSequencial + 1
					End If
					strConvenio = IIf(IsDBNull(row.Item("convenio")), "", row.Item("convenio"))
					strNrBco = IIf(IsDBNull(row.Item("nrbco")), "000", row.Item("nrbco"))
					strNmBco = IIf(IsDBNull(row.Item("nmbco")), "indefinido", row.Item("nmbco"))
					strNomeArquivo = IIf(IsDBNull(row.Item("nmarquivo")), "????????", row.Item("nmarquivo"))

					If strNmBco = "SICREDI" Then
						strNomeArquivo = Replace(strNomeArquivo, "%cv", VB6.Format(strConvenio, "000"))
					End If

					If InStr(strNomeArquivo, "%dd%mm%aaaa") > 0 Then
						strNomeArquivo = Replace(strNomeArquivo, "%dd%mm%aaaa", Mid(CStr(Today), 1, 2) & Mid(CStr(Today), 4, 2) & Mid(CStr(Today), 7, 4))
						If gstrEmpresa_Sigla = "EFLUL" Or gstrEmpresa_Sigla = "CERIS" Then strNomeArquivo = strNomeArquivo
					Else
						If InStr(strNomeArquivo, "%dd") > 0 Then
							strNomeArquivo = Replace(strNomeArquivo, "%dd", Mid(CStr(Today), 1, 2))
						End If
						If InStr(strNomeArquivo, "%mm") > 0 Then
							strNomeArquivo = Replace(strNomeArquivo, "%mm", Mid(CStr(Today), 4, 2))
							If strNmBco <> "SICREDI" Then
								If gstrEmpresa_Sigla = "EFLUL" Or gstrEmpresa_Sigla = "CERIS" Then strNomeArquivo = strNomeArquivo & "0"
							End If
						End If
						If InStr(strNomeArquivo, "%aa") > 0 Then
							strNomeArquivo = Replace(strNomeArquivo, "%aa", Mid(CStr(Today), 9, 2))
							If gstrEmpresa_Sigla = "EFLUL" Or gstrEmpresa_Sigla = "CERIS" Then strNomeArquivo = strNomeArquivo & "0"
						End If
					End If

					If InStr(strNomeArquivo, "%cv") > 0 Then
						strNomeArquivo = Replace(strNomeArquivo, "%cv", VB6.Format(strConvenio, "000000"))
						strExtensaoArq = IIf(IsDBNull(row.Item("nmarqextesao")), "???", row.Item("nmarqextesao"))
						strNomeArquivo = strNomeArquivo & "." & strExtensaoArq
					End If

				Next
			End If

		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: Buscadados" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Function
		End Try

	End Function
	Private Sub cbProcessar_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cbProcessar.Click
		Try
			If cmbTipo.SelectedIndex = 0 Then
				If chkTrans.CheckState Then
					strTabela = "nftransicao as f"
				Else
					strTabela = "nf as f"
				End If
				If Len(txtMesAno.Text) > 0 Then
					Call BuscaRota()
				End If
			Else
				If chkTrans.CheckState Then
					strTabela = "nftransicao as f"
				Else
					strTabela = "nf as f"
				End If
				If Len(txtMesAno.Text) > 0 Then
					Call BuscaRota()
				End If
			End If

		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: cbProcessar_Click" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try

	End Sub

	Private Sub BuscaRota()

		Dim LCItens As System.Windows.Forms.ListViewItem
		Dim lstrsql As String
		Dim dt As DataTable
		Dim objAtualizaBancoDados As New entidadeAtualizaBancoDados
		Dim repositorioAtualizaBancoDados As New repositorioAtualizaBancoDados

		Try
			lstrsql = ""
			lstrsql = lstrsql & "SELECT Distinct cast(LEFT(F.rota,4) as decimal) as rotagrupo, SUM(F.valortot) total, COUNT(*) qtde  "
			lstrsql = lstrsql & " FROM " & strTabela

			If sFiltraBancos = "N" Then
				lstrsql = lstrsql & " WHERE f.mesano = '" & Me.txtMesAno.Text & "' "
			Else
				lstrsql = lstrsql & " WHERE f.banarrec = " & iintBanID
				lstrsql = lstrsql & " And f.mesano = '" & Me.txtMesAno.Text & "' "
			End If

			If optA.Checked = True Then
				lstrsql = lstrsql & "  AND f.grupo = 'A' "
			ElseIf optB.Checked = True Then
				lstrsql = lstrsql & "  AND f.grupo = 'B' "
			End If

			If VB6.GetItemString(Me.cmbDiaVenc, Me.cmbDiaVenc.SelectedIndex) <> "" Then
				lstrsql = lstrsql & "  AND DAY(f.datavenc) = """ & VB6.Format(VB6.GetItemString(Me.cmbDiaVenc, Me.cmbDiaVenc.SelectedIndex), "00") & """ "
			End If
			If Len(Trim(Me.txtZona.Text)) > 0 Then
				lstrsql = lstrsql & "  AND f.zona = '" & Me.txtZona.Text & "' "
			End If
			If Len(Trim(Me.txtLivro.Text)) > 0 Then
				lstrsql = lstrsql & "  AND f.livro = '" & Me.txtLivro.Text & "' "
			End If
			If Len(Trim(Me.txtConta.Text)) > 0 Then
				lstrsql = lstrsql & "  AND f.conta = '" & Me.txtConta.Text & "' "
			End If
			'lstrsql = lstrsql & "  AND f.codclas in ('9105','9102','9104','9101') "
			lstrsql = lstrsql & " GROUP BY rotagrupo ORDER BY rotagrupo ASC"
			objAtualizaBancoDados.QUERY_NAME = lstrsql
			dt = repositorioAtualizaBancoDados.Consultar(objAtualizaBancoDados)

			If dt.Rows.Count <> 0 Then
				'LCItens = LVRota.Items.Add("Todas as rotas")
				For Each row As DataRow In dt.Rows
					If Not IsDBNull(row.Item("rotagrupo")) Then
						LCItens = LVRota.Items.Add(IIf(IsDBNull(row.Item("rotagrupo")), "", row.Item("rotagrupo"))) '& " - " & VB6.Format(row.Item("total"), "standard") & " / " & row.Item("qtde")))
					End If
				Next
				LVRota.Enabled = True
				cmdGerar.Enabled = True
				chktodas.Enabled = True
			Else
				MsgBox("Não há rotas a serem processadas!", MsgBoxStyle.OkOnly, "Fatwin")
				LVRota.Enabled = False
				cmdGerar.Enabled = False
				chktodas.Enabled = False
			End If
			Me.Cursor = System.Windows.Forms.Cursors.Default
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: BuscaRota" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try

	End Sub

	Private Sub cbSalvarArq_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cbSalvarArq.Click
		Try

			fbdBanco.ShowDialog()
			txtDir.Text = fbdBanco.SelectedPath & "\" & IIf(strNomeArquivo = "", strNomeArquivoSecundario, strNomeArquivo)

		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: cbSalvarArq_Click" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try

	End Sub
	Private Sub FrmEnviarBcosPix_KeyPress(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
		Try
			Dim KeyAscii As Short = Asc(eventArgs.KeyChar)
			If KeyAscii = System.Windows.Forms.Keys.Return Then
				TabEnter(KeyAscii, eventArgs)
			End If
			eventArgs.KeyChar = Chr(KeyAscii)
			If KeyAscii = 0 Then
				eventArgs.Handled = True
			End If
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: FrmEnviarBcosPix_KeyPress" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try
	End Sub
	Private Sub FrmEnviarBcosPix_FormClosed(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
		'*If rsBanco.State = 1 Then rsBanco.Close()
	End Sub
	Private Sub txtDir_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtDir.Enter
		Try
			txtDir.SelectionStart = 0
			txtDir.SelectionLength = Len(txtDir.Text)
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: txtDir_Enter" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try
	End Sub
	Private Sub txtMesAno_Leave(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtMesAno.Leave
		Try
			txtMesAno.Text = fdataBanco(txtMesAno.Text)
			If Len(Trim(txtMesAno.Text)) < 1 Then
				MsgBox("Mês/ano inválidos!", MsgBoxStyle.Exclamation, "Aviso !")
				txtMesAno.Focus()
			ElseIf Len(Trim(txtMesAno.Text)) > 0 Then
				If cbxBanco.Text <> "" Then
					iintBanID = VB6.GetItemData(cbxBanco, cbxBanco.SelectedIndex)
					Call Buscadados()
				End If
				'Call Buscadados()
				txtSequencial.Text = Trim(Str(lngSequencial))
				If istrMesAnoAnt <> Me.txtMesAno.Text Then
					istrMesAnoAnt = Me.txtMesAno.Text
					Call pegaDatasVencimento()
				End If
			End If
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: txtMesAno_Leave" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try
	End Sub
	Private Sub txtMesAno_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtMesAno.Enter
		Try
			txtMesAno.SelectionStart = 0
			txtMesAno.SelectionLength = Len(txtMesAno.Text)
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: txtMesAno_Enter" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try
	End Sub
	Private Sub txtSequencial_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtSequencial.Enter
		Try
			txtSequencial.SelectionStart = 0
			txtSequencial.SelectionLength = Len(txtSequencial.Text)
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: txtSequencial_Enter" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try
	End Sub
	Private Sub txtSequencial_Leave(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtSequencial.Leave
		Try
			lngSequencial = CInt(Trim(txtSequencial.Text))
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: txtSequencial_Enter" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
		Exit Sub
		End Try
	End Sub
	Private Sub LVRota_ItemCheck(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.ItemCheckEventArgs) Handles LVRota.ItemCheck
		'Call TotalizaRota()
	End Sub

	Private Function TotalizaRota() As Object
		Dim strValor As String
		Dim dblValor As Double
		Dim lngQuant As Integer
		Dim intConta As Short

		Try

			dblValor = 0
			lngQuant = 0

			For intConta = 0 To LVRota.Items.Count - 1
				If LVRota.Items.Item(intConta).Checked = True Then
					strValor = LVRota.Items.Item(intConta).Text
					dblValor = dblValor + CDbl(Mid(strValor, InStr(1, strValor, "-") + 1, (InStr(1, strValor, "/")) - (InStr(1, strValor, "-") + 1)))
					lngQuant = lngQuant + CInt(Mid(strValor, InStr(1, strValor, "/") + 1))
				End If
			Next intConta

			lblValorTotal.Text = CStr(VB6.Format(dblValor, "standard"))
			lblQtde.Text = CStr(VB6.Format(lngQuant, "00000"))

		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: TotalizaRota" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Function
		End Try

	End Function
	Private Sub cmdGerar_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdGerar.Click

		If chkTrans.CheckState Then
			strTabela = "nftransicao as f"
		Else
			strTabela = "nf as f"
		End If

		If cmbTipo.SelectedIndex = 0 Then
			Call GerarArquivo()
		Else
			If Mid(VB6.GetItemString(cbxBanco, cbxBanco.SelectedIndex), 1, 3) = "104" Then

				If chkXML.Checked Then
					Call GerarArquivoRemessaBoletoCaixaCNAB400_XML()
				Else
					Call GerarArquivoRemessaBoletoCaixaCNAB400()
				End If

			ElseIf Mid(VB6.GetItemString(cbxBanco, cbxBanco.SelectedIndex), 1, 3) = "341" Then

				If chkXML.Checked Then
					Call GerarArquivoRemessaBoletoCaixaCNAB400_XML()
				Else
					Call GerarArquivoRemessaBoletoITAUCNAB400()
				End If

			ElseIf Mid(VB6.GetItemString(cbxBanco, cbxBanco.SelectedIndex), 1, 3) = "200" Then
				'Call GerarArquivoRemessaBoletoItauCNAB400()
			Else
				Call GerarArquivoRemessaBoleto()
			End If
		End If

	End Sub
	Private Sub cmdFechar_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdFechar.Click
		Me.Close()
	End Sub
	Private Sub GerarArquivo()

		'Controle do Filtro da Rota
		Dim lngContZLC As Integer
		Dim lngConta As Integer
		Dim strFiltroZL As String

		'Controle do Arquivo externo
		Dim strArquivo As String
		Dim intARQ As Short
		Dim strLinha As String

		'Tipo do Registro
		Dim strTipo As String

		'REGISTRO A - HEADER
		Dim strEmpresa As String
		Dim strSequencial As String
		Dim strDtGeracao As String

		'REGISTRO E - DEBITO EM CONTA
		Dim strIDCons As String
		Dim strIDConsAnt As String
		Dim strAgencia As String
		Dim strCC As String
		Dim strDtDebito As String
		Dim strValor As String
		Dim strNome As String
		Dim strUsoEmpresa As String
		Dim strZona As String
		Dim strLivro As String
		Dim strConta As String
		Dim dblNumNf As Double
		Dim lstrAvisoDeb As String
		Dim lstrMensagem As String
		Dim strCpfCNPJ As String
		Dim strTipoCpfCNPJ As String

		Dim iContador As Integer
		Dim strAgenciaCEF As String
		Dim strCodOperacaoCEF As String
		Dim strNumeroContaCEF As String
		Dim strDVCEF As String

		'REGISTRO Z - TRAILER
		Dim intQtde As Short
		Dim dblVlrTotal As Double

		'Controle dos dados na base de dados

		Dim dt As DataTable
		Dim objAtualizaBancoDados As New entidadeAtualizaBancoDados
		Dim repositorioAtualizaBancoDados As New repositorioAtualizaBancoDados
		Try

			lstrMensagem = ""
			'checa e abre o arquivo
			If Len(Trim(txtDir.Text)) = 0 Then
				MsgBox("Arquivo de destino não foi informado!", MsgBoxStyle.Information, gstrTituloMensagem)
				txtDir.Focus()
				Exit Sub
			End If
			strArquivo = Trim(txtDir.Text)

			Me.Cursor = System.Windows.Forms.Cursors.WaitCursor

			intARQ = FreeFile()
			FileOpen(intARQ, strArquivo, OpenMode.Output)

			dblVlrTotal = 0

			'REGISTRO A - HEADER
			'Prepara os dados
			intQtde = 1
			iContador = 0
			strTipo = "A"
			strEmpresa = PreencheCampo(Mid(gstrEmpresa_Sigla, 1, 20), 20, " ", "D")
			strDtGeracao = VB6.Format(Today, "yyyymmdd")

			If strNrBco = "104" Then ' Caixa
				strConvenio = Mid(strConvenio, 1, 6)
				strConvenio = Trim(strConvenio) & "110001" '& PreparaCampo(strConvenio, ALFANUMERICO, 8, " ")
				strConvenio = PreparaCampo(strConvenio, 1, 20, " ")
			Else
				strConvenio = PreparaCampo(strConvenio, 1, 20, " ")
			End If

			'strConvenio = PreparaCampo(strConvenio, 1, 20, " ")
			strNrBco = PreparaCampo(strNrBco, 0, 3, "0")
			strNmBco = PreparaCampo(IIf(Trim(strNrBco) = "104", "CAIXA", strNmBco), 1, 20, " ") 'PreparaCampo(strNmBco, 1, 20, " ")
			strSequencial = PreparaCampo(CStr(lngSequencial), 0, 6, "0")

			'Monta Linha
			'Código do Registro Posição de 001 a 001 Tamanho 001 Valor A
			strLinha = strTipo
			'Código da Remessa Posição de 002 a 002 Tamanho 001 Valor 1 = Enviado pela Empresa, 2 = Enviada pelo Banco
			strLinha = strLinha & "1"
			'Código do Convênio Posição 003 a 022 Tamanho 020
			strLinha = strLinha & strConvenio
			'Nome da Empresa Posição 023 a 042 Tamanho 020
			strLinha = strLinha & strEmpresa
			'Código do Banco Posição 043 a 045 Tamanho 003
			strLinha = strLinha & strNrBco
			'Nome do Banco Posição 046 a 065 Tamanho 020
			strLinha = strLinha & strNmBco
			'Data da Geração do Arquivo (AAAAMMDD) Posição 066 a 073 Tamanho 008
			strLinha = strLinha & strDtGeracao
			'Número sequencial do arquivo (NSA)  Posição 074 a 079 Tamanho 006
			strLinha = strLinha & strSequencial
			'Versão do Lay-Out Posição 080 a 081 Tamanho 002

			If gstrEmpresa_Sigla = "EFLUL" Then

				'Versão do Lay-Out Posição 080 a 081 Tamanho 002
				strLinha = strLinha & "04"
				'Identificação do Serviço Posição 082 a 098 Tamanho 017
				strLinha = strLinha & "DEBITO AUTOMATICO"
				' Alterações - 01/08/2022 - Everton
				' Conta definida para o compromisso Posição 099 a 114 Tamanho 016
				strLinha = strLinha & "4270003000002830"
				' Identificação do Ambiente do Cliente Posição 115 a 115 Tamanho 01
				strLinha = strLinha & "P"
				' Identificação do Ambiente da Caixa Posição 116 a 116 Tamanho 01
				strLinha = strLinha & "P"
				' Filler Posição 117 a 143 Tamanho 027
				strLinha = strLinha & New String(" ", 27)
				' Número Sequencial Posição 144 a 149 Tamanho 06
				strLinha = strLinha & "000000"
				' Filler Posição 150 a 150 Tamanho 01
				strLinha = strLinha & New String(" ", 1)

			Else

				If CDbl(strNrBco) = 748 Then
					strLinha = strLinha & "05"
				Else
					strLinha = strLinha & "04"
				End If
				'Identificação do Serviço Posição 082 a 098 Tamanho 017
				strLinha = strLinha & "DEBITO AUTOMATICO"
				'Reservado para o futuro Posição 099 a 150 Tamanho 052 Valor BRANCOS
				If CDbl(strNrBco) = 748 Then
					strLinha = strLinha & New String(" ", 51)
				Else
					strLinha = strLinha & New String(" ", 52)
				End If

			End If

			'Grava Linha Arquivo externo
			PrintLine(intARQ, strLinha)

			'Filtro do select Por Rota
			'If LVRota.Items.Item(1).Checked = False Then

			Dim sRepart

			strFiltroZL = strFiltroZL & "    AND mid(f.rota,1,4) IN ( "
			For lngConta = 0 To LVRota.Items.Count - 1
				If LVRota.Items.Item(lngConta).Checked = True Then

					'sRepart = Split(LVRota.Items.Item(lngConta).Text, "-")

					'strFiltroZL = strFiltroZL & "'" & sRepart(0) & "',"
					strFiltroZL = strFiltroZL & "'" & LVRota.Items.Item(lngConta).Text & "',"
					lngContZLC = lngContZLC + 1
				End If
			Next

			If lngContZLC > 0 Then
				'strFiltroZL = strFiltroZL & ") "
				strFiltroZL = VB.Left(strFiltroZL, Len(strFiltroZL) - 1) & ") "
			Else
				strFiltroZL = " "
			End If
			'End If

			If Len(Trim(Me.txtZona.Text)) > 0 Then
				strFiltroZL = strFiltroZL & "  AND f.zona = '" & Me.txtZona.Text & "' "
			End If
			If Len(Trim(Me.txtLivro.Text)) > 0 Then
				strFiltroZL = strFiltroZL & "  AND f.livro = '" & Me.txtLivro.Text & "' "
			End If
			If Len(Trim(Me.txtConta.Text)) > 0 Then
				strFiltroZL = strFiltroZL & "  AND f.conta = '" & Me.txtConta.Text & "' "
			End If

			strsql = "SELECT ub.`cpf_cnpj`, ub.zona, ub.livro, ub.conta, ub.agenc, ub.cc, ub.nome, f.datavenc, f.valorliq, f.valortot, f.unid_id, f.cons_id, f.numnf, ub.flg_aviso_debito "
			strsql = strsql & "   FROM UC_Faturamento ub, " & strTabela
			strsql = strsql & "  WHERE 1=1 " 'ub.cons_id = f.cons_id"
			strsql = strsql & "    AND ub.id = f.unid_id"
			strsql = strsql & "    AND f.mesano = '" & txtMesAno.Text & "'"
			strsql = strsql & "    AND f.banarrec = " & VB6.Format(iintBanID, "000")
			strsql = strsql & "    AND f.flgst = '' "

			If VB6.GetItemString(Me.cmbDiaVenc, Me.cmbDiaVenc.SelectedIndex) <> "" Then
				strsql = strsql & "  AND DAY(f.datavenc) = """ & VB6.Format(VB6.GetItemString(Me.cmbDiaVenc, Me.cmbDiaVenc.SelectedIndex), "00") & """ "
			End If

			If optA.Checked = True Then
				strsql = strsql & "  AND f.grupo = 'A' "
			ElseIf optB.Checked = True Then
				strsql = strsql & "  AND f.grupo = 'B' "
			End If

			strsql = strsql & strFiltroZL

			objAtualizaBancoDados.QUERY_NAME = strsql
			dt = repositorioAtualizaBancoDados.Consultar(objAtualizaBancoDados)

			If dt.Rows.Count > 0 Then
				pgb.Value = 0
				pgb.Minimum = 0
				pgb.Maximum = dt.Rows.Count
				For Each row As DataRow In dt.Rows

					intQtde = intQtde + 1
					iContador = iContador + 1
					strCpfCNPJ = IIf(IsDBNull(row.Item("cpf_cnpj")), "", row.Item("cpf_cnpj"))
					strZona = IIf(IsDBNull(row.Item("Zona")), "000", row.Item("Zona"))
					strLivro = IIf(IsDBNull(row.Item("Livro")), "00", row.Item("Livro"))
					strConta = IIf(IsDBNull(row.Item("Conta")), "000000", row.Item("Conta"))
					strNome = IIf(IsDBNull(row.Item("nome")), "", row.Item("nome"))
					dblNumNf = IIf(IsDBNull(row.Item("numNf")), 0, row.Item("numNf"))
					lstrAvisoDeb = IIf(IsDBNull(row.Item("flg_aviso_debito")), "N", row.Item("flg_aviso_debito"))

					If gstrEmpresa_Sigla = "EFLUL" Then
						strConta = VB.Right(strConta, 4)
					End If

					If lstrAvisoDeb = "S" Then
						lstrMensagem = lstrMensagem & VB.Right("000" & Trim(strZona), 3) & "." & VB.Right("00" & Trim(strLivro), 2) & "." & VB.Right("000000" & Trim(strConta), 6) & ","
					End If

					If gstrEmpresa_Sigla = "COORSEL" Then
						strIDCons = VB6.Format(strZona, "000") & VB6.Format(strLivro, "00") & VB6.Format(strConta, "000000")
						strIDCons = VB6.Format(Trim(strIDCons), "000000000000000000") & New String(" ", 7)
					ElseIf gstrEmpresa_Sigla = "CERIS" Then
						strIDCons = "0000000000" & VB6.Format(strLivro, "00") & VB6.Format(strConta, "000000") & New String(" ", 7)
					ElseIf gstrEmpresa_Sigla = "EFLUL" Then
						If strNrBco = "756" Or strNrBco = "356" Or strNrBco = "237" Or strNrBco = "748" Or strNrBco = "001" Then
							strIDCons = VB6.Format(strZona, "000") & VB6.Format(strLivro, "00") & VB6.Format(strConta, "0000")
							strIDCons = strIDCons & New String(" ", 16)
						ElseIf strNrBco = "027" Then
							strIDCons = VB6.Format(strZona, "000") & VB6.Format(strLivro, "00") & VB6.Format(strConta, "0000")
							strIDCons = VB6.Format(Trim(strIDCons), "0000000000000000000000000")
						ElseIf strNrBco = "104" Then
							strIDCons = VB6.Format(strZona, "000") & VB6.Format(strLivro, "00") & VB6.Format(strConta, "0000")
							strIDCons = strIDCons & New String(" ", 14)
							strIDCons = New String("0", 14) & strIDCons
						ElseIf strNrBco = "033" Then
							strIDCons = "0000000000" & VB6.Format(strLivro, "00") & VB6.Format(strConta, "0000") & New String(" ", 7)
						End If
					ElseIf strNrBco = "027" Then
							strIDCons = VB6.Format(strZona, "000") & VB6.Format(strLivro, "00") & VB6.Format(strConta, "000000")
							strIDCons = VB6.Format(Trim(strIDCons), "0000000000000000000000000")
						ElseIf strNrBco = "237" Then
							strIDCons = VB6.Format(strZona, "000") & VB6.Format(strLivro, "00") & VB6.Format(strConta, "00000")
							strIDCons = strIDCons & New String(" ", 14)
						ElseIf strNrBco = "104" Then
							strIDCons = VB6.Format(strZona, "000") & VB6.Format(strLivro, "00") & VB6.Format(strConta, "000000")
							strIDCons = strIDCons & New String(" ", 14)
							strIDCons = New String("0", 14) & strIDCons
						ElseIf strNrBco = "756" Then
							strIDCons = VB6.Format(strZona, "000") & VB6.Format(strLivro, "00") & VB6.Format(VB.Right(strConta, 6), "000000")
							strIDCons = strIDCons & New String(" ", 14)
						ElseIf strNrBco = "748" Then
							strIDCons = VB6.Format(strZona, "000") & VB6.Format(strLivro, "00") & VB6.Format(VB.Right(strConta, 6), "000000")
							strIDCons = strIDCons & New String(" ", 14)
						ElseIf strNrBco = "001" Then
							strIDCons = VB6.Format(strZona, "000") & VB6.Format(strLivro, "00") & VB6.Format(VB.Right(strConta, 6), "000000")
							strIDCons = strIDCons & New String(" ", 14)
						ElseIf strNrBco = "356" Then
							strIDCons = VB6.Format(strZona, "000") & VB6.Format(strLivro, "00") & VB6.Format(VB.Right(strConta, 6), "000000")
							strIDCons = strIDCons & New String(" ", 14)
						ElseIf strNrBco = "033" Then
							strIDCons = "0000000000" & VB6.Format(strLivro, "00") & VB6.Format(strConta, "000000") & New String(" ", 7)
					End If

					'Agencia do Banco
					If gstrEmpresa_Sigla = "COORSEL" Then
						If strNrBco = "001" Then
							strAgencia = "    "
						Else
							strAgencia = IIf(IsDBNull(row.Item("agenc")), "0000", row.Item("agenc"))
							strAgencia = PreparaCampo(strAgencia, 1, 4, " ")
						End If
					Else
						strAgencia = IIf(IsDBNull(row.Item("agenc")), "0000", row.Item("agenc"))
						strAgencia = PreparaCampo(strAgencia, 1, 4, " ")
					End If

					'Conta Corrente da Unidade Consumidora
					strCC = Trim(IIf(IsDBNull(row.Item("cc")), "", row.Item("cc")))
					If Len(strCC) > 2 Then
						If strNrBco = "027" Then
							strCC = Replace(Replace(Replace(strCC, "-", ""), ".", ""), "/", "")
							strCC = PreparaCampo(strCC, 0, 14, "0")
							strCC = VB.Right(strCC, 13) & " "
						ElseIf strNrBco = "237" Then
							strCC = Replace(Replace(Replace(strCC, "-", ""), ".", ""), "/", "")
							strCC = PreparaCampo(strCC, 0, 14, "0")
							strCC = VB.Right(strCC, 8) & "      "
						ElseIf strNrBco = "104" Then
							strCC = Replace(Replace(Replace(strCC, "-", ""), ".", ""), "/", "")
							strCC = PreparaCampo(strCC, 0, 14, "0")
							strCC = VB.Right(strCC, 12) & "  "
						ElseIf strNrBco = "756" Then
							strCC = Replace(Replace(Replace(strCC, "-", ""), ".", ""), "/", "")
							strCC = PreparaCampo(strCC, 1, 14, " ")
						ElseIf strNrBco = "748" Then
							strCC = Replace(Replace(Replace(strCC, "-", ""), ".", ""), "/", "")
							strCC = PreparaCampo(strCC, 1, 14, " ")
						ElseIf strNrBco = "356" Then
							strCC = Replace(Replace(Replace(strCC, "-", ""), ".", ""), "/", "")
							strCC = PreparaCampo(strCC, 1, 14, " ")
						ElseIf strNrBco = "033" Then
							strCC = Replace(Replace(Replace(strCC, "-", ""), ".", ""), "/", "")
							strCC = PreparaCampo(strCC, 1, 14, " ")
						Else
							If gstrEmpresa_Sigla = "COORSEL" Then
								strCC = VB.Left(strCC, Len(strCC) - 1)
								strCC = Replace(Replace(Replace(strCC, "-", ""), ".", ""), "/", "")
								strCC = PreparaCampo(strCC, 0, 14, "0")
							Else
								strCC = VB.Left(strCC, Len(strCC) - 2)
								strCC = Replace(Replace(Replace(strCC, "-", ""), ".", ""), "/", "")
								strCC = PreparaCampo(strCC, 0, 14, "0")
							End If
						End If
					Else
						If strNrBco = "756" Then
							strCC = Replace(Replace(Replace(strCC, "-", ""), ".", ""), "/", "")
							strCC = PreparaCampo(strCC, 1, 14, " ")
						ElseIf strNrBco = "356" Then
							strCC = Replace(Replace(Replace(strCC, "-", ""), ".", ""), "/", "")
							strCC = PreparaCampo(strCC, 1, 14, " ")
						ElseIf strNrBco = "033" Then
							strCC = Replace(Replace(Replace(strCC, "-", ""), ".", ""), "/", "")
							strCC = PreparaCampo(strCC, 1, 14, " ")
						Else
							strCC = Replace(Replace(Replace(strCC, "-", ""), ".", ""), "/", "")
							strCC = PreparaCampo(strCC, 0, 14, " ")
						End If
					End If

					'Data para Débito do valor da fatura
					strDtDebito = VB6.Format(IIf(IsDBNull(row.Item("datavenc")), "00000000", row.Item("datavenc")), "yyyymmdd")
					strDtDebito = PreparaCampo(strDtDebito, 0, 8, "0")
					'Valor da Fatura formatado sem caracteres especiais(,.)
					'strValor = PreparaCampo(Str(IIf(IsDBNull(row.Item("ValorTot")), 0, row.Item("ValorTot")) * 100), 0, 15, "0")
					strValor = PreparaCampo(Str(IIf(IsDBNull(row.Item("Valorliq")), 0, row.Item("Valorliq"))), 0, 15, "0")
					strNome = Mid(Trim(strNome), 1, 34)


					'strUsoEmpresa = PreparaCampo(Replace(txtMesAno.Text, "/", "") & "DEBITOS AUTOMATICOS DE FATURAS DE ENERGIA ELETRICA", ALFANUMERICO, 60, " ")
					If gstrEmpresa_Sigla = "CERIS" Then

						Dim strTrataMesAno As String
						strTrataMesAno = "01" & Mid(txtMesAno.Text, 1, 2) & VB.Right(txtMesAno.Text, 2)

						strUsoEmpresa = VB6.Format(Str(dblNumNf), "000000000") & RetiraAcentuacao(strNome) '& New String(" ", 11) & VB6.Format(Replace(txtMesAno.Text, "/", ""), "000000")
						strUsoEmpresa = strUsoEmpresa & New String(" ", 43 - Len(strUsoEmpresa))
						strUsoEmpresa = strUsoEmpresa & New String(" ", 11) & strTrataMesAno
						strUsoEmpresa = PreparaCampo(strUsoEmpresa, 1, 60, " ")
					Else
						strUsoEmpresa = VB6.Format(Replace(txtMesAno.Text, "/", ""), "000000") & VB6.Format(Str(dblNumNf), "000000000") & RetiraAcentuacao(strNome)
						strUsoEmpresa = PreparaCampo(strUsoEmpresa, 1, 60, " ")
					End If


					'If ChkRegistroD.Value = 1 Then
					'  strIDConsAnt = PreencheCampo(rsArquivo!Zona, 6, "0", "E") & rsArquivo!Livro & PreencheCampo(Str(rsArquivo!Conta), 4, "0", "E") & Space(13)
					'  strLinha = "D" & strIDConsAnt & strAgencia & strCC & strIDCons & PreencheCampo("NOVA VERSAO DO SISTEMA, MUDANCA NA IDENTIFICACAO", 60, " ", "D") & Space(20) & "0"
					'Else
					'Código do Registro Posição 001 a 001 Tamanho 001 Valor E
					strTipo = "E"
					strLinha = strTipo
					'Identificação do Cliente na Empresa Posição 002 a 026 Tamanho 025
					strLinha = strLinha & strIDCons
					'Agencia para Débito Posição 027 a 030 Tamanho 004
					strLinha = strLinha & strAgencia
					'Identificação do Cliente no Banco Posição 031 a 044 Tamanho 014
					strLinha = strLinha & strCC
					'Data do Vencimento Posição 045 a 052 Tamanho 008 Valor AAAAMMDD
					strLinha = strLinha & strDtDebito
					'Valor do Débito Posição 053 a 067 Tamanho 015
					strLinha = strLinha & strValor
					'Código da Moeda Posição 068 a 069 Tamanho 002 Valor 01 = UFIR e 03 = REAL
					strLinha = strLinha & "03"

					'Uso da empresa Posição 070 a 129 Tamanho 60 Valor NOSSO.
					strLinha = strLinha & strUsoEmpresa

					If gstrEmpresa_Sigla = "EFLUL" Then

						' Alterações - 01/08/2022 - Everton
						'Número do Agendamento Cliente 130 a 135 Tamanho 06
						strLinha = strLinha & PreparaCampo(Str(iContador), 0, 6, "0")
						'Filler 136 a 143 Tamanho 08
						strLinha = strLinha & New String(" ", 8)
						'Número Sequencial do Arquivo Posição 144 a 149 Tamanho 06 Valor Brancos
						strLinha = strLinha & PreparaCampo(Str(iContador), 0, 6, "0")

						'Código do Movimento Posição 150 a 150 Tamanho 001 Valor 0 = Débito Normal e 1 = Cancelamento do Movimento
						If chkMovtoExclui.CheckState Then
							strLinha = strLinha & "1"
						Else
							strLinha = strLinha & "0"
						End If

					Else

						'Reservado para o futuro Posição 130 a 149 Tamanho 20 Valor Brancos
						If CDbl(strNrBco) = 748 Then
							strLinha = strLinha & New String(" ", 19)
						Else

							If Len(Trim(strCpfCNPJ)) <= 11 Then
								strTipoCpfCNPJ = "2"
							Else
								strTipoCpfCNPJ = "1"
							End If

							strLinha = strLinha & strTipoCpfCNPJ

							If strTipoCpfCNPJ = "2" Then
								strLinha = strLinha & PreparaCampo(strCpfCNPJ, 0, 15, "0")
							Else
								strLinha = strLinha & PreparaCampo(strCpfCNPJ, 0, 15, "9")
							End If

							strLinha = strLinha & New String(" ", 4)

						End If

						'Código do Movimento Posição 150 a 150 Tamanho 001 Valor 0 = Débito Normal e 1 = Cancelamento do Movimento
						If chkMovtoExclui.CheckState Then
							strLinha = strLinha & "1"
						Else
							strLinha = strLinha & "0"
						End If

					End If


					'Grava Linha Arquivo externo
					PrintLine(intARQ, strLinha)

					dblVlrTotal = dblVlrTotal + IIf(IsDBNull(row.Item("Valorliq")), 0, row.Item("Valorliq"))
					pgb.Value = pgb.Value + 1

				Next
			End If

			'REGISTRO Z - TRAILER
			intQtde = intQtde + 1

			If gstrEmpresa_Sigla = "EFLUL" Then

				strLinha = "Z" _
				 & PreparaCampo(Str(intQtde), 0, 6, "0") _
				 & PreparaCampo(Str(dblVlrTotal * 100), 0, 17, "0") _
				 & New String(" ", 119) _
				 & PreparaCampo(Str(iContador + 1), 0, 6, "0") _
				 & New String(" ", 1)

			Else

				strLinha = "Z" _
			 & PreparaCampo(Str(intQtde), 0, 6, "0") _
			 & PreparaCampo(Str(dblVlrTotal * 100), 0, 17, "0") _
			 & New String(" ", 126)

				If CDbl(strNrBco) = 748 Then
					strLinha = "Z" & PreparaCampo(Str(intQtde), 0, 6, "0") & PreparaCampo(Str(dblVlrTotal * 100), 0, 17, "0") & New String(" ", 125)
				Else
					strLinha = "Z" & PreparaCampo(Str(intQtde), 0, 6, "0") & PreparaCampo(Str(dblVlrTotal * 100), 0, 17, "0") & New String(" ", 126)
				End If

			End If

			Dim b As Integer
			b = Len(strLinha)

			PrintLine(intARQ, strLinha)
			FileClose(intARQ)

			If Strings.Len(lstrMensagem) > 0 Then
				lstrMensagem = Strings.Left(lstrMensagem, Strings.Len(lstrMensagem) - 1)
				Call MsgBox("Este arquivo possui os identificadores (" & lstrMensagem & ") que devem ter sua atenção!!!", vbExclamation, gstrTituloMensagem)
			End If

			MsgBox("Processo Concluído! Arquivo gerado: " & Trim(txtDir.Text), vbInformation, gstrTituloMensagem)

			lngSequencial = lngSequencial + 1

			'Atualiza o sequencial a inserir no arquivo
			strsql = "UPDATE bancos SET sequencial = " & lngSequencial & " " _
				   & "WHERE bancos.ban_id = " & iintBanID

			objAtualizaBancoDados.QUERY_NAME = strsql
			repositorioAtualizaBancoDados.Execute(objAtualizaBancoDados)

			'If intQtde - 2 <> CShort(lblQtde.Text) Then
			'If intQtde <> lblQtde.Text Then
			'Call MsgBox("Aviso!! A quantidade selecionada(" & CInt(Me.lblQtde.Text) & ") é diferente da quantidade gerada (" & intQtde - 2 & ")!!! ", vbInformation, gstrTituloMensagem)
			'End If

			Me.Cursor = System.Windows.Forms.Cursors.Default
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: GerarArquivo" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try


	End Sub
	Private Function CalculaDVCons(ByRef pstrCampo As String) As Short
		Dim strCampo As String

		Dim intN01 As Short
		Dim intN02 As Short
		Dim intN03 As Short
		Dim intN04 As Short
		Dim intN05 As Short
		Dim intN06 As Short
		Dim intN07 As Short
		Dim intN08 As Short
		Dim intN09 As Short
		Dim intN10 As Short
		Dim intN11 As Short
		Dim intN12 As Short

		Dim intBase As Short
		Dim intCalc As Short
		Dim intDigt As Short

		'FUNCAO PARA O CALCULO DO DIGITO VERIFICADOR
		'PARA O DV DO CONS_ID PARA ENVIAR PARA OS BANCOS

		Try

			strCampo = VB6.Format(VB.Left(Str(CDbl(pstrCampo)), 12), "000000000000")

			intN01 = Val(Mid(strCampo, 1, 1)) * 5
			intN02 = Val(Mid(strCampo, 2, 1)) * 4
			intN03 = Val(Mid(strCampo, 3, 1)) * 3
			intN04 = Val(Mid(strCampo, 4, 1)) * 2
			intN05 = Val(Mid(strCampo, 5, 1)) * 9
			intN06 = Val(Mid(strCampo, 6, 1)) * 8
			intN07 = Val(Mid(strCampo, 7, 1)) * 7
			intN08 = Val(Mid(strCampo, 8, 1)) * 6
			intN09 = Val(Mid(strCampo, 9, 1)) * 5
			intN10 = Val(Mid(strCampo, 10, 1)) * 4
			intN11 = Val(Mid(strCampo, 11, 1)) * 3
			intN12 = Val(Mid(strCampo, 12, 1)) * 2

			intBase = intN01 + intN02 + intN03 + intN04 + intN05 + intN06 + intN07 + intN08 + intN09 + intN10 + intN11 + intN12
			intCalc = Fix(intBase / 11)
			intDigt = intBase - (intCalc * 11)

			If intDigt <= 0 Or intDigt >= 10 Then intDigt = 0
			CalculaDVCons = intDigt

		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: CalculaDVCons" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Function
		End Try
	End Function

	Private Sub pegaDatasVencimento()

		Dim lstrSql As String
		Dim lstrAux As String
		Dim dt As DataTable
		Dim objAtualizaBancoDados As New entidadeAtualizaBancoDados
		Dim repositorioAtualizaBancoDados As New repositorioAtualizaBancoDados

		Try

			lstrAux = ""
			Call cmbDiaVenc.Items.Clear()
			Call cmbDiaVenc.Items.Add("")


			lstrSql = ""
			lstrSql = lstrSql & "SELECT DISTINCT DAY(datavenc) as diavcto "
			If Me.chkTrans.CheckState = 1 Then
				lstrSql = lstrSql & "  FROM nftransicao USE INDEX(keyvenc, keymesano) "
			Else
				lstrSql = lstrSql & "  FROM nf USE INDEX(keyvenc, keymesano) "
			End If
			lstrSql = lstrSql & " WHERE mesano = """ & txtMesAno.Text & """ "
			lstrSql = lstrSql & " ORDER BY day(datavenc) ASC "

			objAtualizaBancoDados.QUERY_NAME = lstrSql
			dt = repositorioAtualizaBancoDados.Consultar(objAtualizaBancoDados)

			If dt.Rows.Count > 0 Then
				For Each row As DataRow In dt.Rows
					lstrAux = VB6.Format(IIf(IsDBNull(row.Item("diavcto")), "0", row.Item("diavcto")), "00")
					Call cmbDiaVenc.Items.Add(lstrAux)
				Next
			End If

		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: pegaDatasVencimento" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try

	End Sub

	Private Sub txtZona_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtZona.Enter
		Try
			With Me.txtZona
				.SelectionStart = 0
				.SelectionLength = Len(.Text)
			End With
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: txtZona_Enter" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try
	End Sub

	Private Sub txtZona_KeyPress(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs) Handles txtZona.KeyPress
		Dim KeyAscii As Short = Asc(eventArgs.KeyChar)
		Try
			If KeyAscii <> 8 And (KeyAscii < 48 Or KeyAscii > 57) Then
				KeyAscii = 0
			End If
			eventArgs.KeyChar = Chr(KeyAscii)
			If KeyAscii = 0 Then
				eventArgs.Handled = True
			End If
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: txtZona_KeyPress" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try
	End Sub

	Private Sub txtZona_Leave(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtZona.Leave
		Try
			With Me.txtZona
				.Text = VB6.Format(.Text, "000")
			End With
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: txtZona_Leave" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try
	End Sub

	Private Sub txtConta_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtConta.Enter
		Try
			With Me.txtConta
				.SelectionStart = 0
				.SelectionLength = Len(.Text)
			End With
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: txtConta_Enter" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try
	End Sub

	Private Sub txtConta_KeyPress(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs) Handles txtConta.KeyPress
		Try
			Dim KeyAscii As Short = Asc(eventArgs.KeyChar)
			If KeyAscii <> 8 And (KeyAscii < 48 Or KeyAscii > 57) Then
				KeyAscii = 0
			End If
			eventArgs.KeyChar = Chr(KeyAscii)
			If KeyAscii = 0 Then
				eventArgs.Handled = True
			End If
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: txtConta_KeyPress" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try
	End Sub

	Private Sub txtConta_Leave(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtConta.Leave
		Try
			With Me.txtConta
				.Text = VB6.Format(.Text, "000000")
			End With
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: txtConta_Leave" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try
	End Sub

	Private Sub txtLivro_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtLivro.Enter
		Try
			With Me.txtLivro
				.SelectionStart = 0
				.SelectionLength = Len(.Text)
			End With
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: txtLivro_Enter" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try
	End Sub

	Private Sub txtLivro_KeyPress(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs) Handles txtLivro.KeyPress
		Try
			Dim KeyAscii As Short = Asc(eventArgs.KeyChar)
			If KeyAscii <> 8 And (KeyAscii < 48 Or KeyAscii > 57) Then
				KeyAscii = 0
			End If
			eventArgs.KeyChar = Chr(KeyAscii)
			If KeyAscii = 0 Then
				eventArgs.Handled = True
			End If
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: txtLivro_KeyPress" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try
	End Sub

	Private Sub txtLivro_Leave(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtLivro.Leave
		Try
			With Me.txtLivro
				.Text = VB6.Format(.Text, "00")
			End With
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: txtLivro_Leave" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try
	End Sub

	Private Sub chktodas_CheckedChanged(sender As Object, e As EventArgs) Handles chktodas.CheckedChanged
		Try
			'Dim Item As System.Windows.Forms.ListViewItem = LVRota.Items(EventArgs.Index)
			Dim intConta As Short

			'If Item.Text = "Todas as rotas" Then

			If chktodas.Checked = True Then
				For intConta = 0 To LVRota.Items.Count - 1

					LVRota.Items.Item(intConta).Checked = True
				Next

			ElseIf chktodas.Checked = False Then
				For intConta = 0 To LVRota.Items.Count - 1

					LVRota.Items.Item(intConta).Checked = False
				Next intConta
			End If
			'Else
			'If Item.Checked = False Then
			'	'	
			'	LVRota.Items.Item(0).Checked = False
			'End If
			'End If
			'Call TotalizaRota()
		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: chktodas_CheckedChanged" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try
	End Sub
	Private Sub sCarregaBanco()
		Dim lstrsql As String
		Dim dt As DataTable
		Dim lstrNrBco
		Dim lstrNmBco
		Dim lintIdBco
		Dim objAtualizaBancoDados As New entidadeAtualizaBancoDados
		Dim repositorioAtualizaBancoDados As New repositorioAtualizaBancoDados

		Try

			'carrega a combobox de bancos
			lstrSql = ""
			lstrSql = lstrSql & "SELECT * "
			lstrSql = lstrSql & "  FROM `bancos` "
			'If Me.strTipoServ = "Guiche" Then
			'lstrsql = lstrSql & " WHERE `tpmovto` <> 'D' "
			'lstrsql = lstrSql & "   AND `grupo` <> 'D' "
			'Else
			lstrsql = lstrSql & " WHERE `tpmovto` = 'D' "
			'End If


			objAtualizaBancoDados.QUERY_NAME = lstrSql
			dt = repositorioAtualizaBancoDados.Consultar(objAtualizaBancoDados)

			If dt.Rows.Count > 0 Then
				For Each row As DataRow In dt.Rows
					lstrNrBco = Trim(IIf(IsDBNull(row.Item("nrbco")), "000", row.Item("nrbco")))
					lstrNmBco = Trim(IIf(IsDBNull(row.Item("nmbco")), "indefinido", row.Item("nmbco")))
					lintIdBco = CShort(IIf(IsDBNull(row.Item("ban_id")), 0, row.Item("ban_id")))
					Call Me.cbxBanco.Items.Add(lstrNrBco & " - " & lstrNmBco)
					VB6.SetItemData(Me.cbxBanco, Me.cbxBanco.Items.Count - 1, lintIdBco)
					'Call .MoveNext()
				Next
			Else
				Call Me.cbxBanco.Items.Add("000 - indefinido")
				VB6.SetItemData(Me.cbxBanco, Me.cbxBanco.Items.Count - 1, 0)
			End If

		Catch ex As Exception
			Exit Sub
		End Try
	End Sub

	'Private Sub GerarArquivoRemessaBoletoItauCNAB400()
	'	'Controle do Filtro da Rota
	'	Dim lngContZLC As Integer
	'	Dim lngConta As Integer
	'	Dim strFiltroZL As String

	'	'Controle do Arquivo externo
	'	Dim strArquivo As String = String.Empty
	'	Dim intARQ As Short = 0
	'	Dim strLinha As String = String.Empty
	'	Dim lstrMensagem As String = String.Empty
	'	Dim strNomeArquivo = "ArquivoRemessaItau_" & Today.Day.ToString().PadLeft(2, "0") & Today.Month.ToString().PadLeft(2, "0") & Mid(Today.Year.ToString().PadLeft(2, "0"), 3, 2) & TimeOfDay.Hour.ToString().PadLeft(2, "0") & TimeOfDay.Minute.ToString().PadLeft(2, "0") & TimeOfDay.Second.ToString().PadLeft(2, "0") & ".Rem"

	'	'Controle dos dados na base de dados
	'	Dim dt As DataTable
	'	Dim objAtualizaBancoDados As New entidadeAtualizaBancoDados
	'	Dim repositorioAtualizaBancoDados As New repositorioAtualizaBancoDados

	'	Dim dTotalValor As Double
	'	Dim itotalregistros As Integer

	'	'Header de Remessa
	'	Dim strCodigoRegistro As String = String.Empty
	'	Dim strCodigoRemessa As String = String.Empty
	'	Dim strLiteralRemessa As String = String.Empty
	'	Dim strCodigoServico As String = String.Empty
	'	Dim strLiteralServico As String = String.Empty
	'	Dim strCodigoAgencia As String = String.Empty
	'	Dim strCodigoBeneficiario As String = String.Empty
	'	Dim strUsoExclusivo As String = String.Empty
	'	Dim strNomeEmpresa As String = String.Empty
	'	Dim strCodigoBanco As String = String.Empty
	'	Dim strNomeBanco As String = String.Empty
	'	Dim strDataGeracao As String = String.Empty
	'	Dim strVersaoLayout As String = String.Empty
	'	Dim strSequencial As String = String.Empty
	'	Dim strNumeroSequencial_A As String = String.Empty
	'	Dim strNumeroSequencial_B As String = String.Empty

	'	'Detalhe de Remessa
	'	Dim strCodigoRegistroDetalheRemessa As String = String.Empty
	'	Dim strTipoInscricao As String = String.Empty
	'	Dim strNumeroInscricao As String = String.Empty
	'	Dim strUsoExclusivoITAU As String = String.Empty
	'	Dim strCodigoBeneficiarioDetalheRemessa As String = String.Empty
	'	Dim strIDEmissao As String = String.Empty
	'	Dim strIDPostagem As String = String.Empty
	'	Dim strTaxaPermanencia As String = String.Empty
	'	Dim strUsoEmpresaBeneficiario As String = String.Empty
	'	Dim strNossoNumero As String = String.Empty
	'	Dim strBrancos As String = String.Empty
	'	Dim strUsolivreBancoEmpresa As String = String.Empty
	'	Dim strCodigoJuros As String = String.Empty
	'	Dim strDataJuros As String = String.Empty
	'	Dim strCodigoDesconto As String = String.Empty
	'	Dim strBrancosDetalheRemessa As String = String.Empty
	'	Dim strCarteira As String = String.Empty
	'	Dim strCodigoOcorrencia As String = String.Empty
	'	Dim strUsoEmpresaBeneficiarioDetalheRemessa As String = String.Empty
	'	Dim strVencimento As String = String.Empty
	'	Dim strValorTitulo As String = String.Empty
	'	Dim strCodigoBancoDetalheRemessa As String = String.Empty
	'	Dim strAgenciaCobradora As String = String.Empty
	'	Dim strEspecieTitulo As String = String.Empty
	'	Dim strAceite As String = String.Empty
	'	Dim strDataEmissaoTitulo As String = String.Empty
	'	Dim strInstrucao_1 As String = String.Empty
	'	Dim strInstrucao_2 As String = String.Empty
	'	Dim strJurosMora As String = String.Empty
	'	Dim strDataDesconto As String = String.Empty
	'	Dim strValorPercentualDesconto As String = String.Empty
	'	Dim strValorIOF As String = String.Empty
	'	Dim strAbatimento As String = String.Empty
	'	Dim strTipoInscricaoDetalheRemessa As String = String.Empty
	'	Dim strNumeroInscricaoDetalheRemessa As String = String.Empty
	'	Dim strNome As String = String.Empty
	'	Dim strEndereco As String = String.Empty
	'	Dim strBairro As String = String.Empty
	'	Dim strCEP As String = String.Empty
	'	Dim strCidade As String = String.Empty
	'	Dim strUF As String = String.Empty
	'	Dim strDataMulta As String = String.Empty
	'	Dim strValorMulta As String = String.Empty
	'	Dim strSacadorAvalista As String = String.Empty
	'	Dim strInstrucao_3 As String = String.Empty
	'	Dim strPrazo As String = String.Empty
	'	Dim strCodigoMoeda As String = String.Empty
	'	Dim lngNumeroSequencial As Long = 0
	'	Dim strNumeroSequencial As String = String.Empty
	'	Dim strIdentificacao As String = String.Empty
	'	Dim strZona As String = String.Empty
	'	Dim strLivro As String = String.Empty
	'	Dim strConta As String = String.Empty
	'	Dim strCodBarra As String = String.Empty
	'	Dim strDataVc As String = String.Empty
	'	Dim strNumnf As String = String.Empty

	'	'Trailer de Remessa
	'	Dim strCodigoRegistroTrailer As String = String.Empty
	'	Dim strUsoExclusivoTrailer As String = String.Empty
	'	Dim strNumeroSequencialTrailer As String = String.Empty

	'	Try

	'		lstrMensagem = ""
	'		'checa e abre o arquivo
	'		If Len(Trim(txtDir.Text)) = 0 Then
	'			MsgBox("Diretório de destino não foi informado!", MsgBoxStyle.Information, gstrTituloMensagem)
	'			txtDir.Focus()
	'			Exit Sub
	'		End If
	'		strArquivo = Trim(txtDir.Text)

	'		Me.Cursor = System.Windows.Forms.Cursors.WaitCursor

	'		If Not IO.Directory.Exists(strArquivo) Then
	'			IO.Directory.CreateDirectory(strArquivo)
	'		End If
	'		If IO.File.Exists(strArquivo & "\" & strNomeArquivo) Then
	'			IO.File.Delete(strArquivo & "\" & strNomeArquivo)
	'		End If

	'		intARQ = FreeFile()
	'		FileOpen(intARQ, strArquivo & "\" & strNomeArquivo, OpenMode.Output)

	'		Call sDadosEmpresa(LImagem,
	'						   sNomeEmpresa,
	'						   sEnderecoEmpresa,
	'						   sCepEmpresa,
	'						   sCidadeEmpresa,
	'						   sUFempresa,
	'						   sBairroEmpresa,
	'						   sFoneEmpresa,
	'						   sWebEmpresa,
	'						   scpfCNPF)

	'		strsql = "SELECT SEQUENCIALBOLETO From bancos Where nrbco = '341' "
	'		objAtualizaBancoDados.QUERY_NAME = strsql
	'		dt = repositorioAtualizaBancoDados.Consultar(objAtualizaBancoDados)
	'		If dt.Rows.Count > 0 Then
	'			lngSequencial = 0
	'			For Each row As DataRow In dt.Rows
	'				strSequencial = IIf(IsDBNull(row.Item("SEQUENCIALBOLETO")), "1", row.Item("SEQUENCIALBOLETO"))
	'				lngSequencial = IIf(IsDBNull(row.Item("SEQUENCIALBOLETO")), "1", row.Item("SEQUENCIALBOLETO"))
	'			Next
	'		Else
	'			strSequencial = "1"
	'		End If
	'		If strSequencial = String.Empty Then
	'			strSequencial = "1"
	'		End If
	'		'Descrição de registro tipo ‘0’ (Obrigatório) - Header de Remessa
	'		'Prepara os dados
	'		strCodigoRegistro = "0"
	'		strCodigoRemessa = "1"
	'		strLiteralRemessa = "REMESSA" 'Alterar esse valor para nulo quando entrar em produção
	'		strCodigoServico = "01"
	'		strLiteralServico = "COBRANCA"
	'		strCodigoAgencia = "6027"
	'		strCodigoBeneficiario = "0005815"
	'		strUsoExclusivo = ""
	'		strNomeEmpresa = sNomeEmpresa
	'		strCodigoBanco = "341"
	'		strNomeBanco = "BANCO ITAU SA  "
	'		strDataGeracao = VB6.Format(Today, "ddmmyy")
	'		strVersaoLayout = "007"
	'		strUsoExclusivo = ""
	'		strNumeroSequencial_A = strSequencial
	'		strNumeroSequencial_B = "000001"

	'		strLinha = String.Empty
	'		strLinha = strCodigoRegistro '01.0  - Código do Registro
	'		strLinha = strLinha & strCodigoRemessa '02.0  - Código da Remessa
	'		strLinha = strLinha & strLiteralRemessa '03.0  - Literal da Remessa
	'		strLinha = strLinha & strCodigoServico '04.0  - Código do Serviço
	'		strLinha = strLinha & PreparaCampo(strLiteralServico, 1, 15, " ") '05.0  - Literal de Serviço
	'		strLinha = strLinha & strCodigoAgencia '06.0  - Código da Agência
	'		strLinha = strLinha & strCodigoBeneficiario '07.0  - Código do Beneficiário
	'		strLinha = strLinha & PreparaCampo(strUsoExclusivo, 1, 9, " ") '08.0  - Uso Exclusivo
	'		strLinha = strLinha & PreparaCampo(strNomeEmpresa, 1, 30, " ") '09.0  - Nome da Empresa
	'		strLinha = strLinha & strCodigoBanco '10.0  - Código do Banco
	'		strLinha = strLinha & strNomeBanco '11.0  - Nome do Banco
	'		strLinha = strLinha & strDataGeracao '12.0  - Data de Geração
	'		strLinha = strLinha & strVersaoLayout '12.0V - Versão do Layout
	'		strLinha = strLinha & PreparaCampo(strUsoExclusivo, 1, 286, " ") '13.0  - Uso Exclusivo
	'		strLinha = strLinha & PreparaCampo(Str(strNumeroSequencial_A), 0, 5, "0") '14.0  - Nº Sequencial - A
	'		strLinha = strLinha & strNumeroSequencial_B '15.0  - Nº Sequencial - B
	'		'Grava Linha Arquivo externo
	'		PrintLine(intARQ, strLinha)

	'		strFiltroZL = String.Empty
	'		strFiltroZL = "AND mid(f.rota,1,4) IN ( "
	'		For lngConta = 0 To LVRota.Items.Count - 1
	'			If LVRota.Items.Item(lngConta).Checked = True Then
	'				strFiltroZL = strFiltroZL & "'" & LVRota.Items.Item(lngConta).Text & "',"
	'				lngContZLC = lngContZLC + 1
	'			End If
	'		Next
	'		If lngContZLC > 0 Then
	'			strFiltroZL = VB.Left(strFiltroZL, Len(strFiltroZL) - 1) & ") "
	'		Else
	'			strFiltroZL = " "
	'		End If
	'		If Len(Trim(Me.txtZona.Text)) > 0 Then
	'			strFiltroZL = strFiltroZL & "AND f.zona = '" & Me.txtZona.Text & "' "
	'		End If
	'		If Len(Trim(Me.txtLivro.Text)) > 0 Then
	'			strFiltroZL = strFiltroZL & "AND f.livro = '" & Me.txtLivro.Text & "' "
	'		End If
	'		If Len(Trim(Me.txtConta.Text)) > 0 Then
	'			strFiltroZL = strFiltroZL & "AND f.conta = '" & Me.txtConta.Text & "' "
	'		End If

	'		strsql = "SELECT "
	'		strsql = strsql & "Case When LENGTH(c.cpf_cnpj) < 14 Then '01' Else '02' End As strTipoInscricao, "
	'		strsql = strsql & "c.cpf_cnpj As strNumeroInscricao, "
	'		strsql = strsql & "ub.zona As strZona, "
	'		strsql = strsql & "ub.livro As strLivro,"
	'		strsql = strsql & "ub.conta As strConta, "
	'		strsql = strsql & "f.datavenc As strDataVc, "
	'		strsql = strsql & "f.datavenc As strDataJuros, "
	'		strsql = strsql & "f.datavenc As strVencimento, "
	'		strsql = strsql & "f.valorliq As strValorTitulo, "
	'		strsql = strsql & "f.dataem As strDataEmissaoTitulo, "
	'		strsql = strsql & "f.datavenc As strDataDesconto, "
	'		strsql = strsql & "f.numnf As strNumnf, "
	'		strsql = strsql & "c.cpf_cnpj As strNumeroInscricaoDetalheRemessa, "
	'		strsql = strsql & "c.nome as strNome, "
	'		strsql = strsql & "c.end as strEndereco, "
	'		strsql = strsql & "c.bairro as strBairro, "
	'		strsql = strsql & "c.cep as strCEP, "
	'		strsql = strsql & "c.cidade as strCidade, "
	'		strsql = strsql & "c.uf as strUF "
	'		strsql = strsql & "FROM uc_faturamento ub INNER JOIN " & strTabela & " On(f.unid_id = ub.id) "
	'		strsql = strsql & "INNER JOIN consum c On(c.consreg = f.cons_id) "
	'		strsql = strsql & "INNER JOIN bancos b On(ub.banco = b.ban_id) "
	'		If sFiltraBancos = "N" Then
	'			strsql = strsql & "Where 1=1 "
	'			strsql = strsql & "And f.mesano = '" & txtMesAno.Text & "' "
	'			strsql = strsql & "And f.flgst = '' "
	'		Else
	'			strsql = strsql & "Where 1=1 "
	'			strsql = strsql & "And f.mesano = '" & txtMesAno.Text & "' "
	'			strsql = strsql & "And f.banarrec = " & VB6.Format(iintBanID, "000") & " "
	'			strsql = strsql & "And f.flgst = '' "
	'		End If
	'		If VB6.GetItemString(Me.cmbDiaVenc, Me.cmbDiaVenc.SelectedIndex) <> "" Then
	'			strsql = strsql & "And DAY(f.datavenc) = """ & VB6.Format(VB6.GetItemString(Me.cmbDiaVenc, Me.cmbDiaVenc.SelectedIndex), "00") & """ "
	'		End If
	'		If optA.Checked = True Then
	'			strsql = strsql & "And f.grupo = 'A' "
	'		ElseIf optB.Checked = True Then
	'			strsql = strsql & "And f.grupo = 'B' "
	'		End If
	'		strsql = strsql & "And Ifnull(c.cpf_cnpj,'') <> '' "
	'		strsql = strsql & strFiltroZL
	'		strsql = strsql & " And b.nrbco = '341' "
	'		objAtualizaBancoDados.QUERY_NAME = strsql
	'		dt = repositorioAtualizaBancoDados.Consultar(objAtualizaBancoDados)
	'		If dt.Rows.Count > 0 Then

	'		End If

	'		Me.Cursor = System.Windows.Forms.Cursors.Default

	'	Catch ex As Exception
	'		Me.Cursor = System.Windows.Forms.Cursors.Default
	'	End Try

	'End Sub
	Private Sub GerarArquivoRemessaBoletoCaixaCNAB400()

		'Controle do Filtro da Rota
		Dim lngContZLC As Integer
		Dim lngConta As Integer
		Dim strFiltroZL As String

		'Controle do Arquivo externo
		Dim strArquivo As String = String.Empty
		Dim intARQ As Short = 0
		Dim strLinha As String = String.Empty
		Dim lstrMensagem As String = String.Empty
		Dim strNomeArquivo = "ArquivoRemessaCaixa_" & Today.Day.ToString().PadLeft(2, "0") & Today.Month.ToString().PadLeft(2, "0") & Mid(Today.Year.ToString().PadLeft(2, "0"), 3, 2) & TimeOfDay.Hour.ToString().PadLeft(2, "0") & TimeOfDay.Minute.ToString().PadLeft(2, "0") & TimeOfDay.Second.ToString().PadLeft(2, "0") & ".Rem"

		'Controle dos dados na base de dados
		Dim dt As DataTable
		Dim objAtualizaBancoDados As New entidadeAtualizaBancoDados
		Dim repositorioAtualizaBancoDados As New repositorioAtualizaBancoDados

		Dim dTotalValor As Double
		Dim itotalregistros As Integer

		'Header de Remessa
		Dim strCodigoRegistro As String = String.Empty
		Dim strCodigoRemessa As String = String.Empty
		Dim strLiteralRemessa As String = String.Empty
		Dim strCodigoServico As String = String.Empty
		Dim strLiteralServico As String = String.Empty
		Dim strCodigoAgencia As String = String.Empty
		Dim strCodigoBeneficiario As String = String.Empty
		Dim strUsoExclusivo As String = String.Empty
		Dim strNomeEmpresa As String = String.Empty
		Dim strCodigoBanco As String = String.Empty
		Dim strNomeBanco As String = String.Empty
		Dim strDataGeracao As String = String.Empty
		Dim strVersaoLayout As String = String.Empty
		Dim strSequencial As String = String.Empty
		Dim strNumeroSequencial_A As String = String.Empty
		Dim strNumeroSequencial_B As String = String.Empty

		'Detalhe de Remessa
		Dim strCodigoRegistroDetalheRemessa As String = String.Empty
		Dim strTipoInscricao As String = String.Empty
		Dim strNumeroInscricao As String = String.Empty
		Dim strUsoExclusivoCAIXA As String = String.Empty
		Dim strCodigoBeneficiarioDetalheRemessa As String = String.Empty
		Dim strIDEmissao As String = String.Empty
		Dim strIDPostagem As String = String.Empty
		Dim strTaxaPermanencia As String = String.Empty
		Dim strUsoEmpresaBeneficiario As String = String.Empty
		Dim strNossoNumero As String = String.Empty
		Dim strBrancos As String = String.Empty
		Dim strUsolivreBancoEmpresa As String = String.Empty
		Dim strCodigoJuros As String = String.Empty
		Dim strDataJuros As String = String.Empty
		Dim strCodigoDesconto As String = String.Empty
		Dim strBrancosDetalheRemessa As String = String.Empty
		Dim strCarteira As String = String.Empty
		Dim strCodigoOcorrencia As String = String.Empty
		Dim strUsoEmpresaBeneficiarioDetalheRemessa As String = String.Empty
		Dim strVencimento As String = String.Empty
		Dim strValorTitulo As String = String.Empty
		Dim strCodigoBancoDetalheRemessa As String = String.Empty
		Dim strAgenciaCobradora As String = String.Empty
		Dim strEspecieTitulo As String = String.Empty
		Dim strAceite As String = String.Empty
		Dim strDataEmissaoTitulo As String = String.Empty
		Dim strInstrucao_1 As String = String.Empty
		Dim strInstrucao_2 As String = String.Empty
		Dim strJurosMora As String = String.Empty
		Dim strDataDesconto As String = String.Empty
		Dim strValorPercentualDesconto As String = String.Empty
		Dim strValorIOF As String = String.Empty
		Dim strAbatimento As String = String.Empty
		Dim strTipoInscricaoDetalheRemessa As String = String.Empty
		Dim strNumeroInscricaoDetalheRemessa As String = String.Empty
		Dim strNome As String = String.Empty
		Dim strEndereco As String = String.Empty
		Dim strBairro As String = String.Empty
		Dim strCEP As String = String.Empty
		Dim strCidade As String = String.Empty
		Dim strUF As String = String.Empty
		Dim strDataMulta As String = String.Empty
		Dim strValorMulta As String = String.Empty
		Dim strSacadorAvalista As String = String.Empty
		Dim strInstrucao_3 As String = String.Empty
		Dim strPrazo As String = String.Empty
		Dim strCodigoMoeda As String = String.Empty
		Dim lngNumeroSequencial As Long = 0
		Dim strNumeroSequencial As String = String.Empty
		Dim strIdentificacao As String = String.Empty
		Dim strZona As String = String.Empty
		Dim strLivro As String = String.Empty
		Dim strConta As String = String.Empty
		Dim strCodBarra As String = String.Empty
		Dim strDataVc As String = String.Empty
		Dim strNumnf As String = String.Empty
		Dim strDVCodBarra As String = String.Empty
		Dim iTotaldeCasas As Integer


		'Trailer de Remessa
		Dim strCodigoRegistroTrailer As String = String.Empty
		Dim strUsoExclusivoTrailer As String = String.Empty
		Dim strNumeroSequencialTrailer As String = String.Empty

		Try

			lstrMensagem = ""
			'checa e abre o arquivo
			If Len(Trim(txtDir.Text)) = 0 Then
				MsgBox("Diretório de destino não foi informado!", MsgBoxStyle.Information, gstrTituloMensagem)
				txtDir.Focus()
				Exit Sub
			End If
			strArquivo = Trim(txtDir.Text)

			Me.Cursor = System.Windows.Forms.Cursors.WaitCursor

			'If Not IO.Directory.Exists(strArquivo) Then
			'	IO.Directory.CreateDirectory(strArquivo)
			'End If
			'If IO.File.Exists(strArquivo & "\" & strNomeArquivo) Then
			'	IO.File.Delete(strArquivo & "\" & strNomeArquivo)
			'End If

			intARQ = FreeFile()
			'FileOpen(intARQ, strArquivo & "\" & strNomeArquivo, OpenMode.Output)
			FileOpen(intARQ, strArquivo, OpenMode.Output)

			Call sDadosEmpresa(LImagem,
							   sNomeEmpresa,
							   sEnderecoEmpresa,
							   sCepEmpresa,
							   sCidadeEmpresa,
							   sUFempresa,
							   sBairroEmpresa,
							   sFoneEmpresa,
							   sWebEmpresa,
							   scpfCNPF)

			strsql = "SELECT SEQUENCIALBOLETO From bancos Where ban_id =  " & iintBanID
			objAtualizaBancoDados.QUERY_NAME = strsql
			dt = repositorioAtualizaBancoDados.Consultar(objAtualizaBancoDados)
			If dt.Rows.Count > 0 Then
				lngSequencial = 0
				For Each row As DataRow In dt.Rows
					strSequencial = IIf(IsDBNull(row.Item("SEQUENCIALBOLETO")), "1", row.Item("SEQUENCIALBOLETO"))
					lngSequencial = IIf(IsDBNull(row.Item("SEQUENCIALBOLETO")), "1", row.Item("SEQUENCIALBOLETO"))
				Next
			Else
				strSequencial = "1"
			End If
			If strSequencial = String.Empty Or strSequencial = "0" Then
				strSequencial = "1"
			End If

			lngSequencial = lngSequencial + 1

			'Descrição de registro tipo ‘0’ (Obrigatório) - Header de Remessa
			'Prepara os dados
			strCodigoRegistro = "0"
			strCodigoRemessa = "1"
			strLiteralRemessa = "       " 'Alterar esse valor para nulo quando entrar em produção
			strCodigoServico = "01"
			strLiteralServico = "COBRANCA"
			strCodigoAgencia = "4262"
			strCodigoBeneficiario = Replace(Mid(GetConfig("numero.cliente.banco.sigcb"), 1, 7), "-", "")
			strUsoExclusivo = ""
			strNomeEmpresa = sNomeEmpresa
			strCodigoBanco = "104"
			strNomeBanco = "CAIXA ECONOMICA"
			strDataGeracao = VB6.Format(Today, "ddmmyy")
			strVersaoLayout = "007"
			strUsoExclusivo = ""
			strNumeroSequencial_A = lngSequencial
			strNumeroSequencial_B = "000001"

			strLinha = String.Empty
			strLinha = strCodigoRegistro '01.0  - Código do Registro
			strLinha = strLinha & strCodigoRemessa '02.0  - Código da Remessa
			strLinha = strLinha & strLiteralRemessa '03.0  - Literal da Remessa
			strLinha = strLinha & strCodigoServico '04.0  - Código do Serviço
			strLinha = strLinha & PreparaCampo(strLiteralServico, 1, 15, " ") '05.0  - Literal de Serviço
			strLinha = strLinha & strCodigoAgencia '06.0  - Código da Agência
			strLinha = strLinha & strCodigoBeneficiario '07.0  - Código do Beneficiário
			strLinha = strLinha & PreparaCampo(strUsoExclusivo, 1, 9, " ") '08.0  - Uso Exclusivo
			strLinha = strLinha & RetiraAcentuacao(PreparaCampo(RemoverCaracter(strNomeEmpresa, True), 1, 30, " ")) '09.0  - Nome da Empresa
			strLinha = strLinha & strCodigoBanco '10.0  - Código do Banco
			strLinha = strLinha & strNomeBanco '11.0  - Nome do Banco
			strLinha = strLinha & strDataGeracao '12.0  - Data de Geração
			strLinha = strLinha & strVersaoLayout '12.0V - Versão do Layout
			strLinha = strLinha & PreparaCampo(strUsoExclusivo, 1, 286, " ") '13.0  - Uso Exclusivo
			strLinha = strLinha & PreparaCampo(Str(strNumeroSequencial_A), 0, 5, "0") '14.0  - Nº Sequencial - A
			strLinha = strLinha & strNumeroSequencial_B '15.0  - Nº Sequencial - B
			'Grava Linha Arquivo externo
			PrintLine(intARQ, strLinha)

			strFiltroZL = String.Empty
			strFiltroZL = "AND mid(f.rota,1,4) IN ( "
			For lngConta = 0 To LVRota.Items.Count - 1
				If LVRota.Items.Item(lngConta).Checked = True Then
					strFiltroZL = strFiltroZL & "'" & LVRota.Items.Item(lngConta).Text & "',"
					lngContZLC = lngContZLC + 1
				End If
			Next
			If lngContZLC > 0 Then
				strFiltroZL = VB.Left(strFiltroZL, Len(strFiltroZL) - 1) & ") "
			Else
				strFiltroZL = " "
			End If
			If Len(Trim(Me.txtZona.Text)) > 0 Then
				strFiltroZL = strFiltroZL & "AND f.zona = '" & Me.txtZona.Text & "' "
			End If
			If Len(Trim(Me.txtLivro.Text)) > 0 Then
				strFiltroZL = strFiltroZL & "AND f.livro = '" & Me.txtLivro.Text & "' "
			End If
			If Len(Trim(Me.txtConta.Text)) > 0 Then
				strFiltroZL = strFiltroZL & "AND f.conta = '" & Me.txtConta.Text & "' "
			End If

			strsql = "SELECT "
			strsql = strsql & "Case When LENGTH(c.cpf_cnpj) < 14 Then '01' Else '02' End As strTipoInscricao, "
			strsql = strsql & "c.cpf_cnpj As strNumeroInscricao, "
			strsql = strsql & "ub.zona As strZona, "
			strsql = strsql & "ub.livro As strLivro,"
			strsql = strsql & "ub.conta As strConta, "
			strsql = strsql & "f.datavenc As strDataVc, "
			strsql = strsql & "f.datavenc As strDataJuros, "
			strsql = strsql & "f.datavenc As strVencimento, "
			strsql = strsql & "f.valorliq As strValorTituloLiquido, "
			strsql = strsql & "f.valortot As strValorTitulo, "
			strsql = strsql & "f.dataem As strDataEmissaoTitulo, "
			strsql = strsql & "f.datavenc As strDataDesconto, "
			strsql = strsql & "f.numnf As strNumnf, "
			strsql = strsql & "c.cpf_cnpj As strNumeroInscricaoDetalheRemessa, "
			strsql = strsql & "c.nome as strNome, "
			strsql = strsql & "c.end as strEndereco, "
			strsql = strsql & "c.bairro as strBairro, "
			strsql = strsql & "c.cep as strCEP, "
			strsql = strsql & "c.cidade as strCidade, "
			strsql = strsql & "c.uf as strUF, "
			strsql = strsql & "f.codbarra as codbarra, f.dvcodbarra as dvcodbarra "
			strsql = strsql & "FROM uc_faturamento ub INNER JOIN " & strTabela & " On(f.unid_id = ub.id) "
			strsql = strsql & "INNER JOIN consum c On(c.consreg = f.cons_id) "
			strsql = strsql & "INNER JOIN bancos b On(ub.banco = b.ban_id) "

			If sFiltraBancos = "N" Then
				strsql = strsql & "Where 1=1 "
				strsql = strsql & "And f.mesano = '" & txtMesAno.Text & "' "
				strsql = strsql & "And f.flgst = '' "
			Else
				strsql = strsql & "Where 1=1 "
				strsql = strsql & "And f.mesano = '" & txtMesAno.Text & "' "
				strsql = strsql & "And f.banarrec = " & VB6.Format(iintBanID, "000") & " "
				strsql = strsql & "And f.flgst = '' "
			End If

			If VB6.GetItemString(Me.cmbDiaVenc, Me.cmbDiaVenc.SelectedIndex) <> "" Then
				strsql = strsql & "And DAY(f.datavenc) = """ & VB6.Format(VB6.GetItemString(Me.cmbDiaVenc, Me.cmbDiaVenc.SelectedIndex), "00") & """ "
			End If

			If optA.Checked = True Then
				strsql = strsql & "And f.grupo = 'A' "
			ElseIf optB.Checked = True Then
				strsql = strsql & "And f.grupo = 'B' "
			End If

			strsql = strsql & "And Ifnull(c.cpf_cnpj,'') <> '' "
			strsql = strsql & strFiltroZL
			strsql = strsql & " And b.nrbco = '104' "
			objAtualizaBancoDados.QUERY_NAME = strsql
			dt = repositorioAtualizaBancoDados.Consultar(objAtualizaBancoDados)

			If dt.Rows.Count > 0 Then
				lngNumeroSequencial = 1
				dTotalValor = 0
				pgb.Value = 0
				pgb.Minimum = 0
				pgb.Maximum = dt.Rows.Count
				itotalregistros = dt.Rows.Count
				For Each row As DataRow In dt.Rows

					'Prepara os dados
					lngNumeroSequencial = lngNumeroSequencial + 1

					strCodigoRegistroDetalheRemessa = "1"
					strTipoInscricao = IIf(IsDBNull(row.Item("strTipoInscricao")), "0", row.Item("strTipoInscricao"))
					strNumeroInscricao = IIf(IsDBNull(row.Item("strNumeroInscricao")), "", row.Item("strNumeroInscricao"))
					strNumeroInscricao = Replace(Replace(Replace(Replace(strNumeroInscricao, ".", ""), "/", ""), "-", ""), "\", "")
					strNumeroInscricao = PreparaCampo(strNumeroInscricao, 0, 14, "0")
					strUsoExclusivoCAIXA = "000"
					strCodigoBeneficiarioDetalheRemessa = Replace(Mid(GetConfig("numero.cliente.banco.sigcb"), 1, 7), "-", "") '"9748806" '"1113791"
					strIDEmissao = "2"
					strIDPostagem = "0"
					strTaxaPermanencia = "00"
					strZona = IIf(IsDBNull(row.Item("strZona")), "", row.Item("strZona"))
					strLivro = IIf(IsDBNull(row.Item("strLivro")), "", row.Item("strLivro"))
					strConta = IIf(IsDBNull(row.Item("strConta")), "", row.Item("strConta"))
					strNumnf = IIf(IsDBNull(row.Item("strNumnf")), "", row.Item("strNumnf"))
					strIdentificacao = strNumnf
					strDataVc = VB6.Format(IIf(IsDBNull(row.Item("strDataVc")), "000000", row.Item("strDataVc")), "ddMMyy")
					strDataVc = PreparaCampo(strDataVc, 0, 6, "0")

					iTotaldeCasas = 25 - Len(strIdentificacao)
					'strUsoEmpresaBeneficiario = Trim(strIdentificacao) '& strDataVc)
					strUsoEmpresaBeneficiario = PreparaCampo("", 1, iTotaldeCasas, "0") & Trim(strIdentificacao)

					strDVCodBarra = IIf(IsDBNull(row.Item("dvcodbarra")), "", row.Item("dvcodbarra"))
					strCodBarra = IIf(IsDBNull(row.Item("codbarra")), "", row.Item("codbarra"))
					strNossoNumero = Mid(strCodBarra, 24, 7) '& strDVCodBarra
					strNossoNumero = "14" & PreparaCampo(strNossoNumero, 0, 15, "0")

					strBrancos = Space(2)
					strUsolivreBancoEmpresa = "1"
					strCodigoJuros = Space(1) '"5"
					strDataJuros = VB6.Format(IIf(IsDBNull(row.Item("strDataJuros")), "000000", row.Item("strDataJuros")), "ddMMyy")
					strCodigoDesconto = "0"
					strBrancosDetalheRemessa = Space(22)
					strCarteira = "01"
					strCodigoOcorrencia = "01"

					iTotaldeCasas = 10 - Len(strIdentificacao)
					'strUsoEmpresaBeneficiarioDetalheRemessa = Trim(strIdentificacao)
					strUsoEmpresaBeneficiarioDetalheRemessa = PreparaCampo("", 1, iTotaldeCasas, "0") & Trim(strIdentificacao)
					strVencimento = VB6.Format(IIf(IsDBNull(row.Item("strVencimento")), "000000", row.Item("strVencimento")), "ddMMyy")
					strValorTitulo = PreparaCampo(IIf(IsDBNull(row.Item("strValorTituloLiquido")), 0, row.Item("strValorTituloLiquido")), 0, 13, "0")
					strCodigoBancoDetalheRemessa = "104"
					strAgenciaCobradora = "00000"
					strEspecieTitulo = "18"
					strAceite = "A"
					strDataEmissaoTitulo = VB6.Format(IIf(IsDBNull(row.Item("strDataEmissaoTitulo")), "000000", row.Item("strDataEmissaoTitulo")), "ddMMyy")
					strInstrucao_1 = "02"
					strInstrucao_2 = "00"
					strJurosMora = "0000000000000"
					strDataDesconto = "000000" 'VB6.Format(IIf(IsDBNull(row.Item("strDataDesconto")), "000000", row.Item("strDataDesconto")), "ddMMyy")
					strValorPercentualDesconto = "0000000000000"
					strValorIOF = "0000000000000"
					strAbatimento = "0000000000000"
					'strTipoInscricaoDetalheRemessa = "01"
					strNumeroInscricaoDetalheRemessa = IIf(IsDBNull(row.Item("strNumeroInscricaoDetalheRemessa")), "", row.Item("strNumeroInscricaoDetalheRemessa"))
					strNumeroInscricaoDetalheRemessa = Replace(Replace(Replace(Replace(strNumeroInscricaoDetalheRemessa, ".", ""), "/", ""), "-", ""), "\", "")
					strTipoInscricaoDetalheRemessa = IIf(Len(strNumeroInscricaoDetalheRemessa) < 14, "01", "02")
					strNumeroInscricaoDetalheRemessa = PreparaCampo(strNumeroInscricaoDetalheRemessa, 0, 14, "0")
					strNome = IIf(IsDBNull(row.Item("strNome")), "", row.Item("strNome"))
					strNome = PreparaCampo(Mid(strNome, 1, 40), 1, 40, " ")
					strEndereco = IIf(IsDBNull(row.Item("strEndereco")), "", row.Item("strEndereco"))
					strEndereco = PreparaCampo(Mid(strEndereco, 1, 40), 1, 40, " ")
					strBairro = IIf(IsDBNull(row.Item("strBairro")), "", row.Item("strBairro"))
					strBairro = PreparaCampo(Mid(strBairro, 1, 12), 1, 12, " ")
					strCEP = IIf(IsDBNull(row.Item("strCEP")), "", row.Item("strCEP"))
					strCEP = Replace(Trim(strCEP), "-", "")
					If strCEP = String.Empty Then
						strCEP = "00000000"
					End If
					strCidade = IIf(IsDBNull(row.Item("strCidade")), "", row.Item("strCidade"))
					strCidade = PreparaCampo(Mid(strCidade, 1, 15), 1, 15, " ")
					strUF = IIf(IsDBNull(row.Item("strUF")), "", row.Item("strUF"))
					strUF = PreparaCampo(Mid(strUF, 1, 2), 1, 2, " ")
					strDataMulta = "000000" 'Space(6)
					strValorMulta = "0000000000"
					strSacadorAvalista = Space(22)
					strInstrucao_3 = "00"
					strPrazo = "99"
					strCodigoMoeda = "1"
					strNumeroSequencial = PreparaCampo(lngNumeroSequencial, 0, 6, "0")

					'Descrição de registro tipo “1” (Obrigatório) - Dados do título - Detalhe de Remessa
					strLinha = String.Empty
					strLinha = strCodigoRegistroDetalheRemessa '01.1  - Código do Registro
					strLinha = strLinha & strTipoInscricao '02.1  - Tipo Inscrição
					strLinha = strLinha & strNumeroInscricao '03.1  - Número Inscrição
					strLinha = strLinha & strUsoExclusivoCAIXA '04.1  - Uso Exclusivo CAIXA
					strLinha = strLinha & strCodigoBeneficiarioDetalheRemessa '05.1  - Código do Beneficiário
					strLinha = strLinha & strIDEmissao '06.1 - ID Emissão
					strLinha = strLinha & strIDPostagem '07.1  - ID Postagem
					strLinha = strLinha & strTaxaPermanencia '09.1  - Taxa Permanência
					strLinha = strLinha & strUsoEmpresaBeneficiario '10.1  - Uso Empresa Beneficiário
					strLinha = strLinha & strNossoNumero '11.1  - Nosso Número
					strLinha = strLinha & strBrancos '12.1  - Brancos
					strLinha = strLinha & strUsolivreBancoEmpresa '12A.1 - Uso livre banco/empresa
					strLinha = strLinha & strCodigoJuros '13.1  - Código dos juros
					strLinha = strLinha & strDataJuros '13A.1 - Data de Juros
					strLinha = strLinha & strCodigoDesconto '13B.1 - Código do Desconto
					strLinha = strLinha & strBrancosDetalheRemessa '13C.1 - Brancos
					strLinha = strLinha & strCarteira '14.1  - Carteira
					strLinha = strLinha & strCodigoOcorrencia '15.1  - Código Ocorrência
					strLinha = strLinha & strUsoEmpresaBeneficiarioDetalheRemessa '16.1  - Uso Empresa Beneficiário
					strLinha = strLinha & strVencimento '17.1  - Vencimento
					strLinha = strLinha & strValorTitulo '18.1  - Valor do Título
					strLinha = strLinha & strCodigoBancoDetalheRemessa '19.1  - Código do Banco
					strLinha = strLinha & strAgenciaCobradora '20.1  - Agência Cobradora
					strLinha = strLinha & strEspecieTitulo '21.1  - Espécie de Título
					strLinha = strLinha & strAceite '22.1  - Aceite
					strLinha = strLinha & strDataEmissaoTitulo '23.1  - Data Emissão Título
					strLinha = strLinha & strInstrucao_1 '24.1  - Instrução 1
					strLinha = strLinha & strInstrucao_2 '25.1  - Instrução 2
					strLinha = strLinha & strJurosMora '26.1  - Juros Mora
					strLinha = strLinha & strDataDesconto '27.1  - Data do Desconto
					strLinha = strLinha & strValorPercentualDesconto '28.1  - Valor/Percentual do Desconto
					strLinha = strLinha & strValorIOF '29.1  - Valor do IOF
					strLinha = strLinha & strAbatimento '30.1  - Abatimento
					strLinha = strLinha & strTipoInscricaoDetalheRemessa '31.1  - Tipo Inscrição
					strLinha = strLinha & strNumeroInscricaoDetalheRemessa '32.1  - Número Inscrição
					strLinha = strLinha & RetiraAcentuacao(RemoverCaracter(strNome, True)) '33.1  - Nome
					strLinha = strLinha & RetiraAcentuacao(RemoverCaracter(strEndereco, True)) '34.1  - Endereço
					strLinha = strLinha & RetiraAcentuacao(RemoverCaracter(strBairro, True)) '35.1  - Bairro
					strLinha = strLinha & strCEP '36.1  - CEP
					strLinha = strLinha & RetiraAcentuacao(RemoverCaracter(strCidade, True)) '37.1  - Cidade
					strLinha = strLinha & strUF '38.1  - UF
					strLinha = strLinha & strDataMulta '39.1  - Data da Multa
					strLinha = strLinha & strValorMulta '40.1  - Valor da Multa
					strLinha = strLinha & strSacadorAvalista '41.1  - Sacador/Avalista
					strLinha = strLinha & strInstrucao_3 '42.1  - Instrução 3
					strLinha = strLinha & strPrazo '43.1  - Prazo
					strLinha = strLinha & strCodigoMoeda '44.1  - Código da Moeda
					strLinha = strLinha & strNumeroSequencial '45.1  - Número Sequencial
					'Grava Linha Arquivo externo
					PrintLine(intARQ, strLinha)
				Next

				'Prepara os dados
				strCodigoRegistroTrailer = "9"
				strUsoExclusivoTrailer = Space(393)
				strNumeroSequencialTrailer = PreparaCampo(lngNumeroSequencial + 1, 0, 6, "0")

				'Descrição de registro tipo ‘9’ (Obrigatório) – Trailer de Remessa
				strLinha = String.Empty
				strLinha = strCodigoRegistroTrailer '01.9 Código do Registro
				strLinha = strLinha & strUsoExclusivoTrailer '02.9 Uso Exclusivo
				strLinha = strLinha & strNumeroSequencialTrailer '03.9 Nº Sequencial
				'Grava Linha Arquivo externo
				PrintLine(intARQ, strLinha)

				FileClose(intARQ)

				MsgBox("Processo Concluído! Arquivo gerado: " & Trim(strArquivo & "\" & strNomeArquivo), vbInformation, gstrTituloMensagem)

				If sFiltraBancos <> "N" Then

					'Atualiza o sequencial a inserir no arquivo
					strsql = "UPDATE bancos SET sequencialboleto = " & lngSequencial & " " _
					   & "WHERE bancos.ban_id = " & iintBanID
					objAtualizaBancoDados.QUERY_NAME = strsql
					repositorioAtualizaBancoDados.Execute(objAtualizaBancoDados)
				End If
			Else
				MsgBox("Nao foram encontrados registros para sua seleção", vbInformation, gstrTituloMensagem)
				FileClose(intARQ)
			End If

			Me.Cursor = System.Windows.Forms.Cursors.Default

		Catch ex As Exception
			Me.Cursor = System.Windows.Forms.Cursors.Default
		End Try

	End Sub
	Private Sub GerarArquivoRemessaBoleto()


		'Controle do Filtro da Rota
		Dim lngContZLC As Integer
		Dim lngConta As Integer
		Dim strFiltroZL As String

		'Controle do Arquivo externo
		Dim strArquivo As String
		Dim intARQ As Short
		Dim strLinha As String

		'Tipo do Registro
		Dim strTipo As String

		'REGISTRO A - HEADER
		Dim strEmpresa As String
		Dim strSequencial As String
		Dim strDtGeracao As String
		Dim strCpfCnpjEmpresa As String
		Dim strPrefixo As String
		Dim strDVPrefixo As String
		Dim strContaCorrente As String
		Dim strDVContaCorrente As String
		Dim strDVAgencia As String = "0"
		Dim strNomeEmpresa As String
		Dim strNomeEmpresaSacador As String
		Dim strNomeBanco As String


		'REGISTRO E - DEBITO EM CONTA
		Dim strIDCons As String
		Dim strIDConsAnt As String
		Dim strAgencia As String
		Dim strCC As String
		Dim strDtDebito As String
		Dim strDtEmissao As String
		Dim strValor As String
		Dim strValorNossoNumero As String
		Dim strNome As String
		Dim strUsoEmpresa As String
		Dim strZona As String
		Dim strLivro As String
		Dim strConta As String
		Dim dblNumNf As Double
		Dim lstrAvisoDeb As String
		Dim lstrMensagem As String
		Dim strNomeConsumidor As String
		Dim strBairroConsumidor As String
		Dim strCidadeConsumidor As String
		Dim strCepConsumidor As String
		Dim strUFConsumidor As String
		Dim strSulfixoCEP As String
		Dim strCpfCnpj As String
		Dim strEndconsumidor As String
		Dim strConsReg As String
		Dim strCodCooperativa As String
		Dim strCodigoCliente As String
		Dim sCpfCnpj As String
		Dim strCodBarra As String
		Dim strCodBarra_imagem As String


		Dim strBancoCompesacao As String = "756"
		Dim strNossoNumero As String
		Dim itotalregistros As Integer
		Dim dTotalValor As Double
		Dim sIdentificacao As String

		'REGISTRO Z - TRAILER
		Dim intQtde As Short
		Dim dblVlrTotal As Double

		'Controle dos dados na base de dados

		Dim dt As DataTable
		Dim objAtualizaBancoDados As New entidadeAtualizaBancoDados
		Dim repositorioAtualizaBancoDados As New repositorioAtualizaBancoDados

		Try

			lstrMensagem = ""
			'checa e abre o arquivo
			If Len(Trim(txtDir.Text)) = 0 Then
				MsgBox("Arquivo de destino não foi informado!", MsgBoxStyle.Information, gstrTituloMensagem)
				txtDir.Focus()
				Exit Sub
			End If
			strArquivo = Trim(txtDir.Text)

			Me.Cursor = System.Windows.Forms.Cursors.WaitCursor

			intARQ = FreeFile()
			FileOpen(intARQ, strArquivo, OpenMode.Output)

			Call sDadosEmpresa(LImagem,
							   sNomeEmpresa,
							   sEnderecoEmpresa,
							   sCepEmpresa,
							   sCidadeEmpresa,
							   sUFempresa,
							   sBairroEmpresa,
							   sFoneEmpresa,
							   sWebEmpresa, scpfCNPF)

			'REGISTRO - HEADER DO ARQUIVO
			'Prepara os dados
			strPrefixo = "4042"
			strDVPrefixo = "8"
			strContaCorrente = GetConfig("numero.conta.corrente.sicoob")
			strContaCorrente = Replace(strContaCorrente, "-", "")
			strDVContaCorrente = VB.Right(strContaCorrente, 1)
			strContaCorrente = Mid(strContaCorrente, 1, Len(strContaCorrente) - 1)
			strContaCorrente = PreparaCampo(strContaCorrente, 0, 12, "0")
			strEmpresa = PreencheCampo(Mid(gstrEmpresa_Sigla, 1, 30), 20, " ", "D")
			strCpfCnpjEmpresa = Replace(Replace(Replace(Replace(scpfCNPF, ".", ""), "/", ""), "-", ""), "\", "")
			strCpfCnpjEmpresa = PreparaCampo(strCpfCnpjEmpresa, 0, 15, "0")
			strDtGeracao = VB6.Format(Today, "yyyymmdd")
			strConvenio = PreparaCampo(strConvenio, 1, 20, " ")
			strNrBco = PreparaCampo(strNrBco, 0, 3, "0")
			strNmBco = PreparaCampo(strNmBco, 1, 20, " ")
			strNomeEmpresaSacador = PreparaCampo(sNomeEmpresa, 1, 40, " ")
			strNomeEmpresa = PreparaCampo(sNomeEmpresa, 1, 30, " ")
			strSequencial = PreparaCampo(CStr(lngSequencial), 0, 6, "0")
			strNomeBanco = PreparaCampo("SICOOB", 1, 30, " ")
			lngSequencial = 1

			strLinha = strBancoCompesacao ' ok
			strLinha = strLinha & "0000"
			strLinha = strLinha & "0"
			strLinha = strLinha & New String(" ", 9)
			strLinha = strLinha & "2"
			strLinha = strLinha & Mid(strCpfCnpjEmpresa, 2, Len(strCpfCnpjEmpresa))
			strLinha = strLinha & New String(" ", 20)
			strLinha = strLinha & PreparaCampo(strPrefixo, 0, 5, "0")
			strLinha = strLinha & strDVPrefixo
			strLinha = strLinha & strContaCorrente
			strLinha = strLinha & strDVContaCorrente
			strLinha = strLinha & strDVAgencia
			strLinha = strLinha & RetiraAcentuacao(strNomeEmpresa)
			strLinha = strLinha & strNomeBanco
			strLinha = strLinha & New String(" ", 10)
			strLinha = strLinha & "1"
			strLinha = strLinha & Format(Date.Now, "ddMMyyyy")
			strLinha = strLinha & Format(Date.Now, "hhmmss")
			strLinha = strLinha & PreparaCampo(Str(lngSequencial), 0, 6, "0")
			strLinha = strLinha & "081"
			strLinha = strLinha & "00000"
			strLinha = strLinha & New String(" ", 20)
			strLinha = strLinha & New String(" ", 20)
			strLinha = strLinha & New String(" ", 29)
			'strLinha = Len(strLinha)

			'Grava Linha Arquivo externo
			PrintLine(intARQ, strLinha)

			'REGISTRO - HEADER DO LOTE
			strLinha = strBancoCompesacao ' ok
			strLinha = strLinha & PreparaCampo(Str(lngSequencial), 0, 4, "0")
			strLinha = strLinha & "1"
			strLinha = strLinha & "R"
			strLinha = strLinha & "01"
			strLinha = strLinha & New String(" ", 2)
			strLinha = strLinha & "040"
			strLinha = strLinha & New String(" ", 1)
			strLinha = strLinha & "2"
			strLinha = strLinha & strCpfCnpjEmpresa
			strLinha = strLinha & New String(" ", 20)
			strLinha = strLinha & PreparaCampo(strPrefixo, 0, 5, "0")
			strLinha = strLinha & strDVPrefixo
			strLinha = strLinha & strContaCorrente
			strLinha = strLinha & strDVContaCorrente
			strLinha = strLinha & New String(" ", 1)
			strLinha = strLinha & RetiraAcentuacao(strNomeEmpresa)
			strLinha = strLinha & New String(" ", 40)
			strLinha = strLinha & New String(" ", 40)
			strLinha = strLinha & PreparaCampo(Str(lngSequencial), 0, 8, "0")
			strLinha = strLinha & Format(Date.Now, "ddMMyyyy")
			strLinha = strLinha & "00000000"
			strLinha = strLinha & New String(" ", 33)

			'Grava Linha Arquivo externo
			PrintLine(intARQ, strLinha)

			'Filtro do select Por Rota
			'If LVRota.Items.Item(1).Checked = False Then
			'Dim sRepart

			strFiltroZL = strFiltroZL & "    AND mid(f.rota,1,4) IN ( "
			For lngConta = 0 To LVRota.Items.Count - 1
				If LVRota.Items.Item(lngConta).Checked = True Then

					'	sRepart = Split(LVRota.Items.Item(lngConta).Text, "-")

					'strFiltroZL = strFiltroZL & "'" & sRepart(0) & "',"
					strFiltroZL = strFiltroZL & "'" & LVRota.Items.Item(lngConta).Text & "',"
					lngContZLC = lngContZLC + 1
				End If
			Next

			If lngContZLC > 0 Then
				'strFiltroZL = strFiltroZL & ") "
				strFiltroZL = VB.Left(strFiltroZL, Len(strFiltroZL) - 1) & ") "
			Else
				strFiltroZL = " "
			End If
			'End If
			'End If

			If Len(Trim(Me.txtZona.Text)) > 0 Then
				strFiltroZL = strFiltroZL & "  AND f.zona = '" & Me.txtZona.Text & "' "
			End If
			If Len(Trim(Me.txtLivro.Text)) > 0 Then
				strFiltroZL = strFiltroZL & "  AND f.livro = '" & Me.txtLivro.Text & "' "
			End If
			If Len(Trim(Me.txtConta.Text)) > 0 Then
				strFiltroZL = strFiltroZL & "  AND f.conta = '" & Me.txtConta.Text & "' "
			End If

			strsql = "SELECT ub.zona, "
			strsql = strsql & " ub.livro,"
			strsql = strsql & " ub.conta, "
			strsql = strsql & " ub.agenc, "
			strsql = strsql & " ub.cc, "
			strsql = strsql & " ub.nome,"
			strsql = strsql & " f.datavenc,"
			strsql = strsql & " f.valortot, "
			strsql = strsql & " f.valorliq, "
			strsql = strsql & " f.unid_id, "
			strsql = strsql & " f.cons_id, "
			strsql = strsql & " f.numnf, "
			strsql = strsql & " ub.flg_aviso_debito, "
			strsql = strsql & " f.dataem, "
			strsql = strsql & " c.cpf_cnpj as cpfcnpjconsumidor, "
			strsql = strsql & " c.nome as nomeconsumidor, "
			strsql = strsql & " c.end as endconsumidor, "
			strsql = strsql & " c.bairro as bairroconsumidor, "
			strsql = strsql & " c.cidade as cidadeconsumidor, "
			strsql = strsql & " c.cep as cepconsumidor, "
			strsql = strsql & " c.uf as ufconsumidor, c.consreg, f.codbarra, f.codbarra_imagem  "
			'strsql = strsql & " FROM uc_faturamento ub INNER JOIN nf f ON(f.unid_id = ub.id) "
			strsql = strsql & " FROM uc_faturamento ub INNER JOIN " & strTabela & " ON(f.unid_id = ub.id) "
			strsql = strsql & "                        INNER JOIN consum c ON(c.consreg = f.cons_id) "
			'strsql = strsql & " FROM uc_faturamento ub LEFT JOIN nf f ON(f.unid_id = ub.id) "
			'strsql = strsql & "                        LEFT JOIN consum c ON(c.consreg = f.cons_id) "

			If sFiltraBancos = "N" Then
				strsql = strsql & "  WHERE 1=1 "
				strsql = strsql & "  AND f.mesano = '" & txtMesAno.Text & "'"
				'strsql = strsql & "  AND f.banarrec = " & VB6.Format(iintBanID, "000")
				strsql = strsql & "  AND f.flgst = '' "
				'strsql = strsql & "  AND ub.situacao = 'L' "
			Else
				strsql = strsql & "  WHERE 1=1 "
				strsql = strsql & "  AND f.mesano = '" & txtMesAno.Text & "'"
				strsql = strsql & "  AND f.banarrec = " & VB6.Format(iintBanID, "000")
				strsql = strsql & "  AND f.flgst = '' "
				'strsql = strsql & "  AND ub.situacao = 'L' "
			End If


			If VB6.GetItemString(Me.cmbDiaVenc, Me.cmbDiaVenc.SelectedIndex) <> "" Then
				strsql = strsql & "  AND DAY(f.datavenc) = """ & VB6.Format(VB6.GetItemString(Me.cmbDiaVenc, Me.cmbDiaVenc.SelectedIndex), "00") & """ "
			End If

			If optA.Checked = True Then
				strsql = strsql & "  AND f.grupo = 'A' "
			ElseIf optB.Checked = True Then
				strsql = strsql & "  AND f.grupo = 'B' "
			End If

			strsql = strsql & strFiltroZL
			objAtualizaBancoDados.QUERY_NAME = strsql
			dt = repositorioAtualizaBancoDados.Consultar(objAtualizaBancoDados)

			If dt.Rows.Count > 0 Then
				dTotalValor = 0
				pgb.Value = 0
				pgb.Minimum = 0
				pgb.Maximum = dt.Rows.Count
				itotalregistros = dt.Rows.Count
				For Each row As DataRow In dt.Rows

					strConsReg = IIf(IsDBNull(row.Item("consreg")), "", row.Item("consreg"))
					strZona = IIf(IsDBNull(row.Item("Zona")), "000", row.Item("Zona"))
					strLivro = IIf(IsDBNull(row.Item("Livro")), "00", row.Item("Livro"))
					strConta = IIf(IsDBNull(row.Item("Conta")), "000000", row.Item("Conta"))
					strNome = IIf(IsDBNull(row.Item("nome")), "", row.Item("nome"))
					dblNumNf = IIf(IsDBNull(row.Item("numNf")), 0, row.Item("numNf"))
					lstrAvisoDeb = IIf(IsDBNull(row.Item("flg_aviso_debito")), "N", row.Item("flg_aviso_debito"))
					strNomeConsumidor = IIf(IsDBNull(row.Item("nomeconsumidor")), "", row.Item("nomeconsumidor"))
					strBairroConsumidor = IIf(IsDBNull(row.Item("bairroconsumidor")), "", row.Item("bairroconsumidor"))
					strCidadeConsumidor = IIf(IsDBNull(row.Item("cidadeconsumidor")), "", row.Item("cidadeconsumidor"))
					strUFConsumidor = IIf(IsDBNull(row.Item("ufconsumidor")), "", row.Item("ufconsumidor"))
					strCepConsumidor = IIf(IsDBNull(row.Item("cepconsumidor")), "", row.Item("cepconsumidor"))
					strCpfCnpj = IIf(IsDBNull(row.Item("cpfcnpjconsumidor")), "", row.Item("cpfcnpjconsumidor"))
					strEndconsumidor = IIf(IsDBNull(row.Item("endconsumidor")), "", row.Item("endconsumidor"))
					strCodBarra = IIf(IsDBNull(row.Item("codbarra")), "", row.Item("codbarra"))
					strCodBarra_imagem = IIf(IsDBNull(row.Item("CodBarra_imagem")), "", row.Item("CodBarra_imagem"))

					strNomeConsumidor = PreparaCampo(Mid(strNomeConsumidor, 1, 40), 1, 40, " ")
					strBairroConsumidor = PreparaCampo(Mid(strBairroConsumidor, 1, 15), 1, 15, " ")
					strCidadeConsumidor = PreparaCampo(Mid(strCidadeConsumidor, 1, 15), 1, 15, " ")
					strUFConsumidor = PreparaCampo(Mid(strUFConsumidor, 1, 2), 1, 2, " ")
					strEndconsumidor = PreparaCampo(Mid(strEndconsumidor, 1, 40), 1, 40, " ")

					strCepConsumidor = Replace(Trim(strCepConsumidor), "-", "")
					If Len(Trim(strCepConsumidor)) = 8 Then
						strCepConsumidor = PreparaCampo(Mid(strCepConsumidor, 1, 5), 0, 5, 0)
						strSulfixoCEP = VB.Right(strCepConsumidor, 3)
					Else
						strCepConsumidor = "00000"
						strSulfixoCEP = "000"
					End If

					strCpfCnpj = Replace(Replace(Replace(Replace(strCpfCnpj, ".", ""), "/", ""), "-", ""), "\", "")
					sCpfCnpj = IIf(Len(strCpfCnpj) < 14, "1", "2")

					strCpfCnpj = PreparaCampo(strCpfCnpj, 0, 15, "0")

					Dim dataVenc As Date
					dataVenc = VB6.Format(IIf(IsDBNull(row.Item("datavenc")), "00000000", row.Item("datavenc")), "dd/MM/yyyy")

					'Data para Débito do valor da fatura
					strDtDebito = VB6.Format(IIf(IsDBNull(row.Item("datavenc")), "00000000", row.Item("datavenc")), "ddMMyyyy")
					strDtDebito = PreparaCampo(strDtDebito, 0, 8, "0")

					strDtEmissao = VB6.Format(IIf(IsDBNull(row.Item("dataem")), "00000000", row.Item("dataem")), "ddMMyyyy")
					strDtEmissao = PreparaCampo(strDtEmissao, 0, 8, "0")

					'Valor da Fatura formatado sem caracteres especiais(,.)
					strValor = PreparaCampo(IIf(IsDBNull(row.Item("Valorliq")), 0, row.Item("Valorliq")), 0, 15, "0")
					strValorNossoNumero = IIf(IsDBNull(row.Item("Valorliq")), 0, row.Item("Valorliq"))
					dTotalValor = dTotalValor + IIf(IsDBNull(row.Item("Valorliq")), 0, row.Item("Valorliq"))

					strNome = Mid(Trim(strNome), 1, 34)

					sIdentificacao = strZona & strLivro & strConta
					strUsoEmpresa = VB6.Format(Replace(txtMesAno.Text, "/", ""), "000000") & Trim(sIdentificacao)
					strUsoEmpresa = PreparaCampo(strUsoEmpresa, 1, 25, " ")

					strCodigoCliente = "272663"
					strCodCooperativa = "4042" ' 40428

					'If strTabela = "nf" Then
					'	strNossoNumero = fRetornaNossoNumero(strCodCooperativa, strCodigoCliente, "01", "01", 1, dataVenc, strValorNossoNumero)
					'Else

					'strNossoNumero = Mid(strCodBarra, 22, 7)
					strNossoNumero = Mid(strCodBarra_imagem, 34, 8)
					strNossoNumero = PreparaCampo(strNossoNumero, 0, 10, "0")
					'End If

					intQtde = intQtde + 1
					strTipo = "P"
					strLinha = strBancoCompesacao
					strLinha = strLinha & PreparaCampo(Str(lngSequencial), 0, 4, "0")
					strLinha = strLinha & "3"
					strLinha = strLinha & PreparaCampo(Str(intQtde), 0, 5, "0")
					strLinha = strLinha & strTipo
					strLinha = strLinha & New String(" ", 1)
					strLinha = strLinha & "01"
					strLinha = strLinha & PreparaCampo(strPrefixo, 0, 5, "0")
					strLinha = strLinha & strDVPrefixo
					strLinha = strLinha & strContaCorrente
					strLinha = strLinha & strDVContaCorrente
					strLinha = strLinha & New String(" ", 1)
					strLinha = strLinha & strNossoNumero & "01011" & New String(" ", 5) ' Precisa ver numero do cliente para calcular, por enquanto está usando um fixo
					strLinha = strLinha & "1"
					strLinha = strLinha & "0"
					strLinha = strLinha & New String(" ", 1)
					strLinha = strLinha & "2"
					strLinha = strLinha & "2"
					strLinha = strLinha & PreparaCampo(dblNumNf, 1, 15, " ")
					strLinha = strLinha & strDtDebito
					strLinha = strLinha & strValor
					strLinha = strLinha & "00000"
					strLinha = strLinha & New String(" ", 1)
					strLinha = strLinha & "02"
					strLinha = strLinha & "N"
					strLinha = strLinha & strDtEmissao
					strLinha = strLinha & "0"
					strLinha = strLinha & "00000000"
					strLinha = strLinha & "000000000000000"
					strLinha = strLinha & "0"
					strLinha = strLinha & "00000000"
					strLinha = strLinha & "000000000000000"
					strLinha = strLinha & "000000000000000"
					strLinha = strLinha & "000000000000000"
					strLinha = strLinha & strUsoEmpresa
					strLinha = strLinha & "3"
					strLinha = strLinha & "00"
					strLinha = strLinha & "0"
					strLinha = strLinha & New String(" ", 3)
					strLinha = strLinha & "09"
					strLinha = strLinha & "0000000000"
					strLinha = strLinha & New String(" ", 1)

					'Grava Linha Arquivo externo
					PrintLine(intARQ, strLinha)

					intQtde = intQtde + 1
					strTipo = "Q"
					strLinha = strBancoCompesacao ' ok
					strLinha = strLinha & PreparaCampo(Str(lngSequencial), 0, 4, "0")
					strLinha = strLinha & "3"
					strLinha = strLinha & PreparaCampo(Str(intQtde), 0, 5, "0")
					strLinha = strLinha & strTipo
					strLinha = strLinha & New String(" ", 1)
					strLinha = strLinha & "01"
					strLinha = strLinha & sCpfCnpj
					strLinha = strLinha & strCpfCnpj
					strLinha = strLinha & RetiraAcentuacao(strNomeConsumidor)
					strLinha = strLinha & RetiraAcentuacao(strEndconsumidor)
					strLinha = strLinha & RetiraAcentuacao(strBairroConsumidor)
					strLinha = strLinha & strCepConsumidor
					strLinha = strLinha & strSulfixoCEP
					strLinha = strLinha & RetiraAcentuacao(strCidadeConsumidor)
					strLinha = strLinha & strUFConsumidor
					strLinha = strLinha & "2"
					strLinha = strLinha & strCpfCnpjEmpresa
					strLinha = strLinha & RetiraAcentuacao(strNomeEmpresaSacador)
					strLinha = strLinha & "000"
					strLinha = strLinha & New String(" ", 20)
					strLinha = strLinha & New String(" ", 8)

					'Grava Linha Arquivo externo
					PrintLine(intARQ, strLinha)

					intQtde = intQtde + 1
					strTipo = "R" ' ok
					strLinha = strBancoCompesacao
					strLinha = strLinha & PreparaCampo(Str(lngSequencial), 0, 4, "0")
					strLinha = strLinha & "3"
					strLinha = strLinha & PreparaCampo(Str(intQtde), 0, 5, "0")
					strLinha = strLinha & strTipo
					strLinha = strLinha & New String(" ", 1)
					strLinha = strLinha & "01"
					strLinha = strLinha & "0"
					strLinha = strLinha & "00000000"
					strLinha = strLinha & "000000000000000"
					strLinha = strLinha & "0"
					strLinha = strLinha & "00000000"
					strLinha = strLinha & "000000000000000"
					strLinha = strLinha & "0"
					strLinha = strLinha & "00000000"
					strLinha = strLinha & "000000000000000"
					strLinha = strLinha & New String(" ", 10)
					strLinha = strLinha & New String(" ", 40)
					strLinha = strLinha & New String(" ", 40)
					strLinha = strLinha & New String(" ", 20)
					strLinha = strLinha & "00000000"
					strLinha = strLinha & "000"
					strLinha = strLinha & "00000"
					strLinha = strLinha & New String(" ", 1)
					strLinha = strLinha & "000000000000"
					strLinha = strLinha & New String(" ", 1)
					strLinha = strLinha & New String(" ", 1)
					strLinha = strLinha & "0"
					strLinha = strLinha & New String(" ", 9)

					'Grava Linha Arquivo externo
					PrintLine(intARQ, strLinha)

					intQtde = intQtde + 1
					strTipo = "S"    ' ok
					strLinha = strBancoCompesacao
					strLinha = strLinha & PreparaCampo(Str(lngSequencial), 0, 4, "0")
					strLinha = strLinha & "3"
					strLinha = strLinha & PreparaCampo(Str(intQtde), 0, 5, "0")
					strLinha = strLinha & strTipo
					strLinha = strLinha & New String(" ", 1)
					strLinha = strLinha & "01"
					strLinha = strLinha & "3"
					strLinha = strLinha & New String(" ", 40)
					strLinha = strLinha & New String(" ", 40)
					strLinha = strLinha & New String(" ", 40)
					strLinha = strLinha & New String(" ", 40)
					strLinha = strLinha & New String(" ", 40)
					strLinha = strLinha & New String(" ", 22)

					'Grava Linha Arquivo externo
					PrintLine(intARQ, strLinha)

					pgb.Value = pgb.Value + 1

				Next
				'End If

				intQtde = intQtde + 1
				'REGISTRO - TRAILER DO LOTE
				strLinha = strBancoCompesacao ' ok
				strLinha = strLinha & PreparaCampo(Str(lngSequencial), 0, 4, "0")
				strLinha = strLinha & "5"
				strLinha = strLinha & New String(" ", 9)
				strLinha = strLinha & PreparaCampo(Str(itotalregistros * 4), 0, 6, "0") ' multiplica por 4 (p q r s)
				strLinha = strLinha & PreparaCampo(Str(itotalregistros), 0, 6, "0") ' count
				strLinha = strLinha & PreparaCampo(Str(dTotalValor), 0, 17, "0")
				strLinha = strLinha & "000000"
				strLinha = strLinha & "00000000000000000"
				strLinha = strLinha & "000000"
				strLinha = strLinha & "00000000000000000"
				strLinha = strLinha & "000000"
				strLinha = strLinha & "00000000000000000"
				strLinha = strLinha & New String(" ", 8)
				strLinha = strLinha & New String(" ", 117)
				PrintLine(intARQ, strLinha)

				intQtde = intQtde + 1
				'REGISTRO - TRAILER DO ARQUIVO
				strLinha = strBancoCompesacao ' ok
				strLinha = strLinha & "9999"
				strLinha = strLinha & "9"
				strLinha = strLinha & New String(" ", 9)
				strLinha = strLinha & "000001"
				strLinha = strLinha & PreparaCampo(Str(intQtde + 2), 0, 6, "0") ' mais 2 registros cabeçalho header e lote
				strLinha = strLinha & "000000"
				strLinha = strLinha & New String(" ", 205)
				PrintLine(intARQ, strLinha)

				FileClose(intARQ)

				MsgBox("Processo Concluído! Arquivo gerado: " & Trim(txtDir.Text), vbInformation, gstrTituloMensagem)

				If sFiltraBancos <> "N" Then
					'Atualiza o sequencial a inserir no arquivo
					strsql = "UPDATE bancos SET sequencialboleto = " & lngSequencial & " " _
				   & "WHERE bancos.ban_id = " & iintBanID
					objAtualizaBancoDados.QUERY_NAME = strsql
					repositorioAtualizaBancoDados.Execute(objAtualizaBancoDados)
				End If
			Else
					MsgBox("Nao foram encontrados registros para sua seleção", vbInformation, gstrTituloMensagem)
				FileClose(intARQ)
			End If

			Me.Cursor = System.Windows.Forms.Cursors.Default

		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: GerarArquivoRemessaBoleto" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try


	End Sub

	Private Function fRetornaNossoNumero(ByVal strNumCooperativa As String, ByVal sNumCliente As String, ByVal sQtdeParcelas As String, ByVal sModalidade As String, ByVal iTipoFormulario As Integer, ByVal dVencimento As Date, ByVal sValorDocumento As String)

		Dim ret As String
		Dim strnossonumero As String
		Dim iconstante As String = "319731973197319731973"
		Dim FatorVencimento As Long
		Dim dVencimentobase As Date = "03/07/2000"
		Dim sLinhaDigitavel As String
		Dim strDV1, strDV2, strDV3, strDVcodbarras
		Dim strBeneficiarioCliente As String
		Dim sParcelaLinha As String
		Dim sValor As String
		Dim contador, mult, soma, resto As Integer
		Dim DVFinal As Integer
		Dim sLinhaDigitavelRetorno As String
		Dim strnossonumeroDvFinal As String
		Dim strNossoNumeroCB As String

		Dim objAtualizaBancoDados As New entidadeAtualizaBancoDados
		Dim repositorioAtualizaBancoDados As New repositorioAtualizaBancoDados

		Try
			strDV1 = 1
			strDV2 = 2
			strDV3 = 3
			strDVcodbarras = 4

			strnossonumero = GetConfig("nosso.numero.banco.faturas.boleto")
			strnossonumero = Replace(strnossonumero, "-", "")
			strnossonumero = Replace(strnossonumero, "/", "")
			strnossonumero = Replace(strnossonumero, "\", "")
			strnossonumeroDvFinal = strnossonumero
			strNossoNumeroCB = strnossonumero

			sValorDocumento = Replace(Replace(sValorDocumento, ".", ""), ",", "")
			sValor = PreparaCampo(sValorDocumento, 0, 10, "0")
			sParcelaLinha = PreparaCampo(sQtdeParcelas, 0, 3, "0")
			strBeneficiarioCliente = PreparaCampo(sNumCliente, 0, 7, "0")
			strNumCooperativa = PreparaCampo(strNumCooperativa, 0, 4, "0")
			sNumCliente = PreparaCampo(sNumCliente, 0, 10, "0")
			strnossonumero = PreparaCampo(strnossonumero, 0, 7, "0")
			'strnossonumero = PreparaCampo("21", 0, 7, "0")

			Dim sMontagem As String = strNumCooperativa & sNumCliente & strnossonumero

			soma = 0

			For contador = 1 To 21
				mult = Mid(sMontagem, contador, 1) * Mid(iconstante, contador, 1)
				soma = soma + mult
			Next

			'resto = soma / 11

			resto = (soma Mod 11)

			If resto = 0 Or resto = 1 Then
				DVFinal = 0
			Else
				DVFinal = 11 - resto

				If InStr(DVFinal, "-") > 0 Then
					DVFinal = VB.Right(DVFinal, 1)
				End If
			End If

			FatorVencimento = DateDiff(Microsoft.VisualBasic.DateInterval.Day, dVencimentobase, dVencimento) ' 8012
			'FatorVencimento = DateDiff(Microsoft.VisualBasic.DateInterval.Day, d1, d2) ' 8012
			FatorVencimento = FatorVencimento + 1000
			FatorVencimento = PreparaCampo(FatorVencimento, 0, 4, "0")

			strnossonumero = PreparaCampo(strnossonumeroDvFinal & DVFinal, 0, 8, "0")

			sLinhaDigitavel = "75691"
			sLinhaDigitavel = sLinhaDigitavel & strNumCooperativa
			sLinhaDigitavel = sLinhaDigitavel & strDV1
			sLinhaDigitavel = sLinhaDigitavel & sModalidade
			sLinhaDigitavel = sLinhaDigitavel & strBeneficiarioCliente
			sLinhaDigitavel = sLinhaDigitavel & Mid(strnossonumero, 1, 1)
			sLinhaDigitavel = sLinhaDigitavel & strDV2
			sLinhaDigitavel = sLinhaDigitavel & Mid(strnossonumero, 2, 8)
			sLinhaDigitavel = sLinhaDigitavel & sParcelaLinha
			sLinhaDigitavel = sLinhaDigitavel & strDV3
			sLinhaDigitavel = sLinhaDigitavel & strDVcodbarras
			sLinhaDigitavel = sLinhaDigitavel & FatorVencimento
			sLinhaDigitavel = sLinhaDigitavel & sValor

			Dim sMontagemCodBarras As String
			Dim sCampoLivre As String

			sCampoLivre = "1"
			sCampoLivre = sCampoLivre & strNumCooperativa
			sCampoLivre = sCampoLivre & "01"
			sCampoLivre = sCampoLivre & strBeneficiarioCliente
			sCampoLivre = sCampoLivre & strnossonumero 'PreparaCampo(strNossoNumeroCB, 0, 8, "0")
			sCampoLivre = sCampoLivre & "001"

			sMontagemCodBarras = "756"
			sMontagemCodBarras = sMontagemCodBarras & "9"
			sMontagemCodBarras = sMontagemCodBarras & "X"
			sMontagemCodBarras = sMontagemCodBarras & FatorVencimento
			sMontagemCodBarras = sMontagemCodBarras & sValor
			sMontagemCodBarras = sMontagemCodBarras & sCampoLivre

			sLinhaDigitavelRetorno = ValidaLinhaDigitavel(sLinhaDigitavel, sMontagemCodBarras)

			ret = strNumCooperativa & sNumCliente & sQtdeParcelas & sModalidade & iTipoFormulario

			strsql = "UPDATE configuracoes SET valor = " & CInt(strnossonumeroDvFinal) + 1 & ", valor_padrao = " & CInt(strnossonumeroDvFinal) + 1 & " WHERE nome = " & "'nosso.numero.banco.faturas.boleto'" '"
			objAtualizaBancoDados.QUERY_NAME = strsql
			repositorioAtualizaBancoDados.Execute(objAtualizaBancoDados)

			fRetornaNossoNumero = PreparaCampo(strnossonumero, 0, 10, "0")

		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: fRetornaNossoNumero" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Function
		End Try

	End Function
	Private Function ValidaLinhaDigitavel(ByVal linhadigitavel As String, ByVal sCodBarras As String) As String

		Dim indice = "2121212120121212121201212121212"
		Dim indiceCodBarra = "43290876543298765432987654329876543298765432"
		Dim digito, soma, mult, contador As Integer
		Dim codigobarra As String
		Dim sParte1Linha As String
		Dim sParte2Linha As String
		Dim sParte3Linha As String
		Dim sParte4Linha As String
		Dim MontaLinhaDigitavel As String
		Dim sDigitoSubstituivel As String = "0"

		Try

			'  //cálculo do primeiro dígito
			soma = 0
			digito = 0
			For contador = 1 To 9
				mult = Mid(linhadigitavel, contador, 1) * Mid(indice, contador, 1)
				If mult >= 10 Then
					soma = soma + Mid(mult, 1, 1) + Mid(mult, 2, 1)
				Else
					soma = soma + mult
				End If
			Next

			digito = Multiplo10(soma) '- soma
			digito = digito - soma

			sParte1Linha = Mid(linhadigitavel, 1, 9) & digito

			'  //cálculo do segundo dígito
			soma = 0
			digito = 0
			For contador = 11 To 20
				mult = Mid(linhadigitavel, contador, 1) * Mid(indice, contador, 1)
				If mult >= 10 Then
					soma = soma + Mid(mult, 1, 1) + Mid(mult, 2, 1)
				Else
					soma = soma + mult
				End If
			Next

			digito = Multiplo10(soma) '– soma;
			digito = digito - soma

			sParte2Linha = Mid(linhadigitavel, 11, 10) & digito


			'  //cálculo do terceiro dígito
			soma = 0
			digito = 0
			For contador = 22 To 31

				mult = Mid(linhadigitavel, contador, 1) * Mid(indice, contador, 1)
				If mult >= 10 Then
					soma = soma + Mid(mult, 1, 1) + Mid(mult, 2, 1)
				Else
					soma = soma + mult
				End If

			Next

			digito = Multiplo10(soma) '– soma;
			digito = digito - soma

			sParte3Linha = Mid(linhadigitavel, 22, 10) & digito
			sParte4Linha = sDigitoSubstituivel & Mid(linhadigitavel, 34, 14)
			'sParte4Linha = Mid(linhadigitavel, 34, 14)

			MontaLinhaDigitavel = sParte1Linha & sParte2Linha & sParte3Linha & sParte4Linha

			Dim resto
			soma = 0
			digito = 0
			For contador = 1 To 44
				If contador <> 5 Then
					mult = Mid(sCodBarras, contador, 1) * Mid(indiceCodBarra, contador, 1)
					soma = soma + mult
				End If
			Next

			digito = 11 - (soma Mod 11)

			If (digito <= 1) Or (digito > 9) Then digito = 1

			sParte4Linha = digito & Mid(linhadigitavel, 34, 14)
			MontaLinhaDigitavel = sParte1Linha & sParte2Linha & sParte3Linha & sParte4Linha
			ValidaLinhaDigitavel = MontaLinhaDigitavel

		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: fRetornaNossoNumero" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Function
		End Try

	End Function

	Private Sub chkporrota_CheckStateChanged(sender As Object, e As EventArgs) Handles chkporrota.CheckStateChanged
		Try

			If Me.chkporrota.CheckState = 1 Then
				LVRota.Enabled = True
				chktodas.Enabled = True
				chkTrans.Enabled = True
				cbProcessar.Enabled = True
				cmdGerar.Enabled = False
			Else
				cbProcessar.Enabled = False
				LVRota.Enabled = False
				chktodas.Enabled = False
				cbProcessar.Enabled = False
				cmdGerar.Enabled = True
				LVRota.Clear()
			End If

		Catch ex As Exception
			MessageBox.Show("Ocorreu o Erro: " & Err.Description & " - Rotina: chkporrota_CheckStateChanged" & "", "Aviso de Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
			Exit Sub
		End Try

	End Sub


	Private Sub GerarArquivoRemessaBoletoCaixaCNAB400_XML()

		'Controle do Filtro da Rota
		Dim lngContZLC As Integer
		Dim lngConta As Integer
		Dim strFiltroZL As String

		'Controle do Arquivo externo
		Dim strArquivo As String = String.Empty
		Dim intARQ As Short = 0
		Dim strLinha As String = String.Empty
		Dim lstrMensagem As String = String.Empty
		Dim strNomeArquivo = "ArquivoRemessaCaixa_" & Today.Day.ToString().PadLeft(2, "0") & Today.Month.ToString().PadLeft(2, "0") & Mid(Today.Year.ToString().PadLeft(2, "0"), 3, 2) & TimeOfDay.Hour.ToString().PadLeft(2, "0") & TimeOfDay.Minute.ToString().PadLeft(2, "0") & TimeOfDay.Second.ToString().PadLeft(2, "0") & ".XML"

		'Controle dos dados na base de dados
		Dim dt As DataTable
		Dim objAtualizaBancoDados As New entidadeAtualizaBancoDados
		Dim repositorioAtualizaBancoDados As New repositorioAtualizaBancoDados

		Dim dTotalValor As Double
		Dim itotalregistros As Integer

		'Header de Remessa
		Dim strCodigoRegistro As String = String.Empty
		Dim strCodigoRemessa As String = String.Empty
		Dim strLiteralRemessa As String = String.Empty
		Dim strCodigoServico As String = String.Empty
		Dim strLiteralServico As String = String.Empty
		Dim strCodigoAgencia As String = String.Empty
		Dim strCodigoBeneficiario As String = String.Empty
		Dim strUsoExclusivo As String = String.Empty
		Dim strNomeEmpresa As String = String.Empty
		Dim strCodigoBanco As String = String.Empty
		Dim strNomeBanco As String = String.Empty
		Dim strDataGeracao As String = String.Empty
		Dim strVersaoLayout As String = String.Empty
		Dim strSequencial As String = String.Empty
		Dim strNumeroSequencial_A As String = String.Empty
		Dim strNumeroSequencial_B As String = String.Empty

		'Detalhe de Remessa
		Dim strCodigoRegistroDetalheRemessa As String = String.Empty
		Dim strTipoInscricao As String = String.Empty
		Dim strNumeroInscricao As String = String.Empty
		Dim strUsoExclusivoCAIXA As String = String.Empty
		Dim strCodigoBeneficiarioDetalheRemessa As String = String.Empty
		Dim strIDEmissao As String = String.Empty
		Dim strIDPostagem As String = String.Empty
		Dim strTaxaPermanencia As String = String.Empty
		Dim strUsoEmpresaBeneficiario As String = String.Empty
		Dim strNossoNumero As String = String.Empty
		Dim strBrancos As String = String.Empty
		Dim strUsolivreBancoEmpresa As String = String.Empty
		Dim strCodigoJuros As String = String.Empty
		Dim strDataJuros As String = String.Empty
		Dim strCodigoDesconto As String = String.Empty
		Dim strBrancosDetalheRemessa As String = String.Empty
		Dim strCarteira As String = String.Empty
		Dim strCodigoOcorrencia As String = String.Empty
		Dim strUsoEmpresaBeneficiarioDetalheRemessa As String = String.Empty
		Dim strVencimento As String = String.Empty
		Dim strValorTitulo As String = String.Empty
		Dim strCodigoBancoDetalheRemessa As String = String.Empty
		Dim strAgenciaCobradora As String = String.Empty
		Dim strEspecieTitulo As String = String.Empty
		Dim strAceite As String = String.Empty
		Dim strDataEmissaoTitulo As String = String.Empty
		Dim strInstrucao_1 As String = String.Empty
		Dim strInstrucao_2 As String = String.Empty
		Dim strJurosMora As String = String.Empty
		Dim strDataDesconto As String = String.Empty
		Dim strValorPercentualDesconto As String = String.Empty
		Dim strValorIOF As String = String.Empty
		Dim strAbatimento As String = String.Empty
		Dim strTipoInscricaoDetalheRemessa As String = String.Empty
		Dim strNumeroInscricaoDetalheRemessa As String = String.Empty
		Dim strNome As String = String.Empty
		Dim strEndereco As String = String.Empty
		Dim strBairro As String = String.Empty
		Dim strCEP As String = String.Empty
		Dim strCidade As String = String.Empty
		Dim strUF As String = String.Empty
		Dim strDataMulta As String = String.Empty
		Dim strValorMulta As String = String.Empty
		Dim strSacadorAvalista As String = String.Empty
		Dim strInstrucao_3 As String = String.Empty
		Dim strPrazo As String = String.Empty
		Dim strCodigoMoeda As String = String.Empty
		Dim lngNumeroSequencial As Long = 0
		Dim strNumeroSequencial As String = String.Empty
		Dim strIdentificacao As String = String.Empty
		Dim strZona As String = String.Empty
		Dim strLivro As String = String.Empty
		Dim strConta As String = String.Empty
		Dim strCodBarra As String = String.Empty
		Dim strDataVc As String = String.Empty
		Dim strNumnf As String = String.Empty


		'Trailer de Remessa
		Dim strCodigoRegistroTrailer As String = String.Empty
		Dim strUsoExclusivoTrailer As String = String.Empty
		Dim strNumeroSequencialTrailer As String = String.Empty

		Try

			lstrMensagem = ""
			'checa e abre o arquivo
			If Len(Trim(txtDir.Text)) = 0 Then
				MsgBox("Diretório de destino não foi informado!", MsgBoxStyle.Information, gstrTituloMensagem)
				txtDir.Focus()
				Exit Sub
			End If
			strArquivo = Trim(txtDir.Text)

			Me.Cursor = System.Windows.Forms.Cursors.WaitCursor

			'If Not IO.Directory.Exists(strArquivo) Then
			'	IO.Directory.CreateDirectory(strArquivo)
			'End If
			'If IO.File.Exists(strArquivo & "\" & strNomeArquivo) Then
			'	IO.File.Delete(strArquivo & "\" & strNomeArquivo)
			'End If

			intARQ = FreeFile()
			'FileOpen(intARQ, strArquivo & "\" & strNomeArquivo, OpenMode.Output)
			FileOpen(intARQ, strArquivo, OpenMode.Output)

			Call sDadosEmpresa(LImagem,
							   sNomeEmpresa,
							   sEnderecoEmpresa,
							   sCepEmpresa,
							   sCidadeEmpresa,
							   sUFempresa,
							   sBairroEmpresa,
							   sFoneEmpresa,
							   sWebEmpresa,
							   scpfCNPF)

			strsql = "SELECT SEQUENCIALBOLETO From bancos Where nrbco = '104' "
			objAtualizaBancoDados.QUERY_NAME = strsql
			dt = repositorioAtualizaBancoDados.Consultar(objAtualizaBancoDados)
			If dt.Rows.Count > 0 Then
				lngSequencial = 0
				For Each row As DataRow In dt.Rows
					strSequencial = IIf(IsDBNull(row.Item("SEQUENCIALBOLETO")), "1", row.Item("SEQUENCIALBOLETO"))
					lngSequencial = IIf(IsDBNull(row.Item("SEQUENCIALBOLETO")), "1", row.Item("SEQUENCIALBOLETO"))
				Next
			Else
				strSequencial = "1"
			End If
			If strSequencial = String.Empty Or strSequencial = "0" Then
				strSequencial = "1"
			End If
			'Descrição de registro tipo ‘0’ (Obrigatório) - Header de Remessa
			'Prepara os dados
			strCodigoRegistro = "0"
			strCodigoRemessa = "1"
			strLiteralRemessa = "REM.TST" 'Alterar esse valor para nulo quando entrar em produção
			strCodigoServico = "01"
			strLiteralServico = "COBRANCA"
			strCodigoAgencia = "4262"
			strCodigoBeneficiario = "1113791"
			strUsoExclusivo = ""
			strNomeEmpresa = sNomeEmpresa
			strCodigoBanco = "104"
			strNomeBanco = "CAIXA ECONOMICA"
			strDataGeracao = VB6.Format(Today, "ddmmyy")
			strVersaoLayout = "007"
			strUsoExclusivo = ""
			strNumeroSequencial_A = strSequencial
			strNumeroSequencial_B = "000001"

			'strLinha = String.Empty
			'strLinha = strCodigoRegistro '01.0  - Código do Registro
			'strLinha = strLinha & strCodigoRemessa '02.0  - Código da Remessa
			'strLinha = strLinha & strLiteralRemessa '03.0  - Literal da Remessa
			'strLinha = strLinha & strCodigoServico '04.0  - Código do Serviço
			'strLinha = strLinha & PreparaCampo(strLiteralServico, 1, 15, " ") '05.0  - Literal de Serviço
			'strLinha = strLinha & strCodigoAgencia '06.0  - Código da Agência
			'strLinha = strLinha & strCodigoBeneficiario '07.0  - Código do Beneficiário
			'strLinha = strLinha & PreparaCampo(strUsoExclusivo, 1, 9, " ") '08.0  - Uso Exclusivo
			'strLinha = strLinha & RetiraAcentuacao(PreparaCampo(strNomeEmpresa, 1, 30, " ")) '09.0  - Nome da Empresa
			'strLinha = strLinha & strCodigoBanco '10.0  - Código do Banco
			'strLinha = strLinha & strNomeBanco '11.0  - Nome do Banco
			'strLinha = strLinha & strDataGeracao '12.0  - Data de Geração
			'strLinha = strLinha & strVersaoLayout '12.0V - Versão do Layout
			'strLinha = strLinha & PreparaCampo(strUsoExclusivo, 1, 286, " ") '13.0  - Uso Exclusivo
			'strLinha = strLinha & PreparaCampo(Str(strNumeroSequencial_A), 0, 5, "0") '14.0  - Nº Sequencial - A
			'strLinha = strLinha & strNumeroSequencial_B '15.0  - Nº Sequencial - B
			''Grava Linha Arquivo externo
			'PrintLine(intARQ, strLinha)

			PrintLine(intARQ, "<?xml version=""1.0"" encoding=""utf-8""?>")
			'PrintLine(intARQ, "<manutencaocobrancabancaria:SERVICO_ENTRADAxmlns:manutencaocobrancabancaria="http: //caixa.gov.br/sibar/manutencao_cobranca_bancaria/boleto/externo" xmlns:sibar_base="http://caixa.gov.br/sibar">")


			strFiltroZL = String.Empty
			strFiltroZL = "AND mid(f.rota,1,4) IN ( "
			For lngConta = 0 To LVRota.Items.Count - 1
				If LVRota.Items.Item(lngConta).Checked = True Then
					strFiltroZL = strFiltroZL & "'" & LVRota.Items.Item(lngConta).Text & "',"
					lngContZLC = lngContZLC + 1
				End If
			Next
			If lngContZLC > 0 Then
				strFiltroZL = VB.Left(strFiltroZL, Len(strFiltroZL) - 1) & ") "
			Else
				strFiltroZL = " "
			End If
			If Len(Trim(Me.txtZona.Text)) > 0 Then
				strFiltroZL = strFiltroZL & "AND f.zona = '" & Me.txtZona.Text & "' "
			End If
			If Len(Trim(Me.txtLivro.Text)) > 0 Then
				strFiltroZL = strFiltroZL & "AND f.livro = '" & Me.txtLivro.Text & "' "
			End If
			If Len(Trim(Me.txtConta.Text)) > 0 Then
				strFiltroZL = strFiltroZL & "AND f.conta = '" & Me.txtConta.Text & "' "
			End If

			strsql = "SELECT "
			strsql = strsql & "Case When LENGTH(c.cpf_cnpj) < 14 Then '01' Else '02' End As strTipoInscricao, "
			strsql = strsql & "c.cpf_cnpj As strNumeroInscricao, "
			strsql = strsql & "ub.zona As strZona, "
			strsql = strsql & "ub.livro As strLivro,"
			strsql = strsql & "ub.conta As strConta, "
			strsql = strsql & "f.datavenc As strDataVc, "
			strsql = strsql & "f.datavenc As strDataJuros, "
			strsql = strsql & "f.datavenc As strVencimento, "
			strsql = strsql & "f.valorliq As strValorTitulo, "
			strsql = strsql & "f.dataem As strDataEmissaoTitulo, "
			strsql = strsql & "f.datavenc As strDataDesconto, "
			strsql = strsql & "f.numnf As strNumnf, "
			strsql = strsql & "c.cpf_cnpj As strNumeroInscricaoDetalheRemessa, "
			strsql = strsql & "c.nome as strNome, "
			strsql = strsql & "c.end as strEndereco, "
			strsql = strsql & "c.bairro as strBairro, "
			strsql = strsql & "c.cep as strCEP, "
			strsql = strsql & "c.cidade as strCidade, "
			strsql = strsql & "c.uf as strUF, "
			strsql = strsql & "f.codbarra as codbarra "
			strsql = strsql & "FROM uc_faturamento ub INNER JOIN " & strTabela & " On(f.unid_id = ub.id) "
			strsql = strsql & "INNER JOIN consum c On(c.consreg = f.cons_id) "
			If sFiltraBancos = "N" Then
				strsql = strsql & "Where 1=1 "
				strsql = strsql & "And f.mesano = '" & txtMesAno.Text & "' "
				strsql = strsql & "And f.flgst = '' "
			Else
				strsql = strsql & "Where 1=1 "
				strsql = strsql & "And f.mesano = '" & txtMesAno.Text & "' "
				strsql = strsql & "And f.banarrec = " & VB6.Format(iintBanID, "000") & " "
				strsql = strsql & "And f.flgst = '' "
			End If
			If VB6.GetItemString(Me.cmbDiaVenc, Me.cmbDiaVenc.SelectedIndex) <> "" Then
				strsql = strsql & "And DAY(f.datavenc) = """ & VB6.Format(VB6.GetItemString(Me.cmbDiaVenc, Me.cmbDiaVenc.SelectedIndex), "00") & """ "
			End If
			If optA.Checked = True Then
				strsql = strsql & "And f.grupo = 'A' "
			ElseIf optB.Checked = True Then
				strsql = strsql & "And f.grupo = 'B' "
			End If
			strsql = strsql & "And Ifnull(c.cpf_cnpj,'') <> '' "
			strsql = strsql & strFiltroZL
			objAtualizaBancoDados.QUERY_NAME = strsql
			dt = repositorioAtualizaBancoDados.Consultar(objAtualizaBancoDados)
			If dt.Rows.Count > 0 Then
				lngNumeroSequencial = 1
				dTotalValor = 0
				pgb.Value = 0
				pgb.Minimum = 0
				pgb.Maximum = dt.Rows.Count
				itotalregistros = dt.Rows.Count
				For Each row As DataRow In dt.Rows

					'Prepara os dados
					lngNumeroSequencial = lngNumeroSequencial + 1
					strCodigoRegistroDetalheRemessa = "1"
					strTipoInscricao = IIf(IsDBNull(row.Item("strTipoInscricao")), "0", row.Item("strTipoInscricao"))
					strNumeroInscricao = IIf(IsDBNull(row.Item("strNumeroInscricao")), "", row.Item("strNumeroInscricao"))
					strNumeroInscricao = Replace(Replace(Replace(Replace(strNumeroInscricao, ".", ""), "/", ""), "-", ""), "\", "")
					strNumeroInscricao = PreparaCampo(strNumeroInscricao, 0, 14, "0")
					strUsoExclusivoCAIXA = "000"
					strCodigoBeneficiarioDetalheRemessa = "1113791"
					strIDEmissao = "2"
					strIDPostagem = "0"
					strTaxaPermanencia = "00"
					strZona = IIf(IsDBNull(row.Item("strZona")), "", row.Item("strZona"))
					strLivro = IIf(IsDBNull(row.Item("strLivro")), "", row.Item("strLivro"))
					strConta = IIf(IsDBNull(row.Item("strConta")), "", row.Item("strConta"))
					strNumnf = IIf(IsDBNull(row.Item("strNumnf")), "", row.Item("strNumnf"))
					strIdentificacao = strNumnf
					strDataVc = VB6.Format(IIf(IsDBNull(row.Item("strDataVc")), "000000", row.Item("strDataVc")), "ddMMyy")
					strDataVc = PreparaCampo(strDataVc, 0, 6, "0")
					strUsoEmpresaBeneficiario = Trim(strIdentificacao & strDataVc)
					strUsoEmpresaBeneficiario = PreparaCampo(strUsoEmpresaBeneficiario, 1, 25, "0")

					strCodBarra = IIf(IsDBNull(row.Item("codbarra")), "", row.Item("codbarra"))
					strNossoNumero = Mid(strCodBarra, 23, 7)
					strNossoNumero = "14" & PreparaCampo(strNossoNumero, 0, 15, "0")

					strBrancos = Space(2)
					strUsolivreBancoEmpresa = "1"
					strCodigoJuros = Space(1) '"5"
					strDataJuros = VB6.Format(IIf(IsDBNull(row.Item("strDataJuros")), "000000", row.Item("strDataJuros")), "ddMMyy")
					strCodigoDesconto = "0"
					strBrancosDetalheRemessa = Space(22)
					strCarteira = "01"
					strCodigoOcorrencia = "01"
					strUsoEmpresaBeneficiarioDetalheRemessa = Trim(strIdentificacao)
					strUsoEmpresaBeneficiarioDetalheRemessa = PreparaCampo(strUsoEmpresaBeneficiarioDetalheRemessa, 1, 10, "0")
					strVencimento = VB6.Format(IIf(IsDBNull(row.Item("strVencimento")), "000000", row.Item("strVencimento")), "ddMMyy")
					strValorTitulo = PreparaCampo(IIf(IsDBNull(row.Item("strValorTitulo")), 0, row.Item("strValorTitulo")), 0, 13, "0")
					strCodigoBancoDetalheRemessa = "104"
					strAgenciaCobradora = "00000"
					strEspecieTitulo = "18"
					strAceite = "A"
					strDataEmissaoTitulo = VB6.Format(IIf(IsDBNull(row.Item("strDataEmissaoTitulo")), "000000", row.Item("strDataEmissaoTitulo")), "ddMMyy")
					strInstrucao_1 = "02"
					strInstrucao_2 = "00"
					strJurosMora = "0000000000000"
					strDataDesconto = "000000" 'VB6.Format(IIf(IsDBNull(row.Item("strDataDesconto")), "000000", row.Item("strDataDesconto")), "ddMMyy")
					strValorPercentualDesconto = "0000000000000"
					strValorIOF = "0000000000000"
					strAbatimento = "0000000000000"
					strTipoInscricaoDetalheRemessa = "01"
					strNumeroInscricaoDetalheRemessa = IIf(IsDBNull(row.Item("strNumeroInscricaoDetalheRemessa")), "", row.Item("strNumeroInscricaoDetalheRemessa"))
					strNumeroInscricaoDetalheRemessa = Replace(Replace(Replace(Replace(strNumeroInscricaoDetalheRemessa, ".", ""), "/", ""), "-", ""), "\", "")
					strNumeroInscricaoDetalheRemessa = PreparaCampo(strNumeroInscricaoDetalheRemessa, 0, 14, "0")
					strNome = IIf(IsDBNull(row.Item("strNome")), "", row.Item("strNome"))
					strNome = PreparaCampo(Mid(strNome, 1, 40), 1, 40, " ")
					strEndereco = IIf(IsDBNull(row.Item("strEndereco")), "", row.Item("strEndereco"))
					strEndereco = PreparaCampo(Mid(strEndereco, 1, 40), 1, 40, " ")
					strBairro = IIf(IsDBNull(row.Item("strBairro")), "", row.Item("strBairro"))
					strBairro = PreparaCampo(Mid(strBairro, 1, 12), 1, 12, " ")
					strCEP = IIf(IsDBNull(row.Item("strCEP")), "", row.Item("strCEP"))
					strCEP = Replace(Trim(strCEP), "-", "")
					If strCEP = String.Empty Then
						strCEP = "00000000"
					End If
					strCidade = IIf(IsDBNull(row.Item("strCidade")), "", row.Item("strCidade"))
					strCidade = PreparaCampo(Mid(strCidade, 1, 15), 1, 15, " ")
					strUF = IIf(IsDBNull(row.Item("strUF")), "", row.Item("strUF"))
					strUF = PreparaCampo(Mid(strUF, 1, 2), 1, 2, " ")
					strDataMulta = "000000" 'Space(6)
					strValorMulta = "0000000000"
					strSacadorAvalista = Space(22)
					strInstrucao_3 = "00"
					strPrazo = "99"
					strCodigoMoeda = "1"
					strNumeroSequencial = PreparaCampo(lngNumeroSequencial, 0, 6, "0")

					'Descrição de registro tipo “1” (Obrigatório) - Dados do título - Detalhe de Remessa
					strLinha = String.Empty
					strLinha = strCodigoRegistroDetalheRemessa '01.1  - Código do Registro
					strLinha = strLinha & strTipoInscricao '02.1  - Tipo Inscrição
					strLinha = strLinha & strNumeroInscricao '03.1  - Número Inscrição
					strLinha = strLinha & strUsoExclusivoCAIXA '04.1  - Uso Exclusivo CAIXA
					strLinha = strLinha & strCodigoBeneficiarioDetalheRemessa '05.1  - Código do Beneficiário
					strLinha = strLinha & strIDEmissao '06.1 - ID Emissão
					strLinha = strLinha & strIDPostagem '07.1  - ID Postagem
					strLinha = strLinha & strTaxaPermanencia '09.1  - Taxa Permanência
					strLinha = strLinha & strUsoEmpresaBeneficiario '10.1  - Uso Empresa Beneficiário
					strLinha = strLinha & strNossoNumero '11.1  - Nosso Número
					strLinha = strLinha & strBrancos '12.1  - Brancos
					strLinha = strLinha & strUsolivreBancoEmpresa '12A.1 - Uso livre banco/empresa
					strLinha = strLinha & strCodigoJuros '13.1  - Código dos juros
					strLinha = strLinha & strDataJuros '13A.1 - Data de Juros
					strLinha = strLinha & strCodigoDesconto '13B.1 - Código do Desconto
					strLinha = strLinha & strBrancosDetalheRemessa '13C.1 - Brancos
					strLinha = strLinha & strCarteira '14.1  - Carteira
					strLinha = strLinha & strCodigoOcorrencia '15.1  - Código Ocorrência
					strLinha = strLinha & strUsoEmpresaBeneficiarioDetalheRemessa '16.1  - Uso Empresa Beneficiário
					strLinha = strLinha & strVencimento '17.1  - Vencimento
					strLinha = strLinha & strValorTitulo '18.1  - Valor do Título
					strLinha = strLinha & strCodigoBancoDetalheRemessa '19.1  - Código do Banco
					strLinha = strLinha & strAgenciaCobradora '20.1  - Agência Cobradora
					strLinha = strLinha & strEspecieTitulo '21.1  - Espécie de Título
					strLinha = strLinha & strAceite '22.1  - Aceite
					strLinha = strLinha & strDataEmissaoTitulo '23.1  - Data Emissão Título
					strLinha = strLinha & strInstrucao_1 '24.1  - Instrução 1
					strLinha = strLinha & strInstrucao_2 '25.1  - Instrução 2
					strLinha = strLinha & strJurosMora '26.1  - Juros Mora
					strLinha = strLinha & strDataDesconto '27.1  - Data do Desconto
					strLinha = strLinha & strValorPercentualDesconto '28.1  - Valor/Percentual do Desconto
					strLinha = strLinha & strValorIOF '29.1  - Valor do IOF
					strLinha = strLinha & strAbatimento '30.1  - Abatimento
					strLinha = strLinha & strTipoInscricaoDetalheRemessa '31.1  - Tipo Inscrição
					strLinha = strLinha & strNumeroInscricaoDetalheRemessa '32.1  - Número Inscrição
					strLinha = strLinha & strNome '33.1  - Nome
					strLinha = strLinha & strEndereco '34.1  - Endereço
					strLinha = strLinha & strBairro '35.1  - Bairro
					strLinha = strLinha & strCEP '36.1  - CEP
					strLinha = strLinha & strCidade '37.1  - Cidade
					strLinha = strLinha & strUF '38.1  - UF
					strLinha = strLinha & strDataMulta '39.1  - Data da Multa
					strLinha = strLinha & strValorMulta '40.1  - Valor da Multa
					strLinha = strLinha & strSacadorAvalista '41.1  - Sacador/Avalista
					strLinha = strLinha & strInstrucao_3 '42.1  - Instrução 3
					strLinha = strLinha & strPrazo '43.1  - Prazo
					strLinha = strLinha & strCodigoMoeda '44.1  - Código da Moeda
					strLinha = strLinha & strNumeroSequencial '45.1  - Número Sequencial
					'Grava Linha Arquivo externo
					PrintLine(intARQ, strLinha)
				Next

				'Prepara os dados
				strCodigoRegistroTrailer = "9"
				strUsoExclusivoTrailer = Space(393)
				strNumeroSequencialTrailer = PreparaCampo(lngNumeroSequencial + 1, 0, 6, "0")

				'Descrição de registro tipo ‘9’ (Obrigatório) – Trailer de Remessa
				strLinha = String.Empty
				strLinha = strCodigoRegistroTrailer '01.9 Código do Registro
				strLinha = strLinha & strUsoExclusivoTrailer '02.9 Uso Exclusivo
				strLinha = strLinha & strNumeroSequencialTrailer '03.9 Nº Sequencial
				'Grava Linha Arquivo externo
				PrintLine(intARQ, strLinha)

				FileClose(intARQ)

				MsgBox("Processo Concluído! Arquivo gerado: " & Trim(strArquivo & "\" & strNomeArquivo), vbInformation, gstrTituloMensagem)

				If sFiltraBancos <> "N" Then
					'Atualiza o sequencial a inserir no arquivo
					strsql = "UPDATE bancos SET sequencialboleto = " & lngSequencial & " " _
					   & "WHERE bancos.ban_id = " & iintBanID
					objAtualizaBancoDados.QUERY_NAME = strsql
					repositorioAtualizaBancoDados.Execute(objAtualizaBancoDados)
				End If
			Else
				MsgBox("Nao foram encontrados registros para sua seleção", vbInformation, gstrTituloMensagem)
				FileClose(intARQ)
			End If

			Me.Cursor = System.Windows.Forms.Cursors.Default

		Catch ex As Exception
			Me.Cursor = System.Windows.Forms.Cursors.Default
		End Try

	End Sub

	Private Sub GerarArquivoRemessaBoletoITAUCNAB400()

		'Controle do Filtro da Rota
		Dim lngContZLC As Integer
		Dim lngConta As Integer
		Dim strFiltroZL As String

		'Controle do Arquivo externo
		Dim strArquivo As String = String.Empty
		Dim intARQ As Short = 0
		Dim strLinha As String = String.Empty
		Dim lstrMensagem As String = String.Empty
		Dim strNomeArquivo = "ArquivoRemessaITAU_" & Today.Day.ToString().PadLeft(2, "0") & Today.Month.ToString().PadLeft(2, "0") & Mid(Today.Year.ToString().PadLeft(2, "0"), 3, 2) & TimeOfDay.Hour.ToString().PadLeft(2, "0") & TimeOfDay.Minute.ToString().PadLeft(2, "0") & TimeOfDay.Second.ToString().PadLeft(2, "0") & ".Rem"

		'Controle dos dados na base de dados
		Dim dt As DataTable
		Dim objAtualizaBancoDados As New entidadeAtualizaBancoDados
		Dim repositorioAtualizaBancoDados As New repositorioAtualizaBancoDados

		Dim dTotalValor As Double
		Dim itotalregistros As Integer

		'Header de Remessa
		Dim strCodigoRegistro As String = String.Empty
		Dim strCodigoRemessa As String = String.Empty
		Dim strLiteralRemessa As String = String.Empty
		Dim strCodigoServico As String = String.Empty
		Dim strLiteralServico As String = String.Empty
		Dim strCodigoAgencia As String = String.Empty
		Dim strCodigoBeneficiario As String = String.Empty
		Dim strUsoExclusivo As String = String.Empty
		Dim strNomeEmpresa As String = String.Empty
		Dim strCodigoBanco As String = String.Empty
		Dim strNomeBanco As String = String.Empty
		Dim strDataGeracao As String = String.Empty
		Dim strVersaoLayout As String = String.Empty
		Dim strSequencial As String = String.Empty
		Dim strNumeroSequencial_A As String = String.Empty
		Dim strNumeroSequencial_B As String = String.Empty

		'Detalhe de Remessa
		Dim strCodigoRegistroDetalheRemessa As String = String.Empty
		Dim strTipoInscricao As String = String.Empty
		Dim strNumeroInscricao As String = String.Empty
		Dim strUsoExclusivoCAIXA As String = String.Empty
		Dim strUsoExclusivoITAU As String = String.Empty
		Dim strCodigoBeneficiarioDetalheRemessa As String = String.Empty
		Dim strIDEmissao As String = String.Empty
		Dim strIDPostagem As String = String.Empty
		Dim strTaxaPermanencia As String = String.Empty
		Dim strUsoEmpresaBeneficiario As String = String.Empty
		Dim strNossoNumero As String = String.Empty
		Dim strBrancos As String = String.Empty
		Dim strUsolivreBancoEmpresa As String = String.Empty
		Dim strCodigoJuros As String = String.Empty
		Dim strDataJuros As String = String.Empty
		Dim strCodigoDesconto As String = String.Empty
		Dim strBrancosDetalheRemessa As String = String.Empty
		Dim strCarteira As String = String.Empty
		Dim strCodCarteira As String = String.Empty
		Dim strCodigoOcorrencia As String = String.Empty
		Dim strUsoEmpresaBeneficiarioDetalheRemessa As String = String.Empty
		Dim strVencimento As String = String.Empty
		Dim strValorTitulo As String = String.Empty
		Dim strCodigoBancoDetalheRemessa As String = String.Empty
		Dim strAgenciaCobradora As String = String.Empty
		Dim strEspecieTitulo As String = String.Empty
		Dim strAceite As String = String.Empty
		Dim strDataEmissaoTitulo As String = String.Empty
		Dim strInstrucao_1 As String = String.Empty
		Dim strInstrucao_2 As String = String.Empty
		Dim strJurosMora As String = String.Empty
		Dim strDataDesconto As String = String.Empty
		Dim strValorPercentualDesconto As String = String.Empty
		Dim strValorIOF As String = String.Empty
		Dim strAbatimento As String = String.Empty
		Dim strTipoInscricaoDetalheRemessa As String = String.Empty
		Dim strNumeroInscricaoDetalheRemessa As String = String.Empty
		Dim strNome As String = String.Empty
		Dim strEndereco As String = String.Empty
		Dim strBairro As String = String.Empty
		Dim strCEP As String = String.Empty
		Dim strCidade As String = String.Empty
		Dim strUF As String = String.Empty
		Dim strDataMulta As String = String.Empty
		Dim strValorMulta As String = String.Empty
		Dim strSacadorAvalista As String = String.Empty
		Dim strInstrucao_3 As String = String.Empty
		Dim strPrazo As String = String.Empty
		Dim strCodigoMoeda As String = String.Empty
		Dim lngNumeroSequencial As Long = 0
		Dim strNumeroSequencial As String = String.Empty
		Dim strIdentificacao As String = String.Empty
		Dim strZona As String = String.Empty
		Dim strLivro As String = String.Empty
		Dim strConta As String = String.Empty
		Dim strCodBarra As String = String.Empty
		Dim strDataVc As String = String.Empty
		Dim strNumnf As String = String.Empty
		Dim strNumeroConta As String = String.Empty
		Dim strDAC As String = String.Empty
		Dim strContaCorrente As String
		Dim strDVContaCorrente As String
		Dim strAlegacao As String
		Dim strUsoBanco As String
		Dim strMoedaReal As String

		Dim strContaCorrenteConsumidor As String = String.Empty
		Dim strAgenciaConsumidor As String = String.Empty
		Dim strDVContaCorrenteConsumidor As String = String.Empty


		'Trailer de Remessa
		Dim strCodigoRegistroTrailer As String = String.Empty
		Dim strUsoExclusivoTrailer As String = String.Empty
		Dim strNumeroSequencialTrailer As String = String.Empty
		Dim iTotaldeCasas As Integer

		Try

			lstrMensagem = ""
			'checa e abre o arquivo
			If Len(Trim(txtDir.Text)) = 0 Then
				MsgBox("Diretório de destino não foi informado!", MsgBoxStyle.Information, gstrTituloMensagem)
				txtDir.Focus()
				Exit Sub
			End If
			strArquivo = Trim(txtDir.Text)

			Me.Cursor = System.Windows.Forms.Cursors.WaitCursor

			'If Not IO.Directory.Exists(strArquivo) Then
			'	IO.Directory.CreateDirectory(strArquivo)
			'End If
			'If IO.File.Exists(strArquivo & "\" & strNomeArquivo) Then
			'	IO.File.Delete(strArquivo & "\" & strNomeArquivo)
			'End If

			intARQ = FreeFile()
			'FileOpen(intARQ, strArquivo & "\" & strNomeArquivo, OpenMode.Output)
			FileOpen(intARQ, strArquivo, OpenMode.Output)

			Call sDadosEmpresa(LImagem,
							   sNomeEmpresa,
							   sEnderecoEmpresa,
							   sCepEmpresa,
							   sCidadeEmpresa,
							   sUFempresa,
							   sBairroEmpresa,
							   sFoneEmpresa,
							   sWebEmpresa,
							   scpfCNPF)

			strsql = "SELECT SEQUENCIALBOLETO From bancos Where ban_id =  " & iintBanID
			objAtualizaBancoDados.QUERY_NAME = strsql
			dt = repositorioAtualizaBancoDados.Consultar(objAtualizaBancoDados)
			If dt.Rows.Count > 0 Then
				lngSequencial = 0
				For Each row As DataRow In dt.Rows
					strSequencial = IIf(IsDBNull(row.Item("SEQUENCIALBOLETO")), "1", row.Item("SEQUENCIALBOLETO"))
					lngSequencial = IIf(IsDBNull(row.Item("SEQUENCIALBOLETO")), "1", row.Item("SEQUENCIALBOLETO"))
				Next
			Else
				strSequencial = "1"
			End If

			If strSequencial = String.Empty Or strSequencial = "0" Then
				strSequencial = "1"
			End If

			lngSequencial = lngSequencial + 1

			'Descrição de registro tipo ‘0’ (Obrigatório) - Header de Remessa
			'Prepara os dados

			strContaCorrente = GetConfig("numero.conta.corrente.itau")
			strContaCorrente = Replace(strContaCorrente, "-", "")
			strDVContaCorrente = VB.Right(strContaCorrente, 1)
			strContaCorrente = Mid(strContaCorrente, 1, Len(strContaCorrente) - 1)

			strCodigoRegistro = "0"
			strCodigoRemessa = "1"
			strLiteralRemessa = "REMESSA" 'Alterar esse valor para nulo quando entrar em produção
			strCodigoServico = "01"
			strLiteralServico = "COBRANCA"
			strCodigoAgencia = Mid(GetConfig("agencia.codbeneficiario.banco.faturas.boleto.itau"), 1, 4)
			strCodigoBeneficiario = Replace(GetConfig("numero.cliente.banco.itau"), "-", "")
			strUsoExclusivo = Space(8)
			strNomeEmpresa = sNomeEmpresa
			strCodigoBanco = "341"
			strNomeBanco = "BANCO ITAU SA"
			strDataGeracao = VB6.Format(Today, "ddMMyy")
			strVersaoLayout = "007"
			strUsoExclusivo = ""
			strNumeroSequencial_A = lngSequencial
			strNumeroSequencial_B = "000001"

			strLinha = String.Empty
			strLinha = strCodigoRegistro '01.0  - Código do Registro
			strLinha = strLinha & strCodigoRemessa '02.0  - Código da Remessa
			strLinha = strLinha & strLiteralRemessa '03.0  - Literal da Remessa
			strLinha = strLinha & strCodigoServico '04.0  - Código do Serviço
			strLinha = strLinha & PreparaCampo(strLiteralServico, 1, 15, " ") '05.0  - Literal de Serviço
			strLinha = strLinha & strCodigoAgencia '06.0  - Código da Agência
			strLinha = strLinha & "00" '07.0  - Código da Agência
			strLinha = strLinha & strContaCorrente '08.0  - Código do Beneficiário
			strLinha = strLinha & strDVContaCorrente '09.0  - Uso Exclusivo
			strLinha = strLinha & Space(8) '10.0  - Uso Exclusivo
			strLinha = strLinha & RetiraAcentuacao(PreparaCampo(strNomeEmpresa, 1, 30, " ")) '11.0  - Nome da Empresa
			strLinha = strLinha & strCodigoBanco '12.0  - Código do Banco
			strLinha = strLinha & PreparaCampo(strNomeBanco, 1, 15, " ") '13.0  - Nome do Banco
			strLinha = strLinha & strDataGeracao '14.0  - Data de Geração
			strLinha = strLinha & Space(294) '15.0  - Uso Exclusivo
			strLinha = strLinha & strNumeroSequencial_B '16.0  - Nº Sequencial - B

			'Grava Linha Arquivo externo
			PrintLine(intARQ, strLinha)

			strFiltroZL = String.Empty
			strFiltroZL = "AND mid(f.rota,1,4) IN ( "
			For lngConta = 0 To LVRota.Items.Count - 1
				If LVRota.Items.Item(lngConta).Checked = True Then
					strFiltroZL = strFiltroZL & "'" & LVRota.Items.Item(lngConta).Text & "',"
					lngContZLC = lngContZLC + 1
				End If
			Next
			If lngContZLC > 0 Then
				strFiltroZL = VB.Left(strFiltroZL, Len(strFiltroZL) - 1) & ") "
			Else
				strFiltroZL = " "
			End If
			If Len(Trim(Me.txtZona.Text)) > 0 Then
				strFiltroZL = strFiltroZL & "AND f.zona = '" & Me.txtZona.Text & "' "
			End If
			If Len(Trim(Me.txtLivro.Text)) > 0 Then
				strFiltroZL = strFiltroZL & "AND f.livro = '" & Me.txtLivro.Text & "' "
			End If
			If Len(Trim(Me.txtConta.Text)) > 0 Then
				strFiltroZL = strFiltroZL & "AND f.conta = '" & Me.txtConta.Text & "' "
			End If

			strsql = "SELECT "
			strsql = strsql & "Case When LENGTH(c.cpf_cnpj) < 14 Then '01' Else '02' End As strTipoInscricao, "
			strsql = strsql & "c.cpf_cnpj As strNumeroInscricao, "
			strsql = strsql & "ub.zona As strZona, "
			strsql = strsql & "ub.livro As strLivro,"
			strsql = strsql & "ub.conta As strConta, "
			strsql = strsql & "ub.agenc As Agencia, "
			strsql = strsql & "ub.cc As ContaCorrente, "
			strsql = strsql & "f.datavenc As strDataVc, "
			strsql = strsql & "f.datavenc As strDataJuros, "
			strsql = strsql & "f.datavenc As strVencimento, "
			strsql = strsql & "f.valorliq As strValorTituloLiquido, "
			strsql = strsql & "f.valortot As strValorTitulo, "
			strsql = strsql & "f.dataem As strDataEmissaoTitulo, "
			strsql = strsql & "f.datavenc As strDataDesconto, "
			strsql = strsql & "f.numnf As strNumnf, "
			strsql = strsql & "c.cpf_cnpj As strNumeroInscricaoDetalheRemessa, "
			strsql = strsql & "c.nome as strNome, "
			strsql = strsql & "c.end as strEndereco, "
			strsql = strsql & "c.bairro as strBairro, "
			strsql = strsql & "c.cep as strCEP, "
			strsql = strsql & "c.cidade as strCidade, "
			strsql = strsql & "c.uf as strUF, "
			strsql = strsql & "f.codbarra as codbarra, f.codbarra_imagem as codbarra_imagem "
			strsql = strsql & "FROM uc_faturamento ub INNER JOIN " & strTabela & " On(f.unid_id = ub.id) "
			strsql = strsql & "INNER JOIN consum c On(c.consreg = f.cons_id) "

			If sFiltraBancos = "N" Then
				strsql = strsql & "Where 1=1 "
				strsql = strsql & "And f.mesano = '" & txtMesAno.Text & "' "
				strsql = strsql & "And f.flgst = '' "
			Else
				strsql = strsql & "Where 1=1 "
				strsql = strsql & "And f.mesano = '" & txtMesAno.Text & "' "
				strsql = strsql & "And f.banarrec = " & VB6.Format(iintBanID, "000") & " "
				strsql = strsql & "And f.flgst = '' "
			End If

			If VB6.GetItemString(Me.cmbDiaVenc, Me.cmbDiaVenc.SelectedIndex) <> "" Then
				strsql = strsql & "And DAY(f.datavenc) = """ & VB6.Format(VB6.GetItemString(Me.cmbDiaVenc, Me.cmbDiaVenc.SelectedIndex), "00") & """ "
			End If

			If optA.Checked = True Then
				strsql = strsql & "And f.grupo = 'A' "
			ElseIf optB.Checked = True Then
				strsql = strsql & "And f.grupo = 'B' "
			End If

			strsql = strsql & "And Ifnull(c.cpf_cnpj,'') <> '' "
			strsql = strsql & "And ub.agenc Is Not NULL And ub.agenc Not IN ('','0') "
			strsql = strsql & "And ub.cc Is Not NULL And ub.cc Not IN ('','0') "

			strsql = strsql & strFiltroZL
			objAtualizaBancoDados.QUERY_NAME = strsql
			dt = repositorioAtualizaBancoDados.Consultar(objAtualizaBancoDados)

			If dt.Rows.Count > 0 Then
				lngNumeroSequencial = 1
				dTotalValor = 0
				pgb.Value = 0
				pgb.Minimum = 0
				pgb.Maximum = dt.Rows.Count
				itotalregistros = dt.Rows.Count

				For Each row As DataRow In dt.Rows

					'Prepara os dados
					lngNumeroSequencial = lngNumeroSequencial + 1

					strCodigoRegistroDetalheRemessa = "1"
					strTipoInscricao = IIf(IsDBNull(row.Item("strTipoInscricao")), "0", row.Item("strTipoInscricao"))
					strNumeroInscricao = IIf(IsDBNull(row.Item("strNumeroInscricao")), "", row.Item("strNumeroInscricao"))
					strNumeroInscricao = Replace(Replace(Replace(Replace(strNumeroInscricao, ".", ""), "/", ""), "-", ""), "\", "")
					strNumeroInscricao = PreparaCampo(strNumeroInscricao, 0, 14, "0")
					strUsoExclusivoCAIXA = "000"
					strUsoExclusivoITAU = "00"
					strCodigoBeneficiarioDetalheRemessa = Replace(GetConfig("numero.cliente.banco.sigcb"), "-", "") '"1113791"
					strIDEmissao = "2"
					strIDPostagem = "0"
					strTaxaPermanencia = "00"
					strZona = IIf(IsDBNull(row.Item("strZona")), "", row.Item("strZona"))
					strLivro = IIf(IsDBNull(row.Item("strLivro")), "", row.Item("strLivro"))
					strConta = IIf(IsDBNull(row.Item("strConta")), "", row.Item("strConta"))
					strNumnf = IIf(IsDBNull(row.Item("strNumnf")), "", row.Item("strNumnf"))
					strIdentificacao = strNumnf
					strDataVc = VB6.Format(IIf(IsDBNull(row.Item("strDataVc")), "000000", row.Item("strDataVc")), "ddMMyy")
					strMoedaReal = "0000000000000"
					strCodCarteira = "I"

					iTotaldeCasas = 25 - Len(strIdentificacao)
					strUsoEmpresaBeneficiario = PreparaCampo("", 1, iTotaldeCasas, "0") & Trim(strIdentificacao)

					iTotaldeCasas = 10 - Len(strIdentificacao)
					strUsoEmpresaBeneficiarioDetalheRemessa = PreparaCampo("", 1, iTotaldeCasas, "0") & Trim(strIdentificacao)

					strAlegacao = "0000"
					strContaCorrenteConsumidor = IIf(IsDBNull(row.Item("ContaCorrente")), "", Replace(row.Item("ContaCorrente"), "-", ""))
					strContaCorrenteConsumidor = PreparaCampo(strContaCorrenteConsumidor, 1, 5, " ")
					strDVContaCorrenteConsumidor = IIf(IsDBNull(row.Item("ContaCorrente")), "", row.Item("ContaCorrente"))
					strDVContaCorrenteConsumidor = VB.Right(strDVContaCorrenteConsumidor, 1)
					strAgenciaConsumidor = IIf(IsDBNull(row.Item("Agencia")), "", Replace(row.Item("Agencia"), "-", ""))
					strAgenciaConsumidor = PreparaCampo(strAgenciaConsumidor, 1, 4, " ")

					strCodBarra = IIf(IsDBNull(row.Item("codbarra_imagem")), "", row.Item("codbarra_imagem"))
					strNossoNumero = Mid(strCodBarra, 23, 8)
					strNossoNumero = PreparaCampo(strNossoNumero, 0, 8, "0")

					strBrancos = Space(2)
					strUsolivreBancoEmpresa = "1"
					strCodigoJuros = Space(1)
					strDataJuros = VB6.Format(IIf(IsDBNull(row.Item("strDataJuros")), "000000", row.Item("strDataJuros")), "ddMMyy")
					strCodigoDesconto = "0"
					strBrancosDetalheRemessa = Space(22)
					strCarteira = "109"
					strCodigoOcorrencia = "01"
					strVencimento = VB6.Format(IIf(IsDBNull(row.Item("strVencimento")), "000000", row.Item("strVencimento")), "ddMMyy")
					Dim dvalortit As Double

					'dvalortit = IIf(IsDBNull(row.Item("strValorTitulo")), 0, row.Item("strValorTitulo"))
					'strValorTitulo = Replace(dvalortit, ".", ",")

					strValorTitulo = PreparaCampo(IIf(IsDBNull(row.Item("strValorTituloLiquido")), 0, row.Item("strValorTituloLiquido")), 0, 13, "0")
					strCodigoBancoDetalheRemessa = "341"
					strAgenciaCobradora = "00000"
					strEspecieTitulo = "08" ' Duplicada de Serviço
					strAceite = "A"
					strDataEmissaoTitulo = VB6.Format(IIf(IsDBNull(row.Item("strDataEmissaoTitulo")), "000000", row.Item("strDataEmissaoTitulo")), "ddMMyy")
					strInstrucao_1 = "10"
					strInstrucao_2 = "10"
					strJurosMora = "0000000000000"
					strDataDesconto = "000000" 'VB6.Format(IIf(IsDBNull(row.Item("strDataDesconto")), "000000", row.Item("strDataDesconto")), "ddMMyy")
					strValorPercentualDesconto = "0000000000000"
					strValorIOF = "0000000000000"
					strAbatimento = "0000000000000"
					strNumeroInscricaoDetalheRemessa = IIf(IsDBNull(row.Item("strNumeroInscricaoDetalheRemessa")), "", row.Item("strNumeroInscricaoDetalheRemessa"))
					strNumeroInscricaoDetalheRemessa = Replace(Replace(Replace(Replace(strNumeroInscricaoDetalheRemessa, ".", ""), "/", ""), "-", ""), "\", "")
					strTipoInscricaoDetalheRemessa = IIf(Len(strNumeroInscricaoDetalheRemessa) < 14, "01", "02")
					strNumeroInscricaoDetalheRemessa = PreparaCampo(strNumeroInscricaoDetalheRemessa, 0, 14, "0")
					strNome = IIf(IsDBNull(row.Item("strNome")), "", row.Item("strNome"))
					strNome = PreparaCampo(Mid(strNome, 1, 30), 1, 30, " ")
					strEndereco = IIf(IsDBNull(row.Item("strEndereco")), "", row.Item("strEndereco"))
					strEndereco = PreparaCampo(Mid(strEndereco, 1, 40), 1, 40, " ")
					strBairro = IIf(IsDBNull(row.Item("strBairro")), "", row.Item("strBairro"))
					strBairro = PreparaCampo(Mid(strBairro, 1, 12), 1, 12, " ")
					strCEP = IIf(IsDBNull(row.Item("strCEP")), "", row.Item("strCEP"))
					strCEP = Replace(Trim(strCEP), "-", "")
					If strCEP = String.Empty Then
						strCEP = "00000000"
					End If
					strCidade = IIf(IsDBNull(row.Item("strCidade")), "", row.Item("strCidade"))
					strCidade = PreparaCampo(Mid(strCidade, 1, 15), 1, 15, " ")
					strUF = IIf(IsDBNull(row.Item("strUF")), "", row.Item("strUF"))
					strUF = PreparaCampo(Mid(strUF, 1, 2), 1, 2, " ")
					strDataMulta = "000000"
					strValorMulta = "0000000000"
					strSacadorAvalista = Space(30)
					strInstrucao_3 = "00"
					strPrazo = "99"
					strCodigoMoeda = "1"
					strNumeroSequencial = PreparaCampo(lngNumeroSequencial, 0, 6, "0")
					strUsoBanco = Space(21)

					Dim totalLinha As Integer


					'Descrição de registro tipo “1” (Obrigatório) - Dados do título - Detalhe de Remessa
					strLinha = String.Empty
					strLinha = strCodigoRegistroDetalheRemessa '01.1  - Código do Registro
					strLinha = strLinha & strTipoInscricao '02.1  - Tipo Inscrição
					strLinha = strLinha & strNumeroInscricao '03.1  - Número Inscrição
					strLinha = strLinha & strCodigoAgencia '04.1  - Agência
					strLinha = strLinha & strUsoExclusivoITAU '05.1  - Zeros
					strLinha = strLinha & strContaCorrente '06.1  - Conta Corrente
					strLinha = strLinha & strDVContaCorrente '07.1  - Digito da Conta Corrente
					strLinha = strLinha & Space(4) '08.1  - Brancos
					strLinha = strLinha & strAlegacao '09.1  - Alegação
					strLinha = strLinha & strUsoEmpresaBeneficiario '10.1  - Uso Empresa
					strLinha = strLinha & strNossoNumero '11.1  - Nosso Número
					strLinha = strLinha & strMoedaReal '12.1  - Quantidade Moeda
					strLinha = strLinha & strCarteira '13.1  - Número Carteira
					strLinha = strLinha & strUsoBanco '14.1  - Uso Banco
					strLinha = strLinha & strCodCarteira '15.1  - Número Inscrição
					strLinha = strLinha & strCodigoOcorrencia '16.1  - Código da Carteira
					strLinha = strLinha & strUsoEmpresaBeneficiarioDetalheRemessa '17.1  - Número da Nota
					strLinha = strLinha & strVencimento '18.1  - Vencimento
					strLinha = strLinha & strValorTitulo '19.1  - Valor do título
					strLinha = strLinha & strCodigoBancoDetalheRemessa '20.1  - Número Inscrição
					strLinha = strLinha & strAgenciaCobradora '21.1  - Número Inscrição
					strLinha = strLinha & strEspecieTitulo '22.1  - Número Inscrição
					strLinha = strLinha & strAceite '23.1  - Número Inscrição
					strLinha = strLinha & strDataEmissaoTitulo '24.1  - Número Inscrição
					strLinha = strLinha & strInstrucao_1 '25.1  - Instrução 1
					strLinha = strLinha & strInstrucao_2 '26.1  - Instrução 2
					strLinha = strLinha & strJurosMora '27.1  - Juros Mora
					strLinha = strLinha & strDataDesconto '28.1  - Data do Desconto
					strLinha = strLinha & strValorPercentualDesconto '29.1  - Valor/Percentual do Desconto
					strLinha = strLinha & strValorIOF '30.1  - Valor do IOF
					strLinha = strLinha & strAbatimento '31.1  - Abatimento
					strLinha = strLinha & strTipoInscricaoDetalheRemessa '32.1  - Tipo Inscrição
					strLinha = strLinha & strNumeroInscricaoDetalheRemessa '33.1  - Número Inscrição
					strLinha = strLinha & strNome '34.1  - Nome
					strLinha = strLinha & Space(10) '35.1  - Nome
					strLinha = strLinha & strEndereco '36.1  - Endereço
					strLinha = strLinha & strBairro '37.1  - Bairro
					strLinha = strLinha & strCEP '38.1  - CEP
					strLinha = strLinha & strCidade '39.1  - Cidade
					strLinha = strLinha & strUF '40.1  - UF
					strLinha = strLinha & strSacadorAvalista '41.1  - Sacador/Avalista
					strLinha = strLinha & Space(4) '42.1  - Número Inscrição
					strLinha = strLinha & strDataMulta '43.1  - Data da Multa
					strLinha = strLinha & strPrazo '44.1  - Prazo
					strLinha = strLinha & Space(1) '45.1  - Número Inscrição
					strLinha = strLinha & strNumeroSequencial '46.1  - Número Sequencial

					'Grava Linha Arquivo externo
					PrintLine(intARQ, strLinha)
				Next

				'Prepara os dados
				strCodigoRegistroTrailer = "9"
				strUsoExclusivoTrailer = Space(393)
				strNumeroSequencialTrailer = PreparaCampo(lngNumeroSequencial + 1, 0, 6, "0")

				'Descrição de registro tipo ‘9’ (Obrigatório) – Trailer de Remessa
				strLinha = String.Empty
				strLinha = strCodigoRegistroTrailer '01.9 Código do Registro
				strLinha = strLinha & strUsoExclusivoTrailer '02.9 Uso Exclusivo
				strLinha = strLinha & strNumeroSequencialTrailer '03.9 Nº Sequencial
				'Grava Linha Arquivo externo
				PrintLine(intARQ, strLinha)

				FileClose(intARQ)

				MsgBox("Processo Concluído! Arquivo gerado: " & Trim(strArquivo & "\" & strNomeArquivo), vbInformation, gstrTituloMensagem)

				If sFiltraBancos <> "N" Then
					'Atualiza o sequencial a inserir no arquivo
					strsql = "UPDATE bancos SET sequencialboleto = " & lngSequencial & " " _
					   & "WHERE bancos.ban_id = " & iintBanID
					objAtualizaBancoDados.QUERY_NAME = strsql
					repositorioAtualizaBancoDados.Execute(objAtualizaBancoDados)
				End If
			Else
				MsgBox("Nao foram encontrados registros para sua seleção", vbInformation, gstrTituloMensagem)
				FileClose(intARQ)
			End If

			Me.Cursor = System.Windows.Forms.Cursors.Default

		Catch ex As Exception
			Me.Cursor = System.Windows.Forms.Cursors.Default
		End Try

	End Sub

End Class