Option Strict Off
Option Explicit On
Imports fatd_faturamento.BLL.Repositorio
Imports fatd_faturamento.ENTIDADE

Friend Class frmCancelaNF
    Inherits System.Windows.Forms.Form
    Dim vResp As Short

#Region "Propriedades"

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


        Try

            Me.cmdProcessar.Enabled = False
            Me.cmdBusca.Enabled = False
            Me.dtpCancelamento.Value = Date.Now
            Me.dtpMesAno.Value = CDate("01/" & VB6.Format(Me.dtpCancelamento.Value, "mm/yyyy"))

        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub txtNumNf_TextChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtNumNf.TextChanged

        Try

            Me.cmdBusca.Enabled = (Len(Trim(Me.txtNumNf.Text)) > 0)

        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub txtNumNf_Enter(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtNumNf.Enter

        Try

            With Me.txtNumNf
                .SelectionStart = 0
                .SelectionLength = Len(.Text)
            End With

        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub txtNumNf_KeyPress(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs) Handles txtNumNf.KeyPress

        Dim KeyAscii As Short = Asc(eventArgs.KeyChar)

        Try


            If KeyAscii <> System.Windows.Forms.Keys.Back And (KeyAscii < System.Windows.Forms.Keys.D0 Or KeyAscii > System.Windows.Forms.Keys.D9) 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 um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

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

        Try

            lClose()

        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub cmdBusca_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdBusca.Click

        Dim lstrGrupo As String
        Dim lstrFlgSt As String

        Dim vlist

        Dim objNf As New entidadeNf
        Dim repositorioNf As New repositorioNf

        Dim StrMesAno As String = GetConfig("mes.ano.faturamento")

        Try

            objNf.MESANO_REF = CInt(VB6.Format(Me.dtpMesAno.Value, "yyyymm"))
            objNf.NUMNF = CDbl(Me.txtNumNf.Text)

            vlist = repositorioNf.Select_4(objNf)

            If vlist.Count <> 0 Then

                For Each objNfFor As entidadeNf In vlist

                    lstrGrupo = Trim(IIf(IsDBNull(objNfFor.GRUPO), "B", objNfFor.GRUPO))
                    Me.txtPagto.Text = CStr(CDate(IIf(IsDBNull(objNfFor.DATAPAG), "1951-01-01", objNfFor.DATAPAG)))
                    Me.txtEmissao.Text = CStr(CDate(IIf(IsDBNull(objNfFor.DATAEM), "1951-01-01", objNfFor.DATAEM)))
                    Me.txtVecto.Text = CStr(CDate(IIf(IsDBNull(objNfFor.DATAVENC), "1951-01-01", objNfFor.DATAVENC)))
                    lstrFlgSt = Trim(IIf(IsDBNull(objNfFor.FLGST), "", objNfFor.FLGST))
                    Me.txtConsId.Text = CStr(CInt(IIf(IsDBNull(objNfFor.CONS_ID), 0, objNfFor.CONS_ID)))
                    Me.txtUnidId.Text = CStr(CInt(IIf(IsDBNull(objNfFor.UNID_ID), 0, objNfFor.UNID_ID)))
                    Me.txtZona.Text = VB6.Format(Trim(IIf(IsDBNull(objNfFor.ZONA), "0", objNfFor.ZONA)), "000")
                    Me.txtLivro.Text = VB6.Format(Trim(IIf(IsDBNull(objNfFor.LIVRO), "0", objNfFor.LIVRO)), "00")
                    Me.txtConta.Text = VB6.Format(Trim(IIf(IsDBNull(objNfFor.CONTA), "0", objNfFor.CONTA)), "000000")
                    Me.txtNome.Text = Trim(IIf(IsDBNull(objNfFor.NOME), "", objNfFor.NOME))
                    Me.txtTa.Text = Mid(Trim(IIf(IsDBNull(objNfFor.TA), "01B1", objNfFor.TA)), 3, 2)
                    Me.txtSituacao.Text = IIf(lstrFlgSt = "P", "Pago", IIf(lstrFlgSt = "R", "Reserva", IIf(lstrFlgSt = "J", "Júdice", IIf(lstrFlgSt = "C", "Cancelada", "Aberta"))))
                    Me.txtVlrLiq.Text = objNfFor.VALORLIQ.ToString()
                    Me.txtGrupo.Text = objNfFor.GRUPO.ToString()
                    Me.cmdProcessar.Enabled = True

                    If VB6.Format(Me.dtpMesAno.Value, "mm/yyyy") = StrMesAno Then
                        lstrFlgSt = "Aberto"
                    End If

                Next

            Else
                MessageBox.Show("Esta fatura não existe na arrecadação!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.cmdProcessar.Enabled = False
            End If

            ' ----- Verifica se já foi pago
            If lstrFlgSt = "P" Then
                MessageBox.Show("Esta Fatura já foi paga, não pode ser cancelada!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.cmdProcessar.Enabled = False
                ' ----- Verifica se ta na Reserva
            ElseIf lstrFlgSt = "R" Then
                MessageBox.Show("Esta Fatura está na reserva, não pode ser cancelada!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.cmdProcessar.Enabled = False
            ElseIf lstrFlgSt = "J" Then
                MessageBox.Show("Esta Fatura está em judice, não pode ser cancelada!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.cmdProcessar.Enabled = False
                ' ----- Verifica se já não foi cancelada
            ElseIf lstrFlgSt = "C" Then
                MessageBox.Show("Esta Fatura já foi cancelada!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.cmdProcessar.Enabled = False
            ElseIf lstrFlgSt = "Aberto" Then
                MessageBox.Show("Mês Aberto, esta Fatura NÃO PRECISA ser cancelada!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.cmdProcessar.Enabled = False
                'Else
                'Me.cmdProcessar.Enabled = True
            End If


        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

    Private Sub cmdProcessar_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdProcessar.Click

        Dim objNf As New entidadeNf
        Dim repositorioNf As New repositorioNf

        Dim objConcorte As New entidadeConcorte
        Dim repositorioConcorte As New repositorioConcorte

        Try

            If Len(Trim(Me.txtMotivo.Text)) = 0 Then
                MessageBox.Show("Informe o motivo do cancelamento!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.txtMotivo.Focus()
            Else

                vResp = MessageBox.Show("Deseja realmente cancelar esta fatura?", "Informação", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)

                If vResp = DialogResult.Yes Then

                    ' ----- Atualiza a NF

                    objNf.FLGST = "C"
                    objNf.DATAST = VB6.Format(Me.dtpCancelamento.Value, "yyyy-MM-dd")
                    objNf.MOTIVOCANC = txtMotivo.Text
                    objNf.NUMNF = Convert.ToDouble(txtNumNf.Text)
                    objNf.MESANO_REF = CInt(VB6.Format(Me.dtpMesAno.Value, "yyyymm"))

                    lUpdate(objNf)



                    ' ----- Atualiza a Concorte

                    objConcorte.SIT = "X"
                    objConcorte.NUMNF = txtNumNf.Text
                    objConcorte.MESANO = VB6.Format(Me.dtpMesAno.Value, "mm/yyyy")

                    lUpdate(objConcorte)


                    SetLogNF("Cancelar NF", txtZona.Text, txtLivro.Text, txtConta.Text, vUsuario.LOGIN, objNf.NUMNF, txtVlrLiq.Text, CInt(VB6.Format(Me.dtpMesAno.Value, "yyyymm")), txtGrupo.Text, "Fatura Cancelada", "C", DateTime.Now)
                    MessageBox.Show("Fatura cancelada com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)

                End If

            End If

        Catch ex As Exception
            MessageBox.Show("Ocorreu um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try


    End Sub

    Private Sub frmCancelaNF_KeyPress(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress

        Dim KeyAscii As Short = Asc(eventArgs.KeyChar)

        Try

            If KeyAscii = System.Windows.Forms.Keys.Escape Then
                Call cmdFechar_Click(cmdFechar, New System.EventArgs())
            ElseIf 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 um Erro Inesperado. Favor, Contate o Administrador do Sistema ou a Equipe de Suporte de sua localidade! ", "Fatal - Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try

    End Sub

#End Region

#Region "Métodos"

    Private Sub lClose()

        Try

            Close()

        Catch ex As Exception
            Exit Sub
        End Try

    End Sub

    Private Function lUpdate(ByRef objNf As entidadeNf) As Boolean
        Dim repositorioNf As New repositorioNf
        Try

            repositorioNf.Update(objNf)

            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function

    Private Function lUpdate(ByRef objConcorte As entidadeConcorte) As Boolean
        Dim repositorioConcorte As New repositorioConcorte
        Try

            repositorioConcorte.Update(objConcorte)

            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function

#End Region


End Class