Option Strict Off
Option Explicit On
Imports VB = Microsoft.VisualBasic
Friend Class frmRecArqNovo
	Inherits System.Windows.Forms.Form
	Private ilngBanId As Integer
	Private iintTtLin As Short
	
	Private Sub cmdAnalisar_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdAnalisar.Click
		Dim lintNrArq As Short 'Controle do número do arquivo aberto
		Dim lstrLinha As String 'Controle da informação da linha no arquivo
		Dim lstrRegTp As String 'Tipo do registro da linha no arquivo
		'Reg A
		Dim lintCdRem As Short 'Código da Remessa (1 envio e 2 retorno)
		Dim lstrCdCvn As String 'Código do convênio no banco
		Dim lstrNmEmp As String 'Nome da empresa no banco
		Dim lstrNrBco As String 'Número do banco no brasil
		Dim lstrNmBco As String 'Nome do banco
		Dim lstrNrAge As String 'Número da agencia do banco
		Dim lstrDtGer As String 'Data da geração do arquivo
		Dim lstrSeque As String 'Sequencia da geração
		Dim lstrVerLa As String 'Verão do Layout
		Dim lstrIdent As String 'Identificador do arquivo
		Dim lstrBranc As String 'Brancos
		'Reg B
		Dim lstrIdCli As String
		Dim lstrAgenc As String
		Dim lstrCCorr As String
		Dim lstrDtOpc As String
		Dim lstrCdMov As String
		
		Dim lstrTeste As String
		
		
		
		On Error GoTo ErroArquivo
		
		If iintTtLin > 0 Then
			Call BarraProgresso((Me.ProgressBar), (Me.lblPerc), (Me.lblInfo), 0, CInt(iintTtLin))
			'Abre arquivo externo
			lintNrArq = FreeFile 'Aloca um número livre para abrir o arquivo
			FileOpen(lintNrArq, Me.txtArquivo.Text, OpenMode.Input) 'abre o arquivo externo
			While Not EOF(lintNrArq)
				lstrLinha = LineInput(lintNrArq)
				lstrLinha = Trim(lstrLinha)
				lstrRegTp = Mid(lstrLinha, 1, 1) 'Tipo do Registro
				Select Case lstrRegTp
					Case "A" 'Header
						lintCdRem = CShort(Mid(lstrLinha, 2, 1)) 'Posição 002 a 002 Tamanho 001 Código da remessa
						lstrCdCvn = Mid(lstrLinha, 3, 20) 'Posição 003 a 022 Tamanho 020 Código da empresa
						lstrNmEmp = Mid(lstrLinha, 23, 20) 'Posição 023 a 042 Tamanho 020 Nome da empresa
						lstrNrBco = Mid(lstrLinha, 43, 3) 'Posição 043 a 045 Tamanho 003 Codigo do banco
						lstrNmBco = Mid(lstrLinha, 46, 20) 'Posição 046 a 065 Tamanho 020 Nome do banco
						lstrDtGer = Mid(lstrLinha, 66, 8) 'Posição 066 a 073 Tamanho 008 Data da geração
						lstrSeque = Mid(lstrLinha, 74, 6) 'Posição 074 a 079 Tamanho 006 Sequencial do arquivo
						lstrVerLa = Mid(lstrLinha, 80, 2) 'Posição 080 a 081 Tamanho 002 Versão do Layout Valor 04
						lstrIdent = Mid(lstrLinha, 82, 17) 'Posição 082 a 098 Tamanho 017 DÉBITO AUTOMÁTICO
						lstrBranc = Mid(lstrLinha, 99, 52) 'Posição 099 a 150 Tamanho 052 Brancos
					Case "B" 'Cadastro de débito Banco -> Empresa
						lstrIdCli = Mid(lstrLinha, 2, 25) 'Posição 002 a 026 Tamanho 025 Identificação do cliente na empresa
						lstrAgenc = Mid(lstrLinha, 27, 4) 'Posição 027 a 030 Tamanho 004 Agência para débito
						lstrCCorr = Mid(lstrLinha, 31, 14) 'Posição 031 a 044 Tamanho 014 Conta Corrente
						lstrDtOpc = Mid(lstrLinha, 45, 8) 'Posição 045 a 052 Tamanho 008 Data da Inclusão ou Exclusão
						lstrBranc = Mid(lstrLinha, 53, 97) 'Posição 053 a 149 Tamanho 097 Brancos
						lstrCdMov = Mid(lstrLinha, 150, 1) 'Posição 150 a 150 Tamanho 001 Código do Movimento 1 = Exclusão, 2 = Inclusão
						
						With Me.mfgRegB
							.Rows = .Rows + 1
							.set_TextMatrix(.Rows - 1, 0, lstrIdCli)
							.set_TextMatrix(.Rows - 1, 1, lstrAgenc)
							.set_TextMatrix(.Rows - 1, 2, lstrCCorr)
							.set_TextMatrix(.Rows - 1, 3, lstrDtOpc)
							.set_TextMatrix(.Rows - 1, 4, lstrCdMov)
							
						End With
					Case "C" 'Envio do Retorno do Registro B Ocorrencia no cadastramento do Débito Empresa -> Banco
					Case "D" 'Envio Alteração da Identificação do Cliente Empresa -> Banco
					Case "E" 'Envio do Débito em Conta Empresa -> Banco
					Case "F" 'Retorno do Débito em Conta Banco -> Empresa
						lstrTeste = "entrei"
					Case "G" 'Retorno do recebimento direto Banco -> Empresa
					Case "H" 'Retorno do registro D Ocorrencia da alteração da Identificação do Cliente na empresa Banco -> Empresa
					Case "Z" 'Trailler"
						lstrTeste = "entrei"
				End Select
				Call BarraProgresso((Me.ProgressBar), (Me.lblPerc), (Me.lblInfo), 1)
			End While
			FileClose(lintNrArq)
		Else
			Call MsgBox("Este arquivo não possue nenhuma informação", MsgBoxStyle.Information, gstrTituloMensagem)
		End If
