Imports System.IO
Public Class FormPressureVessels
    Private Sub btncerrarform_Click_1(sender As Object, e As EventArgs) Handles btncerrarform.Click
        Me.Close() 'CERRAR EL FORMPRESSUREVESSELS
    End Sub
    Dim Table As New DataTable
    Dim NombreArchivoFechas As String = "ArchivoDeLosFechas.TXT"
    Dim NombreArchivoCombos As String = "ArchivoDeLosCombos.TXT"
    'Private Sub FArchivoTexto_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    '    TBArchivoFechas.Text = NombreArchivoFechas 'BLOC DE NOTAS
    'End Sub
    ' ***************  LEER LINEAS DE TEXTO EN EL BLOC DE NOTAS  
    'Private Sub BFiestas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BFiestas.Click
    '    If TBArchivoFechas.Text = String.Empty Then
    '        Exit Sub
    '    End If

    '    Dim ArchivoParaLeer As New StreamReader(TBArchivoFechas.Text)

    '    CHKLBVacaciones.Items.Clear()

    '    Do Until ArchivoParaLeer.Peek = -1
    '        CHKLBVacaciones.Items.Add(ArchivoParaLeer.ReadLine(), False)  ' True es Checked, False es no Checked
    '    Loop                                                               ' En Function NoWeekEnd(), solo importante es Checked

    '    ArchivoParaLeer.Close()
    '    ArchivoParaLeer.Dispose()
    'End Sub
    ' ***************  EJECUTAR EL FORMATO DEL CÓDIGO PARA RP DATAGRIDVIEW
    Private Sub FormPressureVessels_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

        ' Llenar CHKLBVacaciones   : El archivo contiene las fechas de fiesta legales en México, ... creo ...  :D)))
        If File.Exists(NombreArchivoFechas) Then
            Dim ArchivoParaLeer As New StreamReader(NombreArchivoFechas)

            CHKLBVacaciones.Items.Clear()

            Do Until ArchivoParaLeer.Peek = -1
                CHKLBVacaciones.Items.Add(ArchivoParaLeer.ReadLine(), False)  ' True es Checked, False es no Checked
            Loop                                                               ' En Function NoWeekEnd(), solo importante es Checked

            ArchivoParaLeer.Close()
            ArchivoParaLeer.Dispose()
        End If

        ' Llenar los Combos  (version ES)  ''''     ' ***************  ITEMS QUE SE CARGARÁN EN EL FORMPRESSUREVESSELS
        Dim SeparadorSplit As Char() = {"~"}  ' Este caracter (ASCII 126) nunca es utilazado solo en una frase, en nungun languaje
        Dim ResultadoSplit() As String   ' Este es un tabla de String
        Dim I As Integer = 0
        Dim Linea As String

        If File.Exists(NombreArchivoCombos) Then
            Dim ArchivoParaLeer As New StreamReader(NombreArchivoCombos, System.Text.Encoding.Default)

            For Each C As Object In Me.Controls
                If C.GetType.Name = "ComboxBox" Then
                    C.Items.Clear()
                End If
            Next

            Do Until ArchivoParaLeer.Peek = -1
                Linea = ArchivoParaLeer.ReadLine()
                If Linea.Length > 1 AndAlso Linea.Substring(0, 2) = "ES" Then   ' ES para la version españole, todas otras lineas son evidado
                    ResultadoSplit = Linea.Split(SeparadorSplit)
                    Select Case ResultadoSplit(1)  ' indicio 0 es el lenguaje
                        Case "Faldon"
                            Faldon.Items.Add(ResultadoSplit(2))
                        Case "Soporte"
                            Soporte.Items.Add(ResultadoSplit(2))
                        Case "Orejas"
                            Orejas.Items.Add(ResultadoSplit(2))
                        Case "Internos"
                            Internos.Items.Add(ResultadoSplit(2))
                        Case "Manhole"
                            Manhole.Items.Add(ResultadoSplit(2))
                        Case "PWHT"
                            PWHT.Items.Add(ResultadoSplit(2))
                        Case "ComboBox1"  ' Material
                            ComboBox1.Items.Add(ResultadoSplit(2))
                        Case "ComboBox2"  ' Espesor
                            ComboBox2.Items.Add(ResultadoSplit(2))
                        Case "ComboBox3"  ' Diametros              
                            ComboBox3.Items.Add(ResultadoSplit(2))
                    End Select
                End If
            Loop
            ComboBox1.Sorted = True
            ComboBox2.Sorted = True
            ComboBox3.Sorted = True

            ArchivoParaLeer.Close()
            ArchivoParaLeer.Dispose()
        End If


        ' ******************** Codigos "One Shot" para crear el primero archivo ArchivoDeLasDuraciones.txt
        ' ********************   Ejemplo :    ES~Acero al carbón~20-25~3/16~1
        ''Dim ArchivoParaEscribir As New StreamWriter("ArchivoDeLasDuraciones.txt", True, System.Text.Encoding.Default)
        ''For Material As Integer = 0 To ComboBox1.Items.Count - 1
        ''    For Diametro As Integer = 0 To ComboBox3.Items.Count - 1
        ''        For Espesor As Integer = 0 To ComboBox2.Items.Count - 1
        ''            Linea = "ES" & "~" &
        ''            ComboBox1.Items(Material).ToString & "~" &
        ''            ComboBox3.Items(Diametro).ToString & "~" &
        ''            ComboBox2.Items(Espesor).ToString & "~" & "-1"
        ''            ArchivoParaEscribir.WriteLine(Linea)
        ''        Next
        ''    Next
        ''Next
        ''ArchivoParaEscribir.Close()
        ''ArchivoParaEscribir.Dispose()
        ' ********************
        ' ********************

        ' ******************** El FormPressureVesselsTables debe ser siempre cargado, mismo si no es visible
        ' ******************** para dar la duracion cuando es necesario
        ' ******************** El boton BVerTablaDuracion lo pone delante (cf. BVerTablaDuracion_Click)
        ' ******************** Este Form es cerrado cuando esta es cerrado  (cf. FormPressureVessels_FormClosing)
        FormPressureVesselsTables.Show()
        ' ********************
        ' ********************

        Table.Columns.Add("OPERATION", Type.GetType("System.String"))
        Table.Columns.Add("START DATE", Type.GetType("System.DateTime"))
        Table.Columns.Add("FINAL DATE", Type.GetType("System.DateTime"))
        Table.Columns.Add("STATUS", Type.GetType("System.DateTime"))

        DataGridView1.DataSource = Table

        For C As Integer = 0 To DataGridView1.Columns.Count - 1
            DataGridView1.Columns(C).HeaderCell.Style.Font = New Font("Microsoft Sans Serif", 10, FontStyle.Bold)
            DataGridView1.Columns(C).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
        Next C

        ''' ***************  ITEMS QUE SE CARGARÁN EN EL FORMPRESSUREVESSELS
        '''Faldon
        ''Faldon.Items.Add("Sí")
        ''Faldon.Items.Add("No")

        '''Soporte
        ''Soporte.Items.Add("Sí")
        ''Soporte.Items.Add("No")

        '''Orejas
        ''Orejas.Items.Add("Sí")
        ''Orejas.Items.Add("No")

        '''Internos
        ''Internos.Items.Add("Sí")
        ''Internos.Items.Add("No")

        '''Manhole
        ''Manhole.Items.Add("Sí")
        ''Manhole.Items.Add("No")

        '''PWHT
        ''PWHT.Items.Add("Sí")
        ''PWHT.Items.Add("No")

        '''Material
        ''ComboBox1.Items.Add("Acero al carbón")
        ''ComboBox1.Items.Add("Inoxidable")
        ''ComboBox1.Items.Add("Duplex")
        ''ComboBox1.Items.Add("Titanio")

        '''Espesor < 1 in
        ''ComboBox2.Items.Add("3/16")
        ''ComboBox2.Items.Add("1/4")
        ''ComboBox2.Items.Add("5/16")
        ''ComboBox2.Items.Add("3/8")
        ''ComboBox2.Items.Add("7/16")
        ''ComboBox2.Items.Add("1/2")
        ''ComboBox2.Items.Add("9/16")
        ''ComboBox2.Items.Add("5/8")
        ''ComboBox2.Items.Add("11/16")
        ''ComboBox2.Items.Add("3/4")
        ''ComboBox2.Items.Add("7/8")

        '''Espesor >= 1 in
        ''ComboBox2.Items.Add("1")
        ''ComboBox2.Items.Add("1-1/8")
        ''ComboBox2.Items.Add("1-1/4")
        ''ComboBox2.Items.Add("1-3/4")
        ''ComboBox2.Items.Add("1-1/2")
        ''ComboBox2.Items.Add("1-5/8")
        ''ComboBox2.Items.Add("1-3/4")
        ''ComboBox2.Items.Add("1-7/8")

        '''Espesor >= 2 in
        ''ComboBox2.Items.Add("2")
        ''ComboBox2.Items.Add("2-1/8")
        ''ComboBox2.Items.Add("2-1/4")
        ''ComboBox2.Items.Add("2-1/2")
        ''ComboBox2.Items.Add("2-3/4")

        '''Espesor >= 3 in
        ''ComboBox2.Items.Add("3")
        ''ComboBox2.Items.Add("3-1/4")
        ''ComboBox2.Items.Add("3-1/2")
        ''ComboBox2.Items.Add("3-3/4")

        '''Espesor >= 4 in
        ''ComboBox2.Items.Add("4")
        ''ComboBox2.Items.Add("4-1/4")
        ''ComboBox2.Items.Add("4-1/2")

        '''Espesor >= 5 in
        ''ComboBox2.Items.Add("5")
        ''ComboBox2.Items.Add("5-1/2")

        '''Espesor >= 6 in
        ''ComboBox2.Items.Add("6")
        ''ComboBox2.Items.Add("6-1/2")

        '''Espesor >= 7 in
        ''ComboBox2.Items.Add("7")
        ''ComboBox2.Items.Add("7-1/2")

        '''Espesor >= 8 in
        ''ComboBox2.Items.Add("8")
        ''ComboBox2.Items.Add("8-1/2")

        '''Espesor >= 8 in
        ''ComboBox3.Items.Add("20-25")
        ''ComboBox3.Items.Add("26-30")
        ''ComboBox3.Items.Add("31-35")
        ''ComboBox3.Items.Add("36-40")
        ''ComboBox3.Items.Add("41-45")
        ''ComboBox3.Items.Add("46-50")
        ''ComboBox3.Items.Add("51-55")
        ''ComboBox3.Items.Add("56-60")
        ''ComboBox3.Items.Add("61-65")
        ''ComboBox3.Items.Add("66-70")
        ''ComboBox3.Items.Add("71-80")
        ''ComboBox3.Items.Add("81-90")
        ''ComboBox3.Items.Add("91-100")
        ''ComboBox3.Items.Add("101-110")
        ''ComboBox3.Items.Add("111-120")
        ''ComboBox3.Items.Add("121-130")
        ''ComboBox3.Items.Add("131-140")

    End Sub
    Dim Eleccion As Integer = 0
    ' ***************  ASIGNACIÓN  LUNES A VIERNES, LUNES A SÁBADO, LUNES A DOMINGO
    Private Sub RBEleccionXXX_CheckedChanged(sender As Object, e As EventArgs) Handles RBEleccion1.CheckedChanged, RBEleccion2.CheckedChanged, RBEleccion3.CheckedChanged
        Select Case sender.name
            Case "RBEleccion1"
                Eleccion = 1
            Case "RBEleccion2"
                Eleccion = 2
            Case "RBEleccion3"
                Eleccion = 3
        End Select
    End Sub
    ' ***************  EXCLUSIÓN DE LOS DÍAS EN BASE A LA ELECCIÓN DEL USUARIO
    Private Function NoWeekEnd(D As Date) As Date
        If Eleccion = 0 Then
            Eleccion = 1  ' EL CASO MÁS COMÚN 1 = LUNES A VIERNES
            RBEleccion1.Checked = True
        End If

        For L As Integer = 0 To CHKLBVacaciones.CheckedItems.Count - 1
            If D.ToShortDateString = CType(CHKLBVacaciones.CheckedItems(L), Date).ToShortDateString Then
                D = D.AddDays(1)
            End If
        Next

        Select Case Eleccion                ' Los días son Domigo = 0, Lunes = 1, …, Sabado = 6.
            Case 1
                If D.DayOfWeek = 6 Then
                    D = D.AddDays(2)
                ElseIf D.DayOfWeek = 0 Then
                    D = D.AddDays(1)
                End If
            Case 2
                If D.DayOfWeek = 0 Then
                    D = D.AddDays(1)
                End If
            Case 3
                ' LUNES A DOMINGO = NO HACER NADA
        End Select
        Return D
    End Function

    ' ***************  Leer Duracion en la tabla en FormPressureVesselsTables
    ' *************** 
    ' *************** 
    ' cf. BTestarBuscaDuracion_Click para probar   !!!!!!!!!!!!!!!!!!!!!!!
    ' *************** 
    ' *************** 
    Private Function DarMeDuracionParaEsteCombinacion() As Integer
        For R As Integer = 0 To FormPressureVesselsTables.DarDuracionDG.Rows.Count - 1  ' Ultima Row vacia no permiso
            With FormPressureVesselsTables.DarDuracionDG
                If .Item("MATERIAL", R).Value = ComboBox1.Text And
                   .Item("DIAMETRO", R).Value = ComboBox3.Text And
                   .Item("ESPESOR", R).Value = ComboBox2.Text Then
                    Return CType(.Item("DURACIÓN", R).Value, Integer)
                End If
            End With
        Next
        ' si el valor es -1, este es que este combinacion no tiene de valor veridad 
        ' si el valor es 0, este es que este combinacion no encontrada en la table (este caso nunca existe, sobre malo archivo)
        Return 0
    End Function
    ' ***************  EJECUTAR CODIGO PARA RP VESIÓN INGLÉS
#Region "PARA RP VESIÓN INGLÉS"
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim date1 As Date
        Try   ' EN EL CASO DE NO INGRESAR UNA FECHA
            date1 = CType(TextBox1.Text, Date)
        Catch
            Exit Sub
        End Try

        Dim numRows As Integer
        Dim DateBegin As Date
        Dim DateEnd As Date
        Dim Date2 As Date
        Dim Duracion As Integer

        '----------------ENGINEERING
        Table.Rows.Add("ENGINEERING")
        Try
            Duracion = TextBox2.Text * 7
        Catch
        End Try

        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("SENDING DRAWINGS FOR APPROVAL", DateBegin, DateEnd)
        date1 = DateEnd

        Try
            Duracion = TextBox6.Text * 7
        Catch
        End Try
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("APPROVAL BY THE CLIENT", DateBegin, DateEnd)
        Date2 = DateEnd

        '----------------MATERIALS
        Table.Rows.Add("MATERIALS")
        Try
            Duracion = TextBox7.Text * 7
        Catch
        End Try
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("TUBES FOR NOZZLE", DateBegin, DateEnd)
        date1 = DateEnd

        Try
            Duracion = TextBox5.Text * 7
        Catch
        End Try
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("FLANGES FOR NOZZLES", DateBegin, DateEnd)
        date1 = DateEnd

        '----------------SUPPORT LEG FABRICATION
        If Soporte.Text = "Sí" Then
            Table.Rows.Add("SUPPORT LEG FABRICATION")
            Duracion = 1
            DateBegin = NoWeekEnd(date1)
            DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
            Table.Rows.Add("WELDING UP BASE AND LEG", DateBegin, DateEnd)
            date1 = DateEnd
        End If

        '----------------INTERNAL ACCESSORIES
        If Internos.Text = "Sí" Then
            Table.Rows.Add("INTERNAL ACCESSORIES")
            Duracion = 1
            DateBegin = NoWeekEnd(date1)
            DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
            Table.Rows.Add("FITTING UP PLATE", DateBegin, DateEnd)
            date1 = DateEnd

            Duracion = 1
            DateBegin = NoWeekEnd(date1)
            DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
            Table.Rows.Add("WELDING UP PLATE", DateBegin, DateEnd)
            date1 = DateEnd
        End If


        '----------------NOZZLES
        Table.Rows.Add("NOZZLES")
        Try
            Duracion = TextBox3.Text * 1  ' Duración de esta actvidad
        Catch
        End Try
        DateBegin = DateEnd    ' DateEnd precedente   ' Comienza este trabajo
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("TRACE AND CUT NOZZLE ON SHELL", DateBegin, DateEnd)
        date1 = DateEnd

        Try
            Duracion = TextBox3.Text * 1   ' Duración de esta actvidad
        Catch
        End Try
        DateBegin = DateEnd    ' DateEnd precedente   ' Comienza este trabajo
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("ASSEMBLY OF NOZZLE", DateBegin, DateEnd)
        date1 = DateEnd

        Try
            Duracion = TextBox3.Text * 1   ' Duración de esta actvidad
        Catch
        End Try
        DateBegin = DateEnd    ' DateEnd precedente   ' Comienza este trabajo
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("WELDING NOZZLE", DateBegin, DateEnd)
        date1 = DateEnd

        '----------------SHELL < 1 in, > = 1 in
        Table.Rows.Add("SHELL")
        If Integer.TryParse(TextBox4.Text, numRows) Then
            If (numRows >= 1) Then
                For i As Integer = 1 To numRows

                    Duracion = 1 ' Duración de esta actividad
                    DateBegin = NoWeekEnd(Date2) ' El mismo dia de inicio   ' Comienza este trabajo
                    DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
                    Table.Rows.Add("TRACE AND CUT PLATE C" & i, DateBegin, DateEnd)

                    Duracion = 1  ' Duración de esta actvidad
                    DateBegin = DateEnd    ' DateEnd precedente   ' Comienza este trabajo
                    DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
                    Table.Rows.Add("ROLLED PLATE C" & i, DateBegin, DateEnd)

                    Duracion = 1  '  Duración de esta actvidad
                    DateBegin = DateEnd   ' DateEnd precedente   ' Comienza este trabajo
                    DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
                    Table.Rows.Add("LONGITUDINAL WELDING C" & i, DateBegin, DateEnd)

                    Duracion = 1  ' Duración de esta actvidad
                    DateBegin = DateEnd   ' DateEnd precedente   ' Comienza este trabajo
                    DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
                    Table.Rows.Add("RE ROLLED C" & i, DateBegin, DateEnd)

                    Date2 = DateEnd  ' Fecha de inicio del nuevo ciclo

                Next
            Else
                MessageBox.Show("Value: " & TextBox4.Text & " El número de filas debe ser mayor o igual a 1", "Error")
            End If
        Else
            MessageBox.Show("Value: " & TextBox4.Text & " Número invalido", "Error")
        End If

        ' If ComboBox1.Text = "Acero al carbón" And ComboBox2.Text = "3/16" Or ComboBox1.Text = "Acero al carbón" And ComboBox2.Text = "1/2" Then
        'Table.Rows.Add("SHELL")

        'If Integer.TryParse(TextBox4.Text, numRows) Then
        'If (numRows >= 1) Then
        'For i As Integer = 1 To numRows

        'Duracion = 1   ' Duración de esta actividad
        'DateBegin = NoWeekEnd(Date2) ' El mismo dia de inicio   ' Comienza este trabajo
        'DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        'Table.Rows.Add("TRACE AND CUT PLATE C" & i, DateBegin, DateEnd)

        'Duracion = 0   ' Duración de esta actvidad
        'DateBegin = DateEnd    ' DateEnd precedente   ' Comienza este trabajo
        'DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        'Table.Rows.Add("ROLLED PLATE C" & i, DateBegin, DateEnd)

        'Duracion = 0   '  Duración de esta actvidad
        'DateBegin = DateEnd    ' DateEnd precedente   ' Comienza este trabajo
        'DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        'Table.Rows.Add("LONGITUDINAL WELDING C" & i, DateBegin, DateEnd)

        'Duracion = 1   ' Duración de esta actvidad
        'DateBegin = DateEnd    ' DateEnd precedente   ' Comienza este trabajo
        'DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        'Table.Rows.Add("RE ROLLED C" & i, DateBegin, DateEnd)

        ' Date2 = DateEnd  ' Fecha de inicio del nuevo ciclo

        'Next
        'Else
        'MessageBox.Show("Value: " & TextBox4.Text & " El número de filas debe ser mayor o igual a 1", "Error")
        'End If
        'Else
        'MessageBox.Show("Value: " & TextBox4.Text & " Número invalido", "Error")
        'End If

        '----------------ASSEMBLY OF SHELL
        Table.Rows.Add("ASSEMBLY OF SHELL")
        Table.Rows.Add("ASSEMBLY OF TOP & C1", DateBegin, DateEnd)
        If Integer.TryParse(TextBox4.Text, numRows) Then
            If (numRows >= 1) Then
                For i As Integer = 1 To numRows - 1

                    Duracion = 1   ' Duración de esta actividad
                    DateBegin = NoWeekEnd(date1) ' El mismo dia de inicio   ' Comienza este trabajo
                    DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
                    Table.Rows.Add("ASSEMBLY OF C" & i & " & C" & i + 1, DateBegin, DateEnd)
                    Table.Rows.Add("WELDING OF C" & i & " & C" & i + 1, DateBegin, DateEnd)
                    date1 = DateEnd  ' Fecha de inicio del nuevo ciclo

                Next
                Table.Rows.Add("ASSEMBLY C" & TextBox4.Text & " & OF BOTTOM", DateBegin, DateEnd)

            End If
        End If


        '----------------LIFTING LUGS
        If Orejas.Text = "Sí" Then
            Table.Rows.Add("LIFTING LUGS")
            Duracion = 0
            DateBegin = NoWeekEnd(Date2)
            DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
            Table.Rows.Add("WELDING LIFTING LUGS", DateBegin, DateEnd)
            Date2 = DateEnd
        End If

        '----------------MANHOLE
        If Manhole.Text = "Sí" Then
            Table.Rows.Add("MANHOLE")
            Duracion = 1
            DateBegin = NoWeekEnd(Date2)
            DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
            Table.Rows.Add("WELDING OF TUBE AND FLAGE", DateBegin, DateEnd)
            Date2 = DateEnd

            Duracion = 1
            DateBegin = NoWeekEnd(Date2)
            DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
            Table.Rows.Add("FIT UP OF COVER FOR MANHOLE AND HANDLE", DateBegin, DateEnd)
            Date2 = DateEnd

            Duracion = 0
            DateBegin = NoWeekEnd(Date2)
            DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
            Table.Rows.Add("WELD COVER FOR MANHOLE AND HANDLE", DateBegin, DateEnd)
            date1 = DateEnd
        End If

        If PWHT.Text = "Sí" Then
            Table.Rows.Add("PWHT")
            Duracion = 1
            DateBegin = NoWeekEnd(Date2)
            DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
            Table.Rows.Add("HEAT TREATMENT", DateBegin, DateEnd)
            Date2 = DateEnd

        End If

        '----------------INSPECTION AND NON DESTRUCTIVE TEST
        If ComboBox3.Text = "20-25" Or ComboBox3.Text = "26-30" Or ComboBox3.Text = "31-35" Or ComboBox3.Text = "36-40" Or ComboBox3.Text = "41-45" Or ComboBox3.Text = "46-50" Then
            Table.Rows.Add("INSPECTION AND NON DESTRUCTIVE TEST")
            Duracion = 1
            DateBegin = NoWeekEnd(Date2)
            DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
            Table.Rows.Add("QUALITY INSPECTION AND DIMENSIONAL", DateBegin, DateEnd)
            Date2 = DateEnd
        End If

        'Carretes con un diametro > 50 in se necesitará 2 días
        If ComboBox3.Text = "51-55" Or ComboBox3.Text = "56-60" Or ComboBox3.Text = "61-65" Or ComboBox3.Text = "66-70" Or ComboBox3.Text = "71-80" Or ComboBox3.Text = "81-90" Or ComboBox3.Text = "91-100" Or ComboBox3.Text = "101-110" Or ComboBox3.Text = "111-120" Or ComboBox3.Text = "121-130" Or ComboBox3.Text = "131-140" Then
            Table.Rows.Add("INSPECTION AND NON DESTRUCTIVE TEST")
            Duracion = 2
            DateBegin = NoWeekEnd(Date2)
            DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
            Table.Rows.Add("QUALITY INSPECTION AND DIMENSIONAL", DateBegin, DateEnd)
            Date2 = DateEnd
        End If

        Duracion = 1
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("PREPARE HYDROSTATIC TEST", DateBegin, DateEnd)
        date1 = DateEnd

        Duracion = 1
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("QUALITY INSPECTION OF HYDROSTATIC TEST", DateBegin, DateEnd)
        date1 = DateEnd

        Duracion = 1
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("DRAINED AND HUMIDITY REMOVED", DateBegin, DateEnd)
        date1 = DateEnd

        '----------------PAINTING AND SHIPMENT
        Table.Rows.Add("PAINTING AND SHIPMENT")
        Duracion = 1
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("SHOT BLAST", DateBegin, DateEnd)
        date1 = DateEnd

        Duracion = 1
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("PAINT", DateBegin, DateEnd)
        date1 = DateEnd

        Duracion = 1
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("SHIPMENT PREPARATION & DEPART", DateBegin, DateEnd)
        date1 = DateEnd

        Duracion = 1
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("SHIPPING TIME", DateBegin, DateEnd)
        date1 = DateEnd

        Duracion = 1
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("DELIVERY IN SITE", DateBegin, DateEnd)
        date1 = DateEnd

        PonerCaracteresNegritas()
    End Sub
#End Region
    ' ***************  ASIGNAR FORMATO BOLD A LOS FRENTE DEL PROGRAMA DE FABRICACIÓN 
    Private Sub PonerCaracteresNegritas()
        For R As Integer = 0 To DataGridView1.Rows.Count - 2
            If DataGridView1.Item("START DATE", R).Value.ToString = String.Empty Then
                DataGridView1.Item("OPERATION", R).Style.Font = New Font("Microsoft Sans Serif", 9, FontStyle.Bold)
            End If
        Next R
    End Sub
    ' ***************  ELIMINAR LOS DATOS DEL DATAGRIDVIEW 
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Table.Rows.Clear()
    End Sub
#Region "Español"
    Private Sub Button2_Click_1(sender As Object, e As EventArgs) Handles Button2.Click
        Dim date1 As Date
        Try   ' En el caso de error en TextBox1
            date1 = CType(TextBox1.Text, Date)
        Catch
            Exit Sub
        End Try

        Dim numRows As Integer
        Dim DateBegin As Date
        Dim DateEnd As Date
        Dim Duracion As Integer
        Dim DuracionD As Integer

        '----------------INGENIERIA
        Table.Rows.Add("INGENIERIA")
        DuracionD = TextBox2.Text * 7
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(DuracionD))
        Table.Rows.Add("ENVIO DE DIBUJOS PARA APROBACIÓN", DateBegin, DateEnd)
        date1 = DateEnd

        DuracionD = TextBox5.Text * 7
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(DuracionD))
        Table.Rows.Add("APROBACIÓN POR EL CLIENTE", DateBegin, DateEnd)
        date1 = DateEnd

        '----------------MATERIALES
        Table.Rows.Add("MATERIALES")
        Duracion = TextBox7.Text
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(DuracionD))
        Table.Rows.Add("TUBOS PARA BOQUILLAS", DateBegin, DateEnd)
        date1 = DateEnd

        Duracion = TextBox6.Text
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(DuracionD))
        Table.Rows.Add("BRIDAS PARA LAS BOQUILLAS", DateBegin, DateEnd)
        date1 = DateEnd

        '----------------FABRICACIÓN DE SOPORTE BASE
        If Soporte.Text = "Sí" Then
            Table.Rows.Add("SOPORTE")
            Duracion = 1
            DateBegin = NoWeekEnd(date1)
            DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
            Table.Rows.Add("SOLDADURA DE SOPORTE", DateBegin, DateEnd)
            date1 = DateEnd
        End If

        '----------------ACCESORIOS INTERNOS
        If Internos.Text = "Sí" Then
            Table.Rows.Add("INTERNOS")
            Duracion = 1
            DateBegin = NoWeekEnd(date1)
            DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
            Table.Rows.Add("ARMADO DE ACCESORIOS INTERNOS A CUERPO", DateBegin, DateEnd)
            date1 = DateEnd

            Duracion = 1
            DateBegin = NoWeekEnd(date1)
            DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
            Table.Rows.Add("SOLDADURA DE ACCESORIOS INTERNOS A CUERPO", DateBegin, DateEnd)
            date1 = DateEnd
        End If


        '----------------BOQUILLAS
        Table.Rows.Add("BOQUILLAS")
        For i As Integer = TextBox3.Text To Duracion
            Duracion = 1 * TextBox3.Text   ' Duración de esta actvidad
            DateBegin = DateEnd    ' DateEnd precedente   ' Comienza este trabajo
            DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))

        Next
        Table.Rows.Add("TRAZADO Y CORTE DE BOQUILLA", DateBegin, DateEnd)
        For i As Integer = TextBox3.Text To Duracion
            Duracion = 1 * TextBox3.Text   ' Duración de esta actvidad
            DateBegin = DateEnd    ' DateEnd precedente   ' Comienza este trabajo
            DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))

        Next
        Table.Rows.Add("ARMADO DE BOQUILLA", DateBegin, DateEnd)

        For i As Integer = TextBox3.Text To Duracion
            Duracion = 1 * TextBox3.Text   ' Duración de esta actvidad
            DateBegin = DateEnd    ' DateEnd precedente   ' Comienza este trabajo
            DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))

        Next
        Table.Rows.Add("SOLDADURA DE BOQUILLA", DateBegin, DateEnd)

        '----------------CARRETE
        If ComboBox1.Text = "Titanio" And ComboBox2.Text = "3/16" Or ComboBox1.Text = "Titanio" And ComboBox2.Text = "1" Then

            Table.Rows.Add("CARRETE")
            If Integer.TryParse(TextBox4.Text, numRows) Then
                If (numRows >= 1) Then
                    For i As Integer = 1 To numRows

                        Duracion = 1   ' Duración de esta actividad
                        DateBegin = NoWeekEnd(date1) ' El mismo dia de inicio   ' Comienza este trabajo
                        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
                        Table.Rows.Add("TRAZADO Y CORTE DE PLACA C" & i, DateBegin, DateEnd)

                        Duracion = 1   ' Duración de esta actvidad
                        DateBegin = DateEnd    ' DateEnd precedente   ' Comienza este trabajo
                        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
                        Table.Rows.Add("ROLADO DE PLACA C" & i, DateBegin, DateEnd)

                        Duracion = 1   '  Duración de esta actvidad
                        DateBegin = DateEnd    ' DateEnd precedente   ' Comienza este trabajo
                        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
                        Table.Rows.Add("SOLDADURA LONGITUDINAL C" & i, DateBegin, DateEnd)

                        Duracion = 1   ' Duración de esta actvidad
                        DateBegin = DateEnd    ' DateEnd precedente   ' Comienza este trabajo
                        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
                        Table.Rows.Add("RE ROLADO C" & i, DateBegin, DateEnd)

                        date1 = DateEnd  ' Fecha de inicio del nuevo ciclo

                    Next
                Else
                    MessageBox.Show("Value: " & TextBox4.Text & " El número de filas debe ser mayor o igual a 1", "Error")
                End If
            Else
                MessageBox.Show("Value: " & TextBox4.Text & " Número invalido", "Error")
            End If
        Else
        End If

        If ComboBox1.Text = "Inoxidable" And ComboBox2.Text = "3/16" Or ComboBox1.Text = "Inoxidable" And ComboBox2.Text = "1/2" Then

            Table.Rows.Add("CHANNEL")
            If Integer.TryParse(TextBox4.Text, numRows) Then
                If (numRows >= 1) Then
                    For i As Integer = 1 To numRows

                        Duracion = 10   ' Duración de esta actividad
                        DateBegin = NoWeekEnd(date1) ' El mismo dia de inicio   ' Comienza este trabajo
                        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
                        Table.Rows.Add("TRAZADO Y CORTE DE PLACA C" & i, DateBegin, DateEnd)

                        Duracion = 10   ' Duración de esta actvidad
                        DateBegin = DateEnd    ' DateEnd precedente   ' Comienza este trabajo
                        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
                        Table.Rows.Add("ROLADO DE PLACA C" & i, DateBegin, DateEnd)

                        Duracion = 10   '  Duración de esta actvidad
                        DateBegin = DateEnd    ' DateEnd precedente   ' Comienza este trabajo
                        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
                        Table.Rows.Add("SOLDADURA LONGITUDINAL C" & i, DateBegin, DateEnd)

                        Duracion = 10   ' Duración de esta actvidad
                        DateBegin = DateEnd    ' DateEnd precedente   ' Comienza este trabajo
                        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
                        Table.Rows.Add("RE ROLADO C" & i, DateBegin, DateEnd)

                        date1 = DateEnd  ' Fecha de inicio del nuevo ciclo

                    Next
                Else
                    MessageBox.Show("Value: " & TextBox4.Text & " El número de filas debe ser mayor o igual a 1", "Error")
                End If
            Else
                MessageBox.Show("Value: " & TextBox4.Text & " Número invalido", "Error")
            End If
        Else
        End If

        '----------------OREJAS DE IZAJE
        If Orejas.Text = "Sí" Then
            Table.Rows.Add("OREJAS DE IZAJE")
            Duracion = 1
            DateBegin = NoWeekEnd(date1)
            DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
            Table.Rows.Add("SOLDADURAS DE OREJA DE IZAJE", DateBegin, DateEnd)
            date1 = DateEnd
        End If

        '----------------INSPECCIÓN Y PRUEBAS NO DESTRUCTIVA
        Table.Rows.Add("INSPECCIÓN Y PRUEBAS NO DESTRUCTIVAS")
        Duracion = 1
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("INSPECCIÓN DE CALIDAD Y DIMENSIONAL", DateBegin, DateEnd)
        date1 = DateEnd

        Duracion = 1
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("PREPARAR PRUEBA HIDROSTATICA", DateBegin, DateEnd)
        date1 = DateEnd

        Duracion = 1
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("INSPECCIÓN DE CALIDAD DE PRUEBA HIDROSTATICA", DateBegin, DateEnd)
        date1 = DateEnd

        Duracion = 1
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("DRENADO Y ELIMINADO DE HUMEDAD", DateBegin, DateEnd)
        date1 = DateEnd

        '----------------PINTURA Y ENVIO
        Table.Rows.Add("PINTURA Y ENVIO")
        Duracion = 1
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("SHOT BLAST", DateBegin, DateEnd)
        date1 = DateEnd

        Duracion = 1
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("PINTADO DE EQUIPO", DateBegin, DateEnd)
        date1 = DateEnd

        Duracion = 1
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("PREPARACIÓN DE EMBARQUE", DateBegin, DateEnd)
        date1 = DateEnd

        Duracion = 1
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("ENVIO DE EQUIPO", DateBegin, DateEnd)
        date1 = DateEnd

        Duracion = 1
        DateBegin = NoWeekEnd(date1)
        DateEnd = NoWeekEnd(DateBegin.AddDays(Duracion))
        Table.Rows.Add("ENTREGA EN SITIO", DateBegin, DateEnd)
        date1 = DateEnd

        PonerCaracteresNegritas()

    End Sub
    Private Sub btncerrarform1_Click(sender As Object, e As EventArgs)
        Me.Close()
    End Sub
    Private Sub btncerrarform1_Click_1(sender As Object, e As EventArgs) Handles btncerrarform1.Click
        Me.Close()
    End Sub
#End Region
#Region "IMPRESIÓN"
    Dim ArchivoPrimeroParaImpresion As String = CurDir() & "\DocPrimero.docx"
    Private Sub BImprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BImprimir.Click
        GoToWord()
    End Sub
    Private Sub GoToWord()
        Dim WAPP As New Microsoft.Office.Interop.Word.Application
        Dim UnDoc As New Microsoft.Office.Interop.Word.Document
        Dim Table As Microsoft.Office.Interop.Word.Table

        ' Trabajar con  un duplicado (FImpresion) del archivo para no cambiar el original
        Dim Punto As Integer
        Punto = ArchivoPrimeroParaImpresion.LastIndexOf(".")
        Dim FImpresion As String = ArchivoPrimeroParaImpresion.Substring(0, Punto) & "_" & Trim(Now.Millisecond) & ".Docx"
        System.IO.File.Copy(ArchivoPrimeroParaImpresion, FImpresion)

        ' Abrir el archivo FImpresion y tratar
        UnDoc = WAPP.Documents.Open(FImpresion)
        WAPP.Visible = True

        ' ***  Llenar el documento
        Table = UnDoc.Tables(1)
        Table.Cell(1, 1).Range.Text = "EQUIPMENT " & NameOT.Text

        Table = UnDoc.Tables(2)
        Table.Cell(1, 1).Range.Text = "CLIENT: " & Client.Text

        ' Un Bookmarks es designado por su nombre
        'UnDoc.Bookmarks("MiBookMarks01").Range.Text = "El marca no es hecho para esta, mejor son los campos de fusión y las tablas"

        For F As Integer = 1 To UnDoc.Fields.Count
            UnDoc.Fields(F).Result.Text = "Texto para MiCampos" & String.Format("{0:00}", F)
        Next

        Table = UnDoc.Tables(3)

        ' Escribir y formatear los titulos de las columnas
        For C As Integer = 0 To DataGridView1.ColumnCount - 1
            Table.Cell(1, C + 1).Range.Text = DataGridView1.Columns(C).HeaderText
            Table.Cell(1, C + 1).Range.Bold = True
        Next

        ' Escribir las lineas de la tabla
        For R As Integer = 0 To DataGridView1.RowCount - 2
            For C As Integer = 0 To DataGridView1.ColumnCount - 1
                If C = 1 Or C = 2 Then        ' 1 y 2 son los indicios de las columnas  "Fecha"
                    Try
                        Table.Cell(R + 2, C + 1).Range.Text = CType(DataGridView1.Item(C, R).Value.ToString, DateTime).ToShortDateString
                    Catch
                    End Try
                Else
                    Table.Cell(R + 2, C + 1).Range.Text = DataGridView1.Item(C, R).Value.ToString
                End If

            Next
            If R < DataGridView1.RowCount - 2 Then
                Table.Rows.Add()
            End If

            Table.Cell(R + 2, 1).Select() 'FORMATO BOLD
            If DataGridView1.Item(1, R).Value.ToString = String.Empty Then
                WAPP.Selection.Font.Bold = True
            Else
                WAPP.Selection.Font.Bold = False
            End If
        Next

        ' Con el Preview, es posible modificar un detalle y eligar la impresora
        WAPP.PrintPreview = True
        WAPP.ShowMe()

    End Sub

    Private Sub BVerTablaDuracion_Click(sender As Object, e As EventArgs) Handles BVerTablaDuracion.Click
        FormPressureVesselsTables.Visible = True
        FormPressureVesselsTables.BringToFront()
    End Sub

    Private Sub FormPressureVessels_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
        FormPressureVesselsTables.Close()
    End Sub

    Private Sub BTestarBuscaDuracion_Click(sender As Object, e As EventArgs) Handles BTestarBuscaDuracion.Click
        Dim UnaDuracion As Integer
        UnaDuracion = DarMeDuracionParaEsteCombinacion()

        ' si el valor es -1, este es que este combinacion no tiene de valor veridad 
        ' si el valor es 0, este es que este combinacion no encontrada en la table (este caso nunca existe, sobre malo archivo)

        MessageBox.Show(UnaDuracion)
    End Sub
#End Region
End Class