ErroArquivo: 
		If Err.Number <> 0 Then
			Call MsgBox("Erro ao abrir o arquivo!", MsgBoxStyle.Exclamation, gstrTituloMensagem)
		End If
	End Sub
	
	Private Sub ProcessaRegB()
		'Rotina para verificar os reg B e transformar em reg D
		Dim lstrIdCli As String
		Dim llngLinha As Integer
		Dim lintTaman As Short
		Dim lstrZona As String
		Dim lstrLivro As String
		Dim lstrConta As String
		
		With Me.mfgRegB
			For llngLinha = 1 To .Rows - 1
				lstrIdCli = Replace(Replace(Replace(Replace(Replace(.get_TextMatrix(llngLinha, 0), " ", ""), "/", ""), ".", ""), "-", ""), "_", "")
				lintTaman = Len(lstrIdCli)
				lstrConta = VB.Right(lstrIdCli, 4)
				lstrLivro = VB.Left(VB.Right(lstrIdCli, 6), 2)
			Next llngLinha
		End With
	End Sub
	
	Private Sub cmdBuscaArq_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdBuscaArq.Click
		'UPGRADE_WARNING: CommonDialog variable was not upgraded Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="671167DC-EA81-475D-B690-7A40C7BF4A23"'
		With Me.cdgArquivo
			.Title = Me.Text
			Call .ShowDialog()
			Me.txtArquivo.Text = .FileName
		End With
		Call VerificaBancoArq()
	End Sub
	
	Private Sub frmRecArqNovo_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
		Dim lintIndex As Short
		
		'Pega o Icone da Principal
		Me.Icon = FrmAtPrincipal.Icon
		'Redimensiona a tela de acordo com o tamanho da tela principal
		Call Me.SetBounds(VB6.TwipsToPixelsX(100), 0, VB6.TwipsToPixelsX(VB6.PixelsToTwipsX(FrmAtPrincipal.ClientRectangle.Width) - 500), VB6.TwipsToPixelsY(VB6.PixelsToTwipsY(Me.ClientRectangle.Height) + 100))
		'Alinha os frame para direita de acordo com o tamanho da janela definida acima
		For lintIndex = 0 To 4
			Call Me.fmeAux(lintIndex).SetBounds(VB6.TwipsToPixelsX((VB6.PixelsToTwipsX(Me.Width) - 200) - VB6.PixelsToTwipsX(Me.fmeAux(lintIndex).Width)), 0, 0, 0, Windows.Forms.BoundsSpecified.X)
		Next lintIndex
		'Redimensiona as grid dos dados de acordo com a janela
		With Me.mfgDados
			.Redraw = False
			Call .SetBounds(Me.Left, .Top, VB6.TwipsToPixelsX((VB6.PixelsToTwipsX(Me.Width) - 400) - VB6.PixelsToTwipsX(Me.fmeAux(0).Width)), .Height)
			.Redraw = True
			Me.txtArquivo.Width = VB6.TwipsToPixelsX(VB6.PixelsToTwipsX(.Width) - VB6.PixelsToTwipsX(Me.cmdAnalisar.Width) - VB6.PixelsToTwipsX(Me.cmdBuscaArq.Width) - VB6.PixelsToTwipsX(Me.cmdProcessar.Width) - VB6.PixelsToTwipsX(Me.lblAux(3).Width))
			Me.txtBanco.Width = VB6.TwipsToPixelsX(VB6.PixelsToTwipsX(.Width) - VB6.PixelsToTwipsX(Me.cmdAnalisar.Width) - VB6.PixelsToTwipsX(Me.cmdBuscaArq.Width) - VB6.PixelsToTwipsX(Me.cmdProcessar.Width) - VB6.PixelsToTwipsX(Me.lblAux(4).Width))
		End With
		With Me.mfgRegB
			Call .SetBounds(Me.Left, .Top, VB6.TwipsToPixelsX((VB6.PixelsToTwipsX(Me.Width) - 400) - VB6.PixelsToTwipsX(Me.fmeAux(0).Width)), .Height)
		End With
		With Me.mfgRegH
			Call .SetBounds(Me.Left, .Top, VB6.TwipsToPixelsX((VB6.PixelsToTwipsX(Me.Width) - 400) - VB6.PixelsToTwipsX(Me.fmeAux(0).Width)), .Height)
		End With
		
		Call MontaGrid()
	End Sub
	
	Private Sub MontaGrid()
		With Me.mfgDados
			.Redraw = False
			.FocusRect = MSFlexGridLib.FocusRectSettings.flexFocusNone
			.HighLight = MSFlexGridLib.HighLightSettings.flexHighlightNever
			.Cols = 18
			.Rows = 1
			.HighLight = MSFlexGridLib.HighLightSettings.flexHighlightAlways
			.SelectionMode = MSFlexGridLib.SelectionModeSettings.flexSelectionFree
			Call .Clear()
			'Referencia
			.set_TextMatrix(0, 0, "Avisos")
			.set_TextMatrix(0, 1, "Zona")
			.set_TextMatrix(0, 2, "Livro")
			.set_TextMatrix(0, 3, "Conta")
			.set_TextMatrix(0, 4, "Número N.F.")
			.set_TextMatrix(0, 5, "Mês/Ano")
			.set_ColWidth(0, 1300)
			.set_ColWidth(1, 500)
			.set_ColWidth(2, 500)
			.set_ColWidth(3, 700)
			.set_ColWidth(4, 1000)
			.set_ColWidth(5, 800)
			'Datas
			.set_TextMatrix(0, 6, "Pagto/Déb.")
			.set_TextMatrix(0, 7, "Crédito")
			.set_TextMatrix(0, 8, "Vecto")
			.set_ColWidth(6, 1000)
			.set_ColWidth(7, .get_ColWidth(6))
			.set_ColWidth(8, .get_ColWidth(6))
			'Valor
			.set_TextMatrix(0, 9, "a Receber")
			.set_TextMatrix(0, 10, "Pago/Deb.")
			.set_TextMatrix(0, 11, "Tarifa")
			.set_ColWidth(9, 1100)
			.set_ColWidth(10, .get_ColWidth(9))
			.set_ColWidth(11, 800)
			'Informação
			.set_TextMatrix(0, 12, "Banco")
			.set_TextMatrix(0, 13, "Agência")
			.set_TextMatrix(0, 14, "Resultado da Arrecadação")
			.set_TextMatrix(0, 15, "Movimento")
			.set_TextMatrix(0, 16, "Cod UC")
			.set_TextMatrix(0, 17, "Grupo")
			.set_ColWidth(12, 550)
			.set_ColWidth(13, 650)
			.set_ColWidth(14, 8550)
			.set_ColWidth(15, 1000)
			.set_ColWidth(16, 0)
			.set_ColWidth(17, 0)
			.Redraw = True
		End With
		With Me.mfgRegB
			.Redraw = False
			.Cols = 6
			.Rows = 1
			Call .Clear()
			.set_TextMatrix(0, 0, "Identificador")
			.set_TextMatrix(0, 1, "Agência")
			.set_TextMatrix(0, 2, "Conta Corrente")
			.set_TextMatrix(0, 3, "Data")
			.set_TextMatrix(0, 4, "Motivo")
			.set_TextMatrix(0, 5, "Mensagem")
			.set_ColWidth(0, 2000)
			.set_ColWidth(1, 1000)
			.set_ColWidth(2, 1000)
			.set_ColWidth(3, 1000)
			.set_ColWidth(4, 1000)
			.set_ColWidth(5, 1000)
			.Redraw = True
		End With
	End Sub
	
	Private Function DebitoCodDescri(ByVal astrCodigo As String) As String
		Select Case astrCodigo
			Case "00"
				DebitoCodDescri = "Débito efetuado"
			Case "01"
				DebitoCodDescri = "Débito não efetuado - Insuficiência de fundos"
			Case "02"
				DebitoCodDescri = "Débito não efetuado - Conta corrente não cadastrada"
			Case "04"
				DebitoCodDescri = "Débito não efetuado - Outras restrições"
			Case "05"
				DebitoCodDescri = "Débito não efetuado - Valor excedente"
			Case "10"
				DebitoCodDescri = "Débito não efetuado - Agência em encerramento"
			Case "12"
				DebitoCodDescri = "Débito não efetuado - Valor inválido"
			Case "13"
				DebitoCodDescri = "Débito não efetuado - Data de lançamento inválida"
			Case "14"
				DebitoCodDescri = "Débito não efetuado - Agência inválida"
			Case "15"
				DebitoCodDescri = "Débito não efetuado - Conta corrente inválida"
			Case "18"
				DebitoCodDescri = "Débito não efetuado - Data do débito anterior à do processamento"
			Case "30"
				DebitoCodDescri = "Débito não efetuado - Sem contrato de débito automático"
			Case "31"
				DebitoCodDescri = "Débito efetuado em data diferente da data informada - feriado na praça de débito"
			Case "96"
				DebitoCodDescri = "Manutenção no cadastro"
			Case "97"
				DebitoCodDescri = "Cancelamento - Não encontrado"
			Case "98"
				DebitoCodDescri = "Cancelamento - Não efetuado, fora de tempo hábil"
			Case "99"
				DebitoCodDescri = "Cancelamento - Cancelado conforme solicitação"
			Case Else
				DebitoCodDescri = ""
		End Select
	End Function
	
	Private Function DiretoCodDescri(ByVal astrCodigo As String) As String
		Select Case astrCodigo
			Case "1"
				DiretoCodDescri = "Guichê de Caixa com fatura/guia de arrecadação"
			Case "2"
				DiretoCodDescri = "Arrecadação Eletrônica com fatura/guia de arrecadação (terminais de auto - atendimento, ATM, home/office banking)"
			Case "3"
				DiretoCodDescri = "Internet com fatura/guia de arrecadação"
			Case "4"
				DiretoCodDescri = "Outros meios com fatura/guia de arrecadação"
			Case "5"
				DiretoCodDescri = "Casas lotéricas/correspondentes bancários com fatura/guia de arrecadação"
			Case "6"
				DiretoCodDescri = "Telefone com fatura/guia de arrecadação"
			Case "a"
				DiretoCodDescri = "Guichê de Caixa sem fatura/guia de arrecadação"
			Case "b"
				DiretoCodDescri = "Arrecadação Eletrônica sem fatura/guia de arrecadação (terminais de auto - atendimento, ATM, home/office banking)"
			Case "c"
				DiretoCodDescri = "Internet sem fatura/guia de arrecadação"
			Case "d"
				DiretoCodDescri = "Casas lotéricas/correspondentes bancários sem fatura/guia de arrecadação"
			Case "e"
				DiretoCodDescri = "Telefone sem fatura/guia de arrecadação"
			Case "f"
				DiretoCodDescri = "Outros meios sem fatura/guia de arrecadação"
			Case Else
				DiretoCodDescri = ""
		End Select
	End Function
	
	Private Sub VerificaBancoArq()
		Dim lintNrArq As Short 'Controle do número do arquivo aberto
		Dim lstrLinha As String 'Controle da informação da linha no arquivo
		Dim lstrRegTp As String 'Tipo do registro da linha no arquivo
		Dim lintCdRem As Short 'Código da Remessa (1 envio e 2 retorno)
		Dim lstrCdCvn As String 'Código do convênio no banco
		Dim lstrNmEmp As String 'Nome da empresa no banco
		Dim lstrNrBco As String 'Número do banco no brasil
		Dim lstrNmBco As String 'Nome do banco
		Dim lstrNrAge As String 'Número da agencia do banco
		Dim lstrDtGer As String 'Data da geração do arquivo
		Dim lstrSeque As String 'Sequencia da geração
		Dim lstrVerLa As String 'Verão do Layout
		Dim lstrIdent As String 'Identificador do arquivo
		Dim lstrBranc As String 'Brancos
		Dim lstrTpMov As String
		Dim lstrRetor As String
		Dim lstrSql As String
		Dim lrstBancos As ADODB.Recordset
		lrstBancos = New ADODB.Recordset
		lintNrArq = FreeFile 'Aloca um número livre para abrir o arquivo
		FileOpen(lintNrArq, Me.txtArquivo.Text, OpenMode.Input) 'abre o arquivo externo
		iintTtLin = 0
		While Not EOF(lintNrArq)
			lstrLinha = LineInput(lintNrArq)
			iintTtLin = iintTtLin + 1
			lstrLinha = Trim(lstrLinha)
			lstrRegTp = Mid(lstrLinha, 1, 1) 'Tipo do Registro
			Select Case lstrRegTp
				Case "A" 'Header
					lintCdRem = CShort(Mid(lstrLinha, 2, 1)) 'Posição 002 a 002 Tamanho 001 Código da remessa
					lstrCdCvn = Mid(lstrLinha, 3, 20) 'Posição 003 a 022 Tamanho 020 Código da empresa
					lstrNmEmp = Mid(lstrLinha, 23, 20) 'Posição 023 a 042 Tamanho 020 Nome da empresa
					lstrNrBco = Mid(lstrLinha, 43, 3) 'Posição 043 a 045 Tamanho 003 Codigo do banco
					lstrNmBco = Mid(lstrLinha, 46, 20) 'Posição 046 a 065 Tamanho 020 Nome do banco
					lstrDtGer = Mid(lstrLinha, 66, 8) 'Posição 066 a 073 Tamanho 008 Data da geração
					lstrSeque = Mid(lstrLinha, 74, 6) 'Posição 074 a 079 Tamanho 006 Sequencial do arquivo
					lstrVerLa = Mid(lstrLinha, 80, 2) 'Posição 080 a 081 Tamanho 002 Versão do Layout Valor 04
					lstrIdent = Mid(lstrLinha, 82, 17) 'Posição 082 a 098 Tamanho 017 DÉBITO AUTOMÁTICO
					lstrBranc = Mid(lstrLinha, 99, 52) 'Posição 099 a 150 Tamanho 052 Brancos
				Case "B" 'Cadastro de débito Banco -> Empresa
					lstrTpMov = "D"
					lstrRetor = "Cadastro de débito do cliente enviado pelo banco"
				Case "C" 'Retorno do Registro B Ocorrencia no cadastramento do Débito Empresa -> Banco
				Case "D" 'Envio Alteração da Identificação do Cliente Empresa -> Banco
				Case "E" 'Envio do Débito em Conta Empresa -> Banco
				Case "F" 'Retorno do Débito em Conta Banco -> Empresa
					lstrTpMov = "D"
					lstrRetor = "Recebimento por Débito"
				Case "G" 'Retorno do recebimento direto Banco -> Empresa
					lstrTpMov = "N"
					lstrRetor = "Recebimento Direto"
				Case "H" 'Retorno do registro D Ocorrencia da alteração da Identificação do Cliente na empresa Banco -> Empresa
					lstrTpMov = "D"
					lstrRetor = "Retorno da alteração da identificação do cliente"
				Case "Z" 'Trailler"
			End Select
		End While
		FileClose(lintNrArq)
		If iintTtLin > 0 Then
			Call BarraProgresso((Me.ProgressBar), (Me.lblPerc), (Me.lblInfo), 0, CInt(iintTtLin))
		Else
			Call BarraProgresso((Me.ProgressBar), (Me.lblPerc), (Me.lblInfo), 0, 0)
		End If
		
		lstrSql = ""
		lstrSql = lstrSql & "SELECT `bancos`.`ban_id`, "
		lstrSql = lstrSql & "       `bancos`.`nrag`, "
		lstrSql = lstrSql & "       `bancos`.`nmbco` "
		lstrSql = lstrSql & "  FROM `bancos` "
		lstrSql = lstrSql & " WHERE `bancos`.`nrbco`   = """ & lstrNrBco & """ "
		lstrSql = lstrSql & "   AND `bancos`.`tpmovto` = """ & lstrTpMov & """ "
		Call Conectar(lstrSql, lrstBancos)
		With lrstBancos
			If .State > 0 Then
				If .RecordCount > 0 Then
					'UPGRADE_WARNING: Use of Null/IsNull() detected. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="2EED02CB-5C0E-4DC1-AE94-4FAA3A30F51A"'
					ilngBanId = CInt(IIf(IsDbNull(.Fields("ban_id").value), "0", .Fields("ban_id").value))
					'UPGRADE_WARNING: Use of Null/IsNull() detected. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="2EED02CB-5C0E-4DC1-AE94-4FAA3A30F51A"'
					lstrNmBco = IIf(IsDbNull(.Fields("nmbco").value), "", .Fields("nmbco").value)
					'UPGRADE_WARNING: Use of Null/IsNull() detected. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="2EED02CB-5C0E-4DC1-AE94-4FAA3A30F51A"'
					lstrNrAge = IIf(IsDbNull(.Fields("nrag").value), "0", .Fields("nrag").value)
				End If
				Call .Close()
			End If
		End With
		Me.txtBanco.Text = lstrNrBco & " / " & lstrNrAge & " - " & lstrNmBco & " ( " & lstrRetor & " ) "
	End Sub
End Class