VERSION 5.00
Object = "{86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCT2.OCX"
Object = "{F0D2F211-CCB0-11D0-A316-00AA00688B10}#1.0#0"; "MSDATLST.OCX"
Object = "{CDE57A40-8B86-11D0-B3C6-00A0C90AEA82}#1.0#0"; "MSDATGRD.OCX"
Object = "{00025600-0000-0000-C000-000000000046}#5.2#0"; "crystl32.ocx"
Object = "{69F9D01E-F1DE-11D4-9536-002018603DA2}#7.0#0"; "ControlNumber.ocx"
Begin VB.Form FSalidas 
   BorderStyle     =   1  'Fixed Single
   Caption         =   "Salidas (10.020.00)"
   ClientHeight    =   6750
   ClientLeft      =   45
   ClientTop       =   330
   ClientWidth     =   10575
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   MDIChild        =   -1  'True
   ScaleHeight     =   6750
   ScaleWidth      =   10575
   Begin VB.CommandButton cmdImprimeDoc 
      Caption         =   "IMPRIMIR"
      Enabled         =   0   'False
      Height          =   855
      Left            =   9240
      Picture         =   "1002000.frx":0000
      Style           =   1  'Graphical
      TabIndex        =   54
      ToolTipText     =   "Imprimir Documento"
      Top             =   3360
      Width           =   1095
   End
   Begin VB.CommandButton cmdNuevoDoc 
      Caption         =   "NUEVO"
      Height          =   375
      Left            =   9240
      TabIndex        =   60
      Top             =   3360
      Visible         =   0   'False
      Width           =   495
   End
   Begin VB.CommandButton cmdCancelaDoc 
      Caption         =   "CANCELAR"
      Height          =   375
      Left            =   9240
      TabIndex        =   59
      Top             =   3720
      Visible         =   0   'False
      Width           =   495
   End
   Begin VB.CommandButton cmdAnulaDoc 
      Caption         =   "ANULAR"
      Height          =   855
      Left            =   9240
      Picture         =   "1002000.frx":030A
      Style           =   1  'Graphical
      TabIndex        =   58
      ToolTipText     =   "Anular Documento"
      Top             =   5520
      Width           =   1095
   End
   Begin VB.CommandButton cmdSalir 
      Caption         =   "SALIR"
      Height          =   375
      Left            =   9240
      TabIndex        =   57
      Top             =   6000
      Visible         =   0   'False
      Width           =   375
   End
   Begin VB.CommandButton cmdEmiteDoc 
      Caption         =   "EMITIR"
      Height          =   855
      Left            =   9240
      Picture         =   "1002000.frx":0614
      Style           =   1  'Graphical
      TabIndex        =   55
      ToolTipText     =   "Emitir Documento"
      Top             =   4440
      Width           =   1095
   End
   Begin VB.Frame fraDatosCab 
      Appearance      =   0  'Flat
      BackColor       =   &H80000004&
      Caption         =   "Datos Generales"
      BeginProperty Font 
         Name            =   "MS Sans Serif"
         Size            =   8.25
         Charset         =   0
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H80000008&
      Height          =   2535
      Left            =   120
      TabIndex        =   39
      Top             =   480
      Width           =   10335
      Begin VB.CommandButton cmdBusAlmacenDestino 
         Enabled         =   0   'False
         Height          =   375
         Left            =   9600
         MouseIcon       =   "1002000.frx":091E
         MousePointer    =   99  'Custom
         Picture         =   "1002000.frx":0A70
         Style           =   1  'Graphical
         TabIndex        =   16
         ToolTipText     =   "Buscar Almacén"
         Top             =   1620
         Width           =   375
      End
      Begin VB.CommandButton cmdBusAlmacen 
         Height          =   375
         Left            =   4680
         MouseIcon       =   "1002000.frx":0FA2
         MousePointer    =   99  'Custom
         Picture         =   "1002000.frx":10F4
         Style           =   1  'Graphical
         TabIndex        =   3
         ToolTipText     =   "Buscar Almacén"
         Top             =   780
         Width           =   375
      End
      Begin VB.CommandButton cmdBusMoneda 
         Height          =   375
         Left            =   4680
         MouseIcon       =   "1002000.frx":1626
         MousePointer    =   99  'Custom
         Picture         =   "1002000.frx":1778
         Style           =   1  'Graphical
         TabIndex        =   9
         ToolTipText     =   "Buscar Tipo de Moneda"
         Top             =   2040
         Width           =   375
      End
      Begin VB.CommandButton cmdBusProveedor 
         Height          =   375
         Left            =   4680
         MouseIcon       =   "1002000.frx":1CAA
         MousePointer    =   99  'Custom
         Picture         =   "1002000.frx":1DFC
         Style           =   1  'Graphical
         TabIndex        =   5
         ToolTipText     =   "Buscar Proveedor"
         Top             =   1200
         Width           =   375
      End
      Begin VB.CommandButton cmdBusTipoDoc 
         Height          =   375
         Left            =   4680
         MouseIcon       =   "1002000.frx":232E
         MousePointer    =   99  'Custom
         Picture         =   "1002000.frx":2480
         Style           =   1  'Graphical
         TabIndex        =   7
         ToolTipText     =   "Buscar Tipo de Documento"
         Top             =   1620
         Width           =   375
      End
      Begin VB.Frame fraFlag 
         Height          =   1095
         Left            =   8040
         TabIndex        =   40
         Top             =   240
         Width           =   2055
         Begin VB.CheckBox chkDesensamble 
            Alignment       =   1  'Right Justify
            Caption         =   "Desensamble"
            Height          =   255
            Left            =   120
            TabIndex        =   13
            Top             =   240
            Width           =   1335
         End
         Begin VB.CheckBox chkEmitido 
            Alignment       =   1  'Right Justify
            Caption         =   "Emitido        "
            Enabled         =   0   'False
            Height          =   195
            Left            =   120
            TabIndex        =   14
            Top             =   720
            Width           =   1335
         End
      End
      Begin VB.CommandButton cmdBusTipoIng 
         Height          =   375
         Left            =   4680
         MouseIcon       =   "1002000.frx":29B2
         MousePointer    =   99  'Custom
         Picture         =   "1002000.frx":2B04
         Style           =   1  'Graphical
         TabIndex        =   1
         ToolTipText     =   "Buscar Tipo de Salida"
         Top             =   360
         Width           =   375
      End
      Begin VB.TextBox txtNumeroDoc 
         Height          =   285
         Left            =   6360
         MaxLength       =   15
         TabIndex        =   10
         Top             =   360
         Width           =   1455
      End
      Begin MSDataListLib.DataCombo dtcTipoSalida 
         Height          =   315
         Left            =   1440
         TabIndex        =   0
         Top             =   360
         Width           =   3135
         _ExtentX        =   5530
         _ExtentY        =   556
         _Version        =   393216
         Style           =   2
         Text            =   ""
      End
      Begin MSComCtl2.DTPicker dtpFecha 
         Height          =   315
         Left            =   6360
         TabIndex        =   11
         Top             =   840
         Width           =   1245
         _ExtentX        =   2196
         _ExtentY        =   556
         _Version        =   393216
         CustomFormat    =   "dd/MM/yyyy"
         Format          =   23724035
         CurrentDate     =   36480
      End
      Begin MSDataListLib.DataCombo dtcAlmacen 
         Height          =   315
         Left            =   1440
         TabIndex        =   2
         Top             =   780
         Width           =   3135
         _ExtentX        =   5530
         _ExtentY        =   556
         _Version        =   393216
         Style           =   2
         Text            =   ""
      End
      Begin MSDataListLib.DataCombo dtcProveedor 
         Height          =   315
         Left            =   1440
         TabIndex        =   4
         Top             =   1200
         Width           =   3135
         _ExtentX        =   5530
         _ExtentY        =   556
         _Version        =   393216
         Style           =   2
         Text            =   ""
      End
      Begin MSDataListLib.DataCombo dtcTipoDoc 
         Height          =   315
         Left            =   1440
         TabIndex        =   6
         Top             =   1620
         Width           =   3135
         _ExtentX        =   5530
         _ExtentY        =   556
         _Version        =   393216
         IntegralHeight  =   0   'False
         Style           =   2
         Text            =   ""
      End
      Begin MSDataListLib.DataCombo dtcMoneda 
         Height          =   315
         Left            =   1440
         TabIndex        =   8
         Top             =   2040
         Width           =   3135
         _ExtentX        =   5530
         _ExtentY        =   556
         _Version        =   393216
         Style           =   2
         Text            =   ""
      End
      Begin MSDataListLib.DataCombo dtcAlmacenDestino 
         Height          =   315
         Left            =   6360
         TabIndex        =   15
         Top             =   1620
         Width           =   3135
         _ExtentX        =   5530
         _ExtentY        =   556
         _Version        =   393216
         Enabled         =   0   'False
         Style           =   2
         Text            =   ""
      End
      Begin MSComCtl2.DTPicker dtpFechaProceso 
         Height          =   315
         Left            =   6360
         TabIndex        =   12
         Top             =   1200
         Width           =   1245
         _ExtentX        =   2196
         _ExtentY        =   556
         _Version        =   393216
         Enabled         =   0   'False
         Format          =   23724033
         CurrentDate     =   37550
      End
      Begin VB.Label lblFechaProc 
         Caption         =   "Fecha Proc."
         Height          =   255
         Left            =   5400
         TabIndex        =   53
         Top             =   1200
         Width           =   975
      End
      Begin VB.Label lblAlmacenDestino 
         Caption         =   "Almacen Destino"
         Height          =   435
         Left            =   5400
         TabIndex        =   51
         Top             =   1620
         Width           =   765
      End
      Begin VB.Label lblAlmacen 
         AutoSize        =   -1  'True
         Caption         =   "Almacen"
         Height          =   195
         Left            =   240
         TabIndex        =   47
         Top             =   780
         Width           =   615
      End
      Begin VB.Label lblTipoSalida 
         AutoSize        =   -1  'True
         Caption         =   "Tipo Salida"
         Height          =   195
         Left            =   240
         TabIndex        =   46
         Top             =   360
         Width           =   795
      End
      Begin VB.Label lblMoneda 
         AutoSize        =   -1  'True
         Caption         =   "Moneda"
         Height          =   195
         Left            =   240
         TabIndex        =   45
         Top             =   2040
         Width           =   585
      End
      Begin VB.Label lblFecha 
         AutoSize        =   -1  'True
         Caption         =   "Fecha Doc."
         Height          =   195
         Left            =   5400
         TabIndex        =   44
         Top             =   840
         Width           =   840
      End
      Begin VB.Label lblNroDoc 
         AutoSize        =   -1  'True
         Caption         =   "Nª Doc."
         Height          =   195
         Left            =   5400
         TabIndex        =   43
         Top             =   360
         Width           =   570
      End
      Begin VB.Label lblProveedor 
         AutoSize        =   -1  'True
         Caption         =   "Proveedor"
         Height          =   195
         Left            =   240
         TabIndex        =   42
         Top             =   1200
         Width           =   735
      End
      Begin VB.Label lblTipoDoc 
         AutoSize        =   -1  'True
         Caption         =   "Tipo Doc."
         Height          =   195
         Left            =   240
         TabIndex        =   41
         Top             =   1620
         Width           =   705
      End
   End
   Begin VB.Frame fraTotales 
      Appearance      =   0  'Flat
      BackColor       =   &H80000004&
      ForeColor       =   &H80000008&
      Height          =   735
      Left            =   120
      TabIndex        =   31
      Top             =   5880
      Width           =   8895
      Begin VB.Label lblValorVenta 
         AutoSize        =   -1  'True
         Caption         =   "V. Venta"
         BeginProperty Font 
            Name            =   "MS Sans Serif"
            Size            =   9.75
            Charset         =   0
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Height          =   240
         Left            =   240
         TabIndex        =   38
         Top             =   285
         Width           =   885
      End
      Begin VB.Label lblIGV 
         AutoSize        =   -1  'True
         Caption         =   "I.G.V."
         BeginProperty Font 
            Name            =   "MS Sans Serif"
            Size            =   9.75
            Charset         =   0
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Height          =   240
         Left            =   3480
         TabIndex        =   37
         Top             =   285
         Width           =   570
      End
      Begin VB.Label lblMIGV 
         Alignment       =   1  'Right Justify
         Appearance      =   0  'Flat
         BackColor       =   &H8000000B&
         BorderStyle     =   1  'Fixed Single
         Caption         =   "0"
         BeginProperty Font 
            Name            =   "MS Sans Serif"
            Size            =   9.75
            Charset         =   0
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H80000008&
         Height          =   375
         Left            =   4200
         TabIndex        =   36
         Top             =   240
         Width           =   1455
      End
      Begin VB.Label lblTot 
         AutoSize        =   -1  'True
         Caption         =   "Total"
         BeginProperty Font 
            Name            =   "MS Sans Serif"
            Size            =   9.75
            Charset         =   0
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Height          =   240
         Left            =   6240
         TabIndex        =   35
         Top             =   285
         Width           =   555
      End
      Begin VB.Label lblTotal 
         Alignment       =   1  'Right Justify
         Appearance      =   0  'Flat
         BackColor       =   &H8000000B&
         BorderStyle     =   1  'Fixed Single
         Caption         =   "0"
         BeginProperty Font 
            Name            =   "MS Sans Serif"
            Size            =   9.75
            Charset         =   0
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H80000008&
         Height          =   375
         Left            =   7200
         TabIndex        =   34
         Top             =   240
         Width           =   1455
      End
      Begin VB.Label lblSimbolo 
         Alignment       =   2  'Center
         AutoSize        =   -1  'True
         Caption         =   "S/."
         BeginProperty Font 
            Name            =   "MS Sans Serif"
            Size            =   9.75
            Charset         =   0
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Height          =   240
         Left            =   6930
         TabIndex        =   33
         Top             =   285
         Visible         =   0   'False
         Width           =   315
      End
      Begin VB.Label lblVenta 
         Alignment       =   1  'Right Justify
         Appearance      =   0  'Flat
         BackColor       =   &H8000000B&
         BorderStyle     =   1  'Fixed Single
         Caption         =   "0"
         BeginProperty Font 
            Name            =   "MS Sans Serif"
            Size            =   9.75
            Charset         =   0
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H80000008&
         Height          =   375
         Left            =   1320
         TabIndex        =   32
         Top             =   240
         Width           =   1455
      End
   End
   Begin VB.Frame fraDatosItem 
      Appearance      =   0  'Flat
      BackColor       =   &H80000004&
      ForeColor       =   &H80000008&
      Height          =   1095
      Left            =   120
      TabIndex        =   23
      Top             =   4800
      Width           =   8895
      Begin VB.CommandButton cmdBuscaArticulo 
         Height          =   375
         Left            =   3240
         Picture         =   "1002000.frx":3036
         Style           =   1  'Graphical
         TabIndex        =   19
         TabStop         =   0   'False
         ToolTipText     =   "Buscar Artículo"
         Top             =   240
         Width           =   375
      End
      Begin VB.CommandButton cmdActualizaItem 
         Caption         =   "Actualizar"
         Height          =   495
         Left            =   7680
         Picture         =   "1002000.frx":3568
         Style           =   1  'Graphical
         TabIndex        =   26
         Top             =   600
         Visible         =   0   'False
         Width           =   855
      End
      Begin VB.CommandButton cmdEliminarItem 
         Caption         =   "Eliminar"
         Height          =   495
         Left            =   6840
         Picture         =   "1002000.frx":3A9A
         Style           =   1  'Graphical
         TabIndex        =   25
         Top             =   600
         Visible         =   0   'False
         Width           =   855
      End
      Begin VB.CommandButton cmdNuevoItem 
         Caption         =   "Nuevo"
         Height          =   495
         Left            =   6000
         Picture         =   "1002000.frx":3B9C
         Style           =   1  'Graphical
         TabIndex        =   24
         Top             =   600
         Visible         =   0   'False
         Width           =   855
      End
      Begin VB.TextBox txtArticulo 
         Height          =   285
         Left            =   1080
         TabIndex        =   18
         Top             =   240
         Width           =   2055
      End
      Begin MiControl.CtrlNumber ctnCosto 
         Height          =   375
         Left            =   3720
         TabIndex        =   21
         Top             =   645
         Width           =   1680
         _ExtentX        =   2963
         _ExtentY        =   661
         BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
            Name            =   "MS Sans Serif"
            Size            =   8.25
            Charset         =   0
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
      End
      Begin MiControl.CtrlNumber ctnUnidades 
         Height          =   375
         Left            =   1080
         TabIndex        =   20
         Top             =   645
         Width           =   1575
         _ExtentX        =   2778
         _ExtentY        =   661
         BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
            Name            =   "MS Sans Serif"
            Size            =   8.25
            Charset         =   0
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
      End
      Begin VB.Label lblCosto 
         Caption         =   "Costo"
         Height          =   255
         Left            =   3120
         TabIndex        =   30
         Top             =   645
         Width           =   615
      End
      Begin VB.Label lblUnidades 
         AutoSize        =   -1  'True
         Caption         =   "Cantidad"
         Height          =   195
         Left            =   240
         TabIndex        =   29
         Top             =   645
         Width           =   630
      End
      Begin VB.Label lblArticulo 
         Caption         =   "Artículo"
         Height          =   255
         Left            =   240
         TabIndex        =   28
         Top             =   240
         Width           =   615
      End
      Begin VB.Label lblDescripcion 
         BorderStyle     =   1  'Fixed Single
         Height          =   285
         Left            =   3720
         TabIndex        =   27
         Top             =   240
         Width           =   4335
      End
   End
   Begin VB.CommandButton cmdBuscar 
      Height          =   375
      Left            =   5880
      MouseIcon       =   "1002000.frx":40CE
      MousePointer    =   99  'Custom
      Picture         =   "1002000.frx":4220
      Style           =   1  'Graphical
      TabIndex        =   22
      ToolTipText     =   "Buscar Documento"
      Top             =   120
      Width           =   375
   End
   Begin Crystal.CrystalReport crSalidas 
      Left            =   960
      Top             =   0
      _ExtentX        =   741
      _ExtentY        =   741
      _Version        =   348160
      ReportFileName  =   "C:\Fuentes\Inventarios\Report\Ingreso.rpt"
      WindowState     =   2
      PrintFileLinesPerPage=   60
   End
   Begin MSDataGridLib.DataGrid DBDetalle 
      Height          =   1575
      Left            =   120
      TabIndex        =   17
      Top             =   3120
      Width           =   8895
      _ExtentX        =   15690
      _ExtentY        =   2778
      _Version        =   393216
      HeadLines       =   1
      RowHeight       =   15
      BeginProperty HeadFont {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
         Name            =   "MS Sans Serif"
         Size            =   8.25
         Charset         =   0
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
         Name            =   "MS Sans Serif"
         Size            =   8.25
         Charset         =   0
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Caption         =   "[Enter]_Modificar_[F3]_Eliminar Registro"
      ColumnCount     =   2
      BeginProperty Column00 
         DataField       =   ""
         Caption         =   ""
         BeginProperty DataFormat {6D835690-900B-11D0-9484-00A0C91110ED} 
            Type            =   0
            Format          =   ""
            HaveTrueFalseNull=   0
            FirstDayOfWeek  =   0
            FirstWeekOfYear =   0
            LCID            =   10250
            SubFormatType   =   0
         EndProperty
      EndProperty
      BeginProperty Column01 
         DataField       =   ""
         Caption         =   ""
         BeginProperty DataFormat {6D835690-900B-11D0-9484-00A0C91110ED} 
            Type            =   0
            Format          =   ""
            HaveTrueFalseNull=   0
            FirstDayOfWeek  =   0
            FirstWeekOfYear =   0
            LCID            =   10250
            SubFormatType   =   0
         EndProperty
      EndProperty
      SplitCount      =   1
      BeginProperty Split0 
         BeginProperty Column00 
         EndProperty
         BeginProperty Column01 
         EndProperty
      EndProperty
   End
   Begin VB.CommandButton cmdGrabaDoc 
      Caption         =   "GRABAR"
      Height          =   375
      Left            =   9240
      Picture         =   "1002000.frx":4752
      TabIndex        =   56
      Top             =   4440
      Visible         =   0   'False
      Width           =   495
   End
   Begin VB.Label lblEstado 
      AutoSize        =   -1  'True
      BeginProperty Font 
         Name            =   "MS Sans Serif"
         Size            =   12
         Charset         =   0
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   300
      Left            =   6360
      TabIndex        =   52
      Top             =   120
      Width           =   90
   End
   Begin VB.Label lblEtiqueta 
      Caption         =   "NUEVA SALIDA"
      BeginProperty Font 
         Name            =   "MS Sans Serif"
         Size            =   9.75
         Charset         =   0
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H8000000D&
      Height          =   255
      Left            =   4080
      TabIndex        =   48
      Top             =   240
      Width           =   1935
   End
   Begin VB.Label lblNroSalida 
      Caption         =   "Nro. Salida :"
      BeginProperty Font 
         Name            =   "MS Sans Serif"
         Size            =   12
         Charset         =   0
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H8000000D&
      Height          =   375
      Left            =   2280
      TabIndex        =   50
      Top             =   120
      Width           =   1815
   End
   Begin VB.Label lblNumero 
      Alignment       =   2  'Center
      BorderStyle     =   1  'Fixed Single
      BeginProperty Font 
         Name            =   "MS Sans Serif"
         Size            =   8.25
         Charset         =   0
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   285
      Left            =   4200
      TabIndex        =   49
      Top             =   180
      Width           =   1575
   End
End
Attribute VB_Name = "FSalidas"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
' Programador: Edgar Cancho Ruiz
' Empresa Texaco
' Modulo de Salidas de Inventario
' Fecha : 16/09/2002

Option Explicit

'************************************
' Variables que almacenan la ubicacion
' de los Items en los Datacombos cuando
' se cambia de Screen

'Dim MstrTipoMovimiento As String
'Dim MstrAlmacen As String
'Dim MstrProveedor As String
'Dim MstrTipoDoc As String
'Dim MstrMoneda As String
'Dim MstrArticulo As String

''*************************************
'Variables para el Control de la Barra General
 Public pb_editar As Boolean
 Public pb_agregar As Boolean
 Public pb_primerregistro As Boolean
 Public pb_ultimoregistro As Boolean
 Public pbderecho_agregar As Boolean
 Public pbderecho_consultar As Boolean
 Public pbderecho_editar As Boolean
 Public pbderecho_borrar As Boolean
 Public pbderecho_imprimir As Boolean
 Public pbderecho_anular As Boolean
 Public pbderecho_emitir As Boolean
 Public pb_tiposcreen As String
'*******************************************************************************************************************
' Variables para las ayudas
Public GrecibeUbicacion As BookmarkEnum
Public GrecibeColumnaID As String
Public GrecibeColumnaOpcional As String 'columna para codigo de compra
Public GrecibeColumnaOpcional2 As String 'columna para costo
'*************************************
' Objetos para cargar las ayudas
Private objTipoSalida As DB_INV_MANTENIMIENTOS.C_TIPOMOVIMIENTO
Private objAlmacen As DB_INV_MANTENIMIENTOS.C_ALMACEN
Private objProveedor As DB_INV_MANTENIMIENTOS.C_PROVEEDOR
Private objDocumento As DB_MA_MANTENIMIENTOS.C_DOCUMENTO
Private objMoneda As DB_MA_MANTENIMIENTOS.C_MONEDA
'*******************************************************************************

Dim objCorrelativo As DB_CORRELATIVO.C_Correlativos
Dim objMovimiento As DB_INV_MOVIMIENTOS.C_MOVIMIENTOS

Dim lngCorrelativo As Long 'correlativo por usuario, que se almacenara en cada insert en temporal
Dim strNumeroMovimiento As String 'almacenara el correlativo del movimiento obtenido de In_Setup
Dim lngSecuencia As Long ' guardara el número de Item del detalle

Dim dblTipoCambio As Double 'Almacena el Tipo de Cambio
Dim strOperador_de_Cambio As String 'Almacena la cadena del operador para tipo de cambio
Dim dblValorVenta As Double
Dim dblIgvAcumulado As Double

Dim blnActualizandoItem As Boolean ' flag para controlar el Salida o la modificación de un Item
Dim blnEditando As Boolean ' flag para controlar si se esta editando un documento
Dim intCancelar As Integer
Dim blnDatosOK As Boolean


Private Sub cmdActualizaItem_Click()
    
    Call objMovimiento.ActualizaTmpIntraItem(txtArticulo.Text, DBDetalle.Columns(0).Text, _
                                         CDbl(ctnUnidades.Text), CDbl(ctnCosto.Text), _
                                         lngCorrelativo, dtcMoneda.BoundText)
                                         
    Call CargaGrid2(dtcProveedor.BoundText, lngCorrelativo, dtcMoneda.BoundText)
    Call LimpiaCajaDetalle
    'Call PonerDatosGrig
    Call ActualizaPie
    blnActualizandoItem = False
    cmdBuscaArticulo.Enabled = True
    txtArticulo.Enabled = True
    txtArticulo.SetFocus
End Sub

Private Sub cmdAnulaDoc_Click()
On Error GoTo errhandler

    If lblNumero.Caption <> Empty Then
        If chkEmitido.Value = 1 Then
            MsgBox "No se puede Anular un Documento ya Emitido", vbExclamation, "Anular"
            Exit Sub
        End If
        
        If lblEstado.Caption = "ANULADO" Then
            MsgBox "El documento ya ha sido anulado", vbExclamation, "Anular"
            Exit Sub
        End If
        
        strNumeroMovimiento = lblNumero.Caption
        If MsgBox("Desea Anular el Documento? ", vbQuestion + vbYesNo, "Coonfirmar Anulación") = vbNo Then
            Exit Sub
        Else
            objMovimiento.AnularDocumento dtcAlmacen.BoundText, strNumeroMovimiento
            lblEstado.Caption = "ANULADO" ' SE ACTUALIZA PANTALLA CON ESTADO DEL DOCUMENTO
        End If
        
        
        'PREGUNTO SI DESEA IMPRIMIR EL DOCUMENTO
        If MsgBox("Documento Anulado Correctamente.Desea Imprimir? ", vbQuestion + vbYesNo, "Anulación") = vbNo Then

            GoTo SALTO
        Else
            Call cmdImprimeDoc_Click
        End If
SALTO:
        'Call Limpiar
        Call HabilitaCampos(False)
        Call HabilitaBotones(True)
        Call CamposValorizados(True)
        Exit Sub
    Else
        MsgBox "Seleccione un Documento que desee Anular", vbExclamation, "Anular"
    End If
    
Exit Sub

errhandler:
    MsgBox MensajedeError(Err.Number, Err.Description), vbDefaultButton1 + vbCritical, "Advertencia"
         
End Sub

Private Sub cmdBusAlmacen_Click()
    'Lineas que llaman al Formulario de Búsqueda
    
    Dim ArrayBusqueda(1 To 2, 1 To 3) As Variant
    ArrayBusqueda(1, 1) = "Siteid"
    ArrayBusqueda(1, 2) = "Código "
    ArrayBusqueda(1, 3) = 1000
    ArrayBusqueda(2, 1) = "Name"
    ArrayBusqueda(2, 2) = "Descripción "
    ArrayBusqueda(2, 3) = 4000
      
    FBusquedasInv.GObtenerRegistros objAlmacen.ListarAlmacenesPorStatus(1), ArrayBusqueda, 2, 2, 7230, 5970, 1700, (Screen.Width - FBusquedasInv.Width) / 2
    FBusquedasInv.Show vbModal
    
    If GrecibeUbicacion <> 0 Then
        dtcAlmacen.BoundText = GrecibeColumnaID
    End If
End Sub

Private Sub cmdBusAlmacenDestino_Click()
    'Lineas que llaman al Formulario de Búsqueda
    
    Dim ArrayBusqueda(1 To 2, 1 To 3) As Variant
    ArrayBusqueda(1, 1) = "Siteid"
    ArrayBusqueda(1, 2) = "Código "
    ArrayBusqueda(1, 3) = 1000
    ArrayBusqueda(2, 1) = "Name"
    ArrayBusqueda(2, 2) = "Descripción "
    ArrayBusqueda(2, 3) = 4000
      
    FBusquedasInv.GObtenerRegistros objAlmacen.ListarAlmacenesAyuda, ArrayBusqueda, 2, 2, 7230, 5970, 1700, (Screen.Width - FBusquedasInv.Width) / 2
    FBusquedasInv.Show vbModal
    
    If GrecibeUbicacion <> 0 Then
        dtcAlmacenDestino.BoundText = GrecibeColumnaID
    End If
End Sub

Private Sub cmdBuscaArticulo_Click()
    'Lineas que llaman al Formulario de Búsqueda
    If ExisteTipoCambio = False Then
        Exit Sub
    End If
     
     GrecibeUbicacion = 0
     GrecibeColumnaID = Empty
     GrecibeColumnaOpcional = Empty
     
     Dim ArrayBusqueda(1 To 5, 1 To 3) As Variant
     Dim blnExiste As Boolean
     ArrayBusqueda(1, 1) = "Invtidsku"
     ArrayBusqueda(1, 2) = "Código "
     ArrayBusqueda(1, 3) = 1000
     ArrayBusqueda(2, 1) = "Descr"
     ArrayBusqueda(2, 2) = "Descripción "
     ArrayBusqueda(2, 3) = 4000
     ArrayBusqueda(3, 1) = "QTYAVAIL"
     ArrayBusqueda(3, 2) = "Stock"
     ArrayBusqueda(3, 3) = 1000
     ArrayBusqueda(4, 1) = "Cd.Compra"
     ArrayBusqueda(4, 2) = "Cod_Compra"
     ArrayBusqueda(4, 3) = 4000
     ArrayBusqueda(5, 1) = "Costo"
     ArrayBusqueda(5, 2) = "Costo"
     ArrayBusqueda(5, 3) = 4000
         
     FBusquedasInv.GObtenerRegistros objProveedor.ListarArticulosPorProveedor(dtcProveedor.BoundText, dtcAlmacen.BoundText, chkDesensamble.Value), ArrayBusqueda, 3, 2, 7230, 5970, 1700, (Screen.Width - FBusquedasInv.Width) / 2
     FBusquedasInv.Show vbModal
     
     If GrecibeUbicacion <> 0 Then
         txtArticulo.Text = GrecibeColumnaID
         lblDescripcion.Caption = GrecibeColumnaOpcional
         ctnCosto.Text = GrecibeColumnaOpcional2
         blnExiste = objMovimiento.ExisteArticulo(Trim(txtArticulo.Text), lngCorrelativo)
         If blnExiste Then
            LimpiaCajaDetalle
            MsgBox "Código de articulo ya registrado", vbExclamation, "Mensaje"
            Exit Sub
         End If
         txtArticulo_KeyPress (13)
         'ctnUnidades.SetFocus
     End If

End Sub

Private Sub cmdBuscar_Click()
 FBuscarMovimiento.Show vbModal
End Sub

Private Sub cmdBusMoneda_Click()
    'Lineas que llaman al Formulario de Búsqueda
     
     Dim ArrayBusqueda(1 To 2, 1 To 3) As Variant
     ArrayBusqueda(1, 1) = "CuryId"
     ArrayBusqueda(1, 2) = "Código "
     ArrayBusqueda(1, 3) = 1000
     ArrayBusqueda(2, 1) = "Descr"
     ArrayBusqueda(2, 2) = "Descripción "
     ArrayBusqueda(2, 3) = 4000
       
     FBusquedasInv.GObtenerRegistros objMoneda.ListarMonedas, ArrayBusqueda, 2, 2, 7230, 5970, 1700, (Screen.Width - FBusquedasInv.Width) / 2
     FBusquedasInv.Show vbModal
     
     If GrecibeUbicacion <> 0 Then
         dtcMoneda.BoundText = GrecibeColumnaID
     End If
End Sub

Private Sub cmdBusProveedor_Click()
    'Lineas que llaman al Formulario de Búsqueda
    
    Dim ArrayBusqueda(1 To 2, 1 To 3) As Variant
    ArrayBusqueda(1, 1) = "Vendidss"
    ArrayBusqueda(1, 2) = "Código "
    ArrayBusqueda(1, 3) = 1500
    ArrayBusqueda(2, 1) = "Descr"
    ArrayBusqueda(2, 2) = "Descripción "
    ArrayBusqueda(2, 3) = 4000
      
    FBusquedasInv.GObtenerRegistros objProveedor.ListarProveedoresAyuda, ArrayBusqueda, 2, 2, 7230, 5970, 1700, (Screen.Width - FBusquedasInv.Width) / 2
    FBusquedasInv.Show vbModal
    
    If GrecibeUbicacion <> 0 Then
        dtcProveedor.BoundText = GrecibeColumnaID
    End If
End Sub

Private Sub cmdBusTipoDoc_Click()
  'Lineas que llaman al Formulario de Búsqueda
  
    Dim ArrayBusqueda(1 To 2, 1 To 3) As Variant
    ArrayBusqueda(1, 1) = "DocTypeid"
    ArrayBusqueda(1, 2) = "Código "
    ArrayBusqueda(1, 3) = 1000
    ArrayBusqueda(2, 1) = "Descr"
    ArrayBusqueda(2, 2) = "Descripción "
    ArrayBusqueda(2, 3) = 4000
    
    FBusquedasInv.GObtenerRegistros objDocumento.ListarDocumentos, ArrayBusqueda, 2, 2, 7230, 5970, 1700, (Screen.Width - FBusquedasInv.Width) / 2
    FBusquedasInv.Show vbModal
  
    If GrecibeUbicacion <> 0 Then
        dtcTipoDoc.BoundText = GrecibeColumnaID
    End If
End Sub

Private Sub cmdBusTipoIng_Click()
  'Lineas que llaman al Formulario de Búsqueda
    Dim ArrayBusqueda(1 To 2, 1 To 3) As Variant
    ArrayBusqueda(1, 1) = "TypeDocid"
    ArrayBusqueda(1, 2) = "Código "
    ArrayBusqueda(1, 3) = 1000
    ArrayBusqueda(2, 1) = "descr"
    ArrayBusqueda(2, 2) = "Descripción "
    ArrayBusqueda(2, 3) = 4000
    
    FBusquedasInv.GObtenerRegistros objTipoSalida.ListarPorTipoMovimiento("0"), ArrayBusqueda, 2, 2, 7230, 5970, 1700, (Screen.Width - FBusquedasInv.Width) / 2
    FBusquedasInv.Show vbModal
  
    If GrecibeUbicacion <> 0 Then
        dtcTipoSalida.BoundText = GrecibeColumnaID
    End If
    
    Call dtcTipoIngreso_Click(0)
    
End Sub

Private Sub cmdCancelaDoc_Click()
    If MsgBox("Está seguro de Cancelar el Documento. ", vbQuestion + vbYesNo, "Cancelar") = vbNo Then
        blnEditando = True
        Exit Sub
    Else
        blnEditando = False
        
        Call objMovimiento.EliminarTodoEnTmpIntraItem(lngCorrelativo)
        Call Limpiar
        Call HabilitaCampos(False)
        Call HabilitaBotones(True)
        Call CamposValorizados(True)
    End If
End Sub

Private Sub cmdEliminarItem_Click()
    If MsgBox("Está seguro de Eliminar. ", vbQuestion + vbYesNo, "Eliminar") = vbNo Then
        Exit Sub
    Else
        Call objMovimiento.EliminarEnTmpIntraItem(DBDetalle.Columns(1).Text, lngCorrelativo)
        Call objMovimiento.ActualizaNumRegEnTmpIntraItem(dtcProveedor.BoundText, lngCorrelativo, dtcMoneda.BoundText)
        Call CargaGrid2(dtcProveedor.BoundText, lngCorrelativo, dtcMoneda.BoundText)
        Call LimpiaCajaDetalle
        Call PonerDatosGrig
        Call ActualizaPie
        
        If DBDetalle.Bookmark = 0 Or IsNull(DBDetalle.Bookmark) Then
            fraDatosCab.Enabled = True 'si no existe un item en el grid se habilita la cabecera
        Else
            fraDatosCab.Enabled = False
        End If
        
    End If
End Sub

Private Sub cmdEmiteDoc_Click()

On Error GoTo errhandler

    If lblNumero.Caption <> Empty Then
        If chkEmitido.Value = 1 Then
            MsgBox "El Documento ya ha sido Emitido", vbExclamation, "Emitir"
            Exit Sub
        End If
        
        If lblEstado.Caption = "ANULADO" Then
            MsgBox "No se puede Emitir un documento Anulado", vbExclamation, "Anular"
            Exit Sub
        End If
        
        strNumeroMovimiento = lblNumero.Caption
        If MsgBox("Desea Emitir el Documento? ", vbQuestion + vbYesNo, "Coonfirmar Emisión") = vbNo Then
            Exit Sub
        Else
            objMovimiento.EmitirDocumento dtcAlmacen.BoundText, strNumeroMovimiento
            chkEmitido.Value = 1 ' SE ACTUALIZA PANTALLA CON ESTADO EMITIDO DEL DOCUMENTO
        End If
        
        If MsgBox("Documento Emitido Correctamente.Desea Imprimir? ", vbQuestion + vbYesNo, "Emisión") = vbNo Then
            GoTo SALTO
        Else
             Call cmdImprimeDoc_Click
        End If
SALTO:
        'Call Limpiar
 
        Call HabilitaCampos(False)
        Call HabilitaBotones(True)
        Call CamposValorizados(True)
        Exit Sub
    Else
        MsgBox "Seleccione un Documento que desee Emitir", vbExclamation, "Emitir"
    End If
    
Exit Sub

errhandler:
    MsgBox MensajedeError(Err.Number, Err.Description), vbDefaultButton1 + vbCritical, "Advertencia"
     
End Sub

Private Sub cmdGrabaDoc_Click()
On Error GoTo errhandler
    
    If ValidaDatos = True Then 'si los datos se ingresaron correctamente
        If MsgBox("Desea Grabar el Documento? ", vbQuestion + vbYesNo, "Confirmar Grabación") = vbNo Then
            Exit Sub
        End If
        
        GstrPeriodo = CStr(Year(GDatFechaProceso)) + CStr(Month(GDatFechaProceso))
        strNumeroMovimiento = objMovimiento.AgregarMovimiento(dtcAlmacen.BoundText, dtcTipoSalida.BoundText, _
                                             dtcProveedor.BoundText, dtcTipoDoc.BoundText, "NA", txtNumeroDoc.Text, _
                                             dblTipoCambio, GstrCodMonedaBase, dtcMoneda.BoundText, GstrSiteProce, Empty, Empty, Empty, dtpFecha.Value, _
                                             GDatFechaProceso, dtcAlmacenDestino.BoundText, IIf(dtcMoneda.BoundText = GstrCodMonedaBase, CDbl(lblTotal.Caption), Format(CDbl(lblTotal.Caption) * dblTipoCambio, GMascara(GintDecResultado))), _
                                             IIf(dtcMoneda.BoundText = GstrCodMonedaBase, CDbl(lblMIGV.Caption), Format(CDbl(lblMIGV.Caption) * dblTipoCambio, GMascara(GintDecResultado))), _
                                             IIf(dtcMoneda.BoundText <> GstrCodMonedaBase, CDbl(lblTotal.Caption), Format(CDbl(lblTotal.Caption) / dblTipoCambio, GMascara(GintDecResultado))), _
                                             IIf(dtcMoneda.BoundText <> GstrCodMonedaBase, CDbl(lblMIGV.Caption), Format(CDbl(lblMIGV.Caption) / dblTipoCambio, GMascara(GintDecResultado))), GstrPeriodo, 0, chkDesensamble.Value, _
                                             IIf(dtcMoneda.BoundText = GstrCodMonedaBase, CDbl(lblVenta.Caption), Format(CDbl(lblVenta.Caption) * dblTipoCambio, GMascara(GintDecResultado))), _
                                             IIf(dtcMoneda.BoundText <> GstrCodMonedaBase, CDbl(lblVenta.Caption), Format(CDbl(lblVenta.Caption) / dblTipoCambio, GMascara(GintDecResultado))), lngCorrelativo)
    
        blnEditando = False
        lblNumero.Caption = strNumeroMovimiento ' se asigna el valor del numero de movimiento
        If MsgBox("Documento Grabado Correctamente.Desea Imprimir? ", vbQuestion + vbYesNo, "Movimiento Nro: " & strNumeroMovimiento) = vbNo Then
           GoTo SALTO
        Else
             Call cmdImprimeDoc_Click
        End If
        
SALTO:
        ' Limpio el temporal de detalle
        Call objMovimiento.EliminarTodoEnTmpIntraItem(lngCorrelativo)
        
        'Call Limpiar
        Call HabilitaCampos(False)
        Call HabilitaBotones(True)
        
    End If

Exit Sub

errhandler:
    MsgBox MensajedeError(Err.Number, Err.Description), vbDefaultButton1 + vbCritical, "Advertencia"
 
End Sub

Private Sub cmdImprimeDoc_Click()
Dim intEstado As Integer
Dim strEstadoText As String
Dim strcad As String
Dim rsTemporal As adodb.Recordset

Screen.MousePointer = 11

crSalidas.WindowState = crptMaximized
crSalidas.WindowShowPrintSetupBtn = True
crSalidas.WindowTitle = "REPORTE DE SALIDA DE INVENTARIO"

If lblNumero.Caption <> Empty Then
    strNumeroMovimiento = lblNumero.Caption
    
    intEstado = objMovimiento.ObtieneEstadoDocumento(dtcAlmacen.BoundText, strNumeroMovimiento)
     If intEstado <> -1 Then
        
        If ctnCosto.Visible Then
            crSalidas.ReportFileName = GstrReportesInv & "rpt_MovimientoValorizado.rpt"
        Else
            crSalidas.ReportFileName = GstrReportesInv & "rpt_MovimientoNoValorizado.rpt"
        End If
        crSalidas.Formulas(1) = "formAlmacen= stringvar DescrAlmacen; DescrAlmacen:='" & dtcAlmacen.Text & "'"
        crSalidas.Formulas(2) = "formProveedor= stringvar DescrProveedor; DescrProveedor:='" & dtcProveedor.Text & "'"
        crSalidas.Formulas(3) = "formNroIng= stringvar NroIng; NroIng:='" & strNumeroMovimiento & "'"
        crSalidas.Formulas(4) = "formDocu= stringvar Docu; Docu:='" & dtcTipoDoc.Text & " " & txtNumeroDoc.Text & "'"
        crSalidas.Formulas(5) = "formTransaccion= stringvar Transaccion; Transaccion:='" & dtcTipoSalida.Text & "'"
        crSalidas.Formulas(6) = "formFechaDocu= datevar FechaDocu; FechaDocu:=date(" & Format(dtpFecha.Value, "YYYY,MM,dd") & ")"
        crSalidas.Formulas(7) = "formFechaProce= datevar FechaProce; FechaProce:=date(" & Format(GDatFechaProceso, "YYYY,MM,dd") & ")"
        
        If intEstado = 0 Then
            strEstadoText = "DOCUMENTO NO EMITIDO"
        Else
            strEstadoText = "DOCUMENTO EMITIDO"
        End If
        
        If lblEstado.Caption <> Empty Then
            strEstadoText = "DOCUMENTO ANULADO"
        End If
        
        crSalidas.Formulas(8) = "formStatusDoc= stringvar EstadoDoc; EstadoDoc:='" & strEstadoText & "'"
        crSalidas.Formulas(9) = "formTotalVenta= stringvar TotalVenta; TotalVenta:='" & lblVenta.Caption & "'"
        crSalidas.Formulas(10) = "formTotalIGV= stringvar TotalIGV; TotalIGV:='" & lblMIGV.Caption & "'"
        crSalidas.Formulas(11) = "formTotalGeneral= stringvar TotalGeneral; TotalGeneral:='" & lblTotal.Caption & "'"
        crSalidas.Formulas(12) = "formMoneda= stringvar Moneda; Moneda:='" & dtcMoneda.Text & " ***'"
        crSalidas.Formulas(13) = "formNdStock=" & GintDecStock
        crSalidas.Formulas(14) = "formNdCosto=" & GintDecCosto
        crSalidas.Formulas(15) = "formNdResultado=" & GintDecResultado
        crSalidas.Formulas(16) = "formTitulo= stringvar Titulo; Titulo:='SALIDA DE INVENTARIO'"
        crSalidas.Formulas(17) = "formScreen= stringvar Screen; Screen:='1002000'"
        crSalidas.Formulas(18) = "formUsuario=stringvar Usuario; Usuario:='" & GCUSERID & "'"
        
        If chkDesensamble.Value And chkEmitido.Value Then
            If dtcTipoSalida.BoundText <> objTipoSalida.CodigoMovimientoDes("0") Then
                Set rsTemporal = objMovimiento.ListarMovimientosGeneradosPorDesensamble(dtcProveedor.BoundText, txtNumeroDoc.Text, dtcTipoSalida.BoundText)
                rsTemporal.MoveFirst
                strcad = "NOTA: Esta Salida que incluye Desensamble a generados el Salida Nro: " & rsTemporal!BATNBR & " y la "
                rsTemporal.MoveNext
                strcad = strcad & "Salida Nro: " & rsTemporal!BATNBR
                Set rsTemporal = Nothing
            Else
                strcad = "NOTA: Este Salida fué generado a partir de la Salida Nro: " & objMovimiento.ObtenerGeneradorMovimientoPorDesensamble(dtcProveedor.BoundText, txtNumeroDoc.Text, dtcTipoSalida.BoundText) & " que incluyó Desensamble"

            End If
            
            crSalidas.Formulas(19) = "formMensajeDes=stringvar MensajeDes;MensajeDes:='" & strcad & "'"
    
        End If
        
        crSalidas.Formulas(20) = "formSiteOri= stringvar SiteOri; SiteOri:='" & objAlmacen.ObtenerDescripcionAlmacen(GstrSiteProce) & "'"
        
        If dtcTipoSalida.BoundText = GstrCodTransferenciaSal Then
            crSalidas.Formulas(21) = "formAlmacen= stringvar DescrAlmacen; DescrAlmacen:='" & dtcAlmacen.Text & "'"
            crSalidas.Formulas(22) = "formAlmacen2= stringvar DescrAlmacen2; DescrAlmacen2:='" & dtcAlmacenDestino.Text & "'"
        End If
        
        
        crSalidas.StoredProcParam(0) = dtcAlmacen.BoundText
        crSalidas.StoredProcParam(1) = strNumeroMovimiento
        crSalidas.StoredProcParam(2) = dtcProveedor.BoundText
        crSalidas.StoredProcParam(3) = IIf(dtcMoneda.BoundText = Empty, GstrCodMonedaBase, dtcMoneda.BoundText)
        
        crSalidas.Action = 1
        crSalidas.Reset
      Else
        MsgBox "Número de Salida no Registrado"
        Exit Sub
      End If
Else
    MsgBox "Seleccione un Documento que desee Imprimir", vbExclamation, "Imprimir"
End If
Screen.MousePointer = 0
End Sub

Private Sub cmdNuevoItem_Click()

' SE OBTIENE EL NUMERO DE SECUENCIA CORRESPONDIENTE
' AL NUEVO ARTICULO EN EL DETALLE DE SALIDA
    If ValidaDatosCab = True Then
        lngSecuencia = objCorrelativo.ObtenerSecuencia(lngCorrelativo)
    
    ' 1 GRABAR EN TMP_INTAITEM CON EL CORRETATIVO Y EL NUMERO DE SECUENCIA
    
        If ctnCosto.Visible Then ' si es valorizado
            Call objMovimiento.AgregarEnTmpIntraItem(lngCorrelativo, dtcAlmacen.BoundText, _
                                                  dtcTipoSalida.BoundText, lngSecuencia, txtArticulo.Text, _
                                                  "0", CDbl(ctnUnidades.Text), 0, IIf(dtcMoneda.BoundText = GstrCodMonedaBase, CDbl(ctnCosto.Text), Format(CDbl(ctnCosto.Text) * dblTipoCambio, GMascara(GintDecCosto))), _
                                                  IIf(dtcMoneda.BoundText <> GstrCodMonedaBase, CDbl(ctnCosto.Text), Format(CDbl(ctnCosto.Text) / dblTipoCambio, GMascara(GintDecCosto))), 0, _
                                                  dtpFecha.Value, GDatFechaProceso, 0)
        Else
            Call objMovimiento.AgregarEnTmpIntraItem(lngCorrelativo, dtcAlmacen.BoundText, _
                                                  dtcTipoSalida.BoundText, lngSecuencia, txtArticulo.Text, _
                                                  "0", CDbl(ctnUnidades.Text), 0, 0, 0, 0, dtpFecha.Value, GDatFechaProceso, 0)
                                                   
                                                  
        End If
        
        Call ActualizaPie
    
        
    ' 2 ACTUALIZAR DATAGRID
        
        Call CargaGrid2(dtcProveedor.BoundText, lngCorrelativo, dtcMoneda.BoundText)
        
    ' 3 PREPARAR PARA NUEVA ENTRADA DE DATOS DE ARTICULO
        Call LimpiaCajaDetalle
        txtArticulo.SetFocus
    End If
End Sub

Private Sub cmdNuevoDoc_Click()
    blnEditando = True
        
    Call HabilitaCampos(True)
    Call HabilitaBotones(False)
    Call Limpiar
    Call CamposValorizados(True)

    
    ' SE OBTIENE EL NUMERO DE CORRELATIVO INDENTIFICADOR POR USUARIO
        lngCorrelativo = objCorrelativo.ObtenerCorrelativo(GCUSERID)
    
    dtcTipoSalida.SetFocus
End Sub

Private Sub cmdSalir_Click()
    Unload Me
End Sub

Private Sub ctnCosto_GotFocus()
'    If objMovimiento.ExisteArticulo(txtArticulo.Text, lngCorrelativo) Then
'        MsgBox "Código de articulo ya registrado", vbExclamation, "Mensaje"
'    End If
End Sub


Private Sub ctnCosto_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
        
        ' se valida que los campos unidades y costos no sean menores que cero
        If Val(ctnUnidades.Text) = 0 Then
            MsgBox "El Campo Unidades no puede ser cero", vbExclamation, "Salidas"
            ctnUnidades.SetFocus
            Exit Sub
        End If
    
        If Val(ctnCosto.Text) = 0 And ctnCosto.Visible = True Then
            MsgBox "El Campo Costo no puede ser cero", vbExclamation, "Salidas"
            ctnCosto.SetFocus
            Exit Sub
        End If
        
        'comienza el proceso se grabacion en la tabla temporal TMP_IN_IntraItrem
        If blnActualizandoItem Then
                cmdActualizaItem_Click
        Else

            Dim rsTemporal As adodb.Recordset
            Set rsTemporal = objMovimiento.ValidaCodigoIngresado(dtcProveedor.BoundText, Trim(txtArticulo.Text), chkDesensamble.Value)
            
            If rsTemporal.RecordCount <> 0 Then ' si no esta vacio
                If objMovimiento.ExisteArticulo(txtArticulo.Text, lngCorrelativo) Then
                        MsgBox "Código de articulo ya registrado", vbExclamation, "Mensaje"
                        txtArticulo.SetFocus
                        Exit Sub
                End If
                
                cmdNuevoItem_Click
            Else
                MsgBox "Código ingresado no corresponde al proveedor seleccionado", vbExclamation, "Salidas"
                Set rsTemporal = Nothing
                txtArticulo.SetFocus
                Exit Sub
            End If
            
            Set rsTemporal = Nothing
        End If
    End If
    
End Sub

Private Sub ctnUnidades_GotFocus()
'    If objMovimiento.ExisteArticulo(txtArticulo.Text, lngCorrelativo) Then
'        MsgBox "Código de articulo ya registrado", vbExclamation, "Mensaje"
'    End If
End Sub

Private Sub ctnUnidades_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
        If ctnCosto.Visible Then
            ctnCosto.SetFocus
        Else
            Call ctnCosto_KeyPress(13)
        End If
    End If
End Sub

Private Sub DBDetalle_GotFocus()
    txtArticulo.Enabled = True
    cmdBuscaArticulo.Enabled = True
    blnActualizandoItem = False
End Sub

Private Sub DBDetalle_KeyUp(KeyCode As Integer, Shift As Integer)
    DBDetalle.Refresh
    PonerDatosGrig
    
    If cmdNuevoDoc.Enabled = False Then ' si se esta ingresando un nuevo movimiento
        If KeyCode = vbKeyF3 Then
            If DBDetalle.Bookmark <> 0 Or Not IsNull(DBDetalle.Bookmark) Then
                cmdEliminarItem_Click
                Exit Sub
            End If
        End If
        If KeyCode = 13 Then
            If DBDetalle.Bookmark <> 0 Or Not IsNull(DBDetalle.Bookmark) Then
                    txtArticulo.Enabled = False
                    cmdBuscaArticulo.Enabled = False
                    blnActualizandoItem = True
                    ctnUnidades.SetFocus
                Exit Sub
            End If
        End If
    End If
End Sub

Private Sub DBDetalle_LostFocus()
    If blnActualizandoItem = False Then '  si no esta modificando item
        Call LimpiaCajaDetalle
    End If
End Sub

Private Sub DBDetalle_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
    DBDetalle.Refresh
    PonerDatosGrig
End Sub

Private Sub dtcAlmacen_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyF2 Then cmdBusAlmacen_Click
End Sub

Private Sub dtcAlmacen_KeyPress(KeyAscii As Integer)
    KeyAscii = GBloqueaCaracter(KeyAscii)
    If KeyAscii = 13 Then
       dtcProveedor.SetFocus
    End If
End Sub

Private Sub dtcAlmacenDestino_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyF2 Then cmdBusAlmacenDestino_Click
End Sub

Private Sub dtcAlmacenDestino_KeyPress(KeyAscii As Integer)
    KeyAscii = GBloqueaCaracter(KeyAscii)
    If KeyAscii = 13 Then
       txtArticulo.SetFocus
    End If
End Sub

Private Sub dtcAlmacenDestino_LostFocus()
    If dtcAlmacenDestino.BoundText = dtcAlmacen.BoundText Then
        MsgBox "El almacen origen y destino no puede ser el mismo", vbExclamation, "Mensaje"
        dtcAlmacen.SetFocus
    End If
End Sub

Private Sub DtcMoneda_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
        txtNumeroDoc.SetFocus
    End If
End Sub

Private Sub dtcTipoSalida_Click(Area As Integer)
On Error Resume Next
    If dtcTipoSalida.Text <> Empty Then
        Call TipoMovimientoValorizado 'CONOCER SI EL MOVIMIENTO ES VALORIZADO
    End If
    ' SI ES POR TRANSFERENCIA, HABILITAMOS SUS CAMPOS
    If dtcTipoSalida.BoundText = GstrCodTransferenciaSal Then
        lblAlmacenDestino.Enabled = True
        cmdBusAlmacenDestino.Enabled = True
        dtcAlmacenDestino.Enabled = True
    Else
        lblAlmacenDestino.Enabled = False
        cmdBusAlmacenDestino.Enabled = False
        dtcAlmacenDestino.BoundText = Empty
        dtcAlmacenDestino.Enabled = False
    End If
    If objTipoSalida.MovimientoPorCompra(dtcTipoSalida.BoundText) = True Then
        chkDesensamble.Enabled = True
    Else
        chkDesensamble.Value = False
        chkDesensamble.Enabled = False
    End If
End Sub

Private Sub dtpFecha_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 13 Then
        If dtpFechaProceso.Enabled Then
            dtpFechaProceso.SetFocus
        Else
            If dtcAlmacenDestino.Enabled Then
                dtcAlmacenDestino.SetFocus
            Else
                txtArticulo.SetFocus
            End If
        End If
    End If
End Sub
Private Sub dtpFechaProceso_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 13 Then
        If dtcAlmacenDestino.Enabled Then
            dtcAlmacenDestino.SetFocus
        Else
            txtArticulo.SetFocus
        End If
    End If
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If blnEditando Then
        If MsgBox("Desea Salir y Cancelar el documento actual? ", vbQuestion + vbYesNo, "Salir") = vbNo Then
            Cancel = 1
        Else
            Cancel = 0
            blnEditando = False
            pb_agregar = False
            pb_editar = False
            Call gdesactiva_barra
        End If
    Else
        Call gdesactiva_barra
    End If
End Sub


Private Sub txtArticulo_GotFocus()
    'Call LimpiaCajaDetalle
End Sub

Private Sub txtArticulo_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyF2 Then cmdBuscaArticulo_Click
End Sub

Private Sub txtArticulo_KeyPress(KeyAscii As Integer)
KeyAscii = GBloqueaCaracter(KeyAscii)
    If KeyAscii = 13 Then
    
        Dim rsTemporal As adodb.Recordset
        Set rsTemporal = objMovimiento.ValidaCodigoIngresado(dtcProveedor.BoundText, Trim(txtArticulo.Text), chkDesensamble.Value)
        
        If rsTemporal.RecordCount <> 0 Then ' si no esta vacio
            If objMovimiento.ExisteArticulo(txtArticulo.Text, lngCorrelativo) Then
                    MsgBox "Código de articulo ya registrado", vbExclamation, "Mensaje"
                    txtArticulo.SetFocus
                    Exit Sub
            End If
            
            rsTemporal.MoveFirst ' muevete al primer registro
            
            'cargo valores
            txtArticulo.Text = rsTemporal!INVTIDSKU
            lblDescripcion.Caption = rsTemporal!descr
            ctnCosto.Text = GFormatodeNumero(objMovimiento.ConvertirCosto(rsTemporal!STDCOST, dtcMoneda.BoundText, dtpFecha.Value, GrecibeColumnaID, dtcProveedor.BoundText), GintDecCosto)
                
        Else
            MsgBox "Código ingresado no corresponde al proveedor seleccionado", vbExclamation, "Salidas"
            Set rsTemporal = Nothing
            txtArticulo.SetFocus
            Exit Sub
        End If
        
        Set rsTemporal = Nothing
        'devuelvo el enfoque al campo unidades
        ctnUnidades.SetFocus
    End If
End Sub

Private Sub dtcMoneda_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyF2 Then cmdBusMoneda_Click
End Sub

Private Sub dtcProveedor_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyF2 Then cmdBusProveedor_Click
End Sub

Private Sub dtcProveedor_KeyPress(KeyAscii As Integer)
    KeyAscii = GBloqueaCaracter(KeyAscii)
    If KeyAscii = 13 Then
        dtcTipoDoc.SetFocus
    End If
End Sub

Private Sub dtcProveedor_LostFocus()
    'Call CargaDataCombo(txtArticulo, objProveedor.ListarArticulosPorProveedor(dtcProveedor.BoundText), "invtIdsku", "Descr")
End Sub

Private Sub dtcTipoDoc_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyF2 Then cmdBusTipoDoc_Click
End Sub

Private Sub dtcTipoDoc_KeyPress(KeyAscii As Integer)
    KeyAscii = GBloqueaCaracter(KeyAscii)
    If KeyAscii = 13 Then
        If dtcMoneda.Enabled Then
            dtcMoneda.SetFocus
        Else
            txtNumeroDoc.SetFocus
        End If
    End If
End Sub

Private Sub dtcTipoSalida_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyF2 Then cmdBusTipoIng_Click
End Sub

Private Sub dtcTipoSalida_KeyPress(KeyAscii As Integer)
    KeyAscii = GBloqueaCaracter(KeyAscii)
    If KeyAscii = 13 Then
       dtcAlmacen.SetFocus
    End If
End Sub

Private Sub Form_Activate()
    'Call LlenaDataCombos
    'Call UbicaItemEnDataCombo
 'On Error GoTo SALTO
'    dtpFechaProceso.Enabled = objMovimiento.HabilitarFechaProceso
'SALTO:
 '********************************************************************************
 'Código que se Tiene que Copiar para Invocar a la Rutina de Seguridad para poder
    Call gactualizaopcion(pbderecho_agregar, pbderecho_editar, pbderecho_borrar, pbderecho_imprimir)
    Call gactualiza_barra(Me)
    If pbderecho_consultar = False Then
       Unload Me
    End If
 '********************************************************************************
    GbytMovimiento = 0 'para filtra solo la busqueda de Salidas
    Call Botones_Navegacion_barra ' desactiva los botones de navegacion
End Sub

Private Sub Form_Deactivate()
'    MstrTipoMovimiento = dtcTipoSalida.BoundText
'    MstrAlmacen = dtcAlmacen.BoundText
'    MstrProveedor = dtcProveedor.BoundText
'    MstrTipoDoc = dtcTipoDoc.BoundText
'    MstrMoneda = dtcMoneda.BoundText
'    MstrArticulo = txtArticulo.Text
End Sub

Private Sub Form_Load()
Screen.MousePointer = 11
 '********************************************************************************
 'Código que se Tiene que Copiar para Invocar a la Rutina de Seguridad para poder
  Call gseguridad(Me)
  If pbderecho_consultar Then
  Else
     MsgBox ("No tiene Derechos de Consultar en este formulario"), vbCritical + vbDefaultButton1, "Mensaje"
     Screen.MousePointer = 0
     Exit Sub
  End If
 '********************************************************************************
    Call InstanciaObjetos
    Call CargaGrid("0", 0, "0")
    ctnUnidades.Enteros = 10
    ctnUnidades.Decimales = GintDecStock
    ctnCosto.Enteros = 8
    ctnCosto.Decimales = GintDecCosto
    ctnUnidades.ValorPorDefecto
    ctnCosto.ValorPorDefecto
    dtpFecha.Value = Now
    dtpFechaProceso.Value = GDatFechaProceso
    
    Call HabilitaCampos(False)
    Call HabilitaBotones(True)
    Call LlenaDataCombos
    
    Me.Top = 100
    Me.Left = (Screen.Width - Me.Width) / 2

Screen.MousePointer = 0
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Call DestruyeObjetos
End Sub

' Procedimiento para cargar DataCombos
Public Sub CargaDataCombo(objDataCombo As DataCombo, rsSource As Recordset, istrCampo1 As String, istrCampo2 As String)

    Set objDataCombo.DataSource = rsSource
    objDataCombo.DataField = istrCampo2
    Set objDataCombo.RowSource = rsSource
    objDataCombo.ListField = istrCampo2
    objDataCombo.BoundColumn = istrCampo1
    
    If Not rsSource.EOF Then
        objDataCombo.BoundText = rsSource.Fields(istrCampo2)
    End If

End Sub

' Procedimiento de carga de los DataCombos del formulario
Private Sub LlenaDataCombos()
    Call CargaDataCombo(dtcTipoSalida, objTipoSalida.ListarPorTipoMovimiento("0"), "TypeDocId", "Descr")
    Call CargaDataCombo(dtcAlmacen, objAlmacen.ListarAlmacenesPorStatus(1), "SiteId", "Name")
    Call CargaDataCombo(dtcProveedor, objProveedor.ListarProveedoresAyuda, "Vendidss", "Descr")
    Call CargaDataCombo(dtcTipoDoc, objDocumento.ListarDocumentos, "DocTypeId", "Descr")
    Call CargaDataCombo(dtcMoneda, objMoneda.ListarMonedas, "CuryId", "Descr")
    Call CargaDataCombo(dtcAlmacenDestino, objAlmacen.ListarAlmacenesAyuda, "SiteId", "Name")
End Sub

Private Sub UbicaItemEnDataCombo()
On Error Resume Next
'    dtcTipoSalida.BoundText = MstrTipoMovimiento
'    dtcAlmacen.BoundText = MstrAlmacen
'    dtcProveedor.BoundText = MstrProveedor
'    dtcTipoDoc.BoundText = MstrTipoDoc
'    dtcMoneda.BoundText = MstrMoneda
'    txtArticulo.Text = MstrArticulo
End Sub

Private Sub InstanciaObjetos()
    Set objTipoSalida = New DB_INV_MANTENIMIENTOS.C_TIPOMOVIMIENTO
    Set objAlmacen = New DB_INV_MANTENIMIENTOS.C_ALMACEN
    Set objProveedor = New DB_INV_MANTENIMIENTOS.C_PROVEEDOR
    Set objDocumento = New DB_MA_MANTENIMIENTOS.C_DOCUMENTO
    Set objMoneda = New DB_MA_MANTENIMIENTOS.C_MONEDA
    Set objCorrelativo = New DB_CORRELATIVO.C_Correlativos
    Set objMovimiento = New DB_INV_MOVIMIENTOS.C_MOVIMIENTOS
End Sub

Private Sub DestruyeObjetos()
    Set objTipoSalida = Nothing
    Set objAlmacen = Nothing
    Set objProveedor = Nothing
    Set objDocumento = Nothing
    Set objMoneda = Nothing
    Set objCorrelativo = Nothing
    Set objMovimiento = Nothing
End Sub

' funcion que valida el Salida de caracteres numéricos
Private Function ValidaNumeros(KeyAscii As Integer) As Integer
    If (KeyAscii >= 48 And KeyAscii <= 57) Or KeyAscii = 13 Or KeyAscii = 8 Then
        ValidaNumeros = KeyAscii
    Else
        ValidaNumeros = 0
    End If
End Function

Private Sub txtNumeroDoc_KeyPress(KeyAscii As Integer)
   KeyAscii = ValidaNumeros(KeyAscii)
   If KeyAscii = 13 Then
        dtpFecha.SetFocus
   End If
End Sub

Private Sub CargaGrid(strCodProveedor As String, lngId As Long, strCodMoneda As String)
    
    Set DBDetalle.DataSource = objMovimiento.SeleccionaEnTmpIntraItem(strCodProveedor, lngId, strCodMoneda)
    Call FormatoGrilla
    DBDetalle.Refresh
    
End Sub

Private Sub CargaGrid2(strCodProveedor As String, lngId As Long, strCodMoneda As String)
    
    Set DBDetalle.DataSource = objMovimiento.SeleccionaEnTmpIntraItem(strCodProveedor, lngId, strCodMoneda)
    
    Call FormatoGrilla
    
    If Not ctnCosto.Visible Then
        DBDetalle.Columns(5).Visible = False
        DBDetalle.Columns(6).Visible = False
        DBDetalle.Columns(7).Visible = False
        DBDetalle.Columns(8).Visible = False
    Else
        DBDetalle.Columns(5).Visible = True
        DBDetalle.Columns(6).Visible = True
        DBDetalle.Columns(7).Visible = True
        DBDetalle.Columns(8).Visible = True
    End If
    DBDetalle.Refresh
    
End Sub


Private Sub Limpiar()
'funcionabilidad    : pone en blanco todos los controles de un formulario

Dim curcontrol As Control
    With Me
    For Each curcontrol In .Controls
        If TypeOf curcontrol Is TextBox Then
                curcontrol.Text = ""
        End If
         If TypeOf curcontrol Is DataCombo Then
                 curcontrol.Text = ""
        End If
         If TypeOf curcontrol Is ComboBox Then
              curcontrol.Text = ""
        End If
        If TypeOf curcontrol Is CtrlNumber Then
              curcontrol.ValorPorDefecto
        End If
        If TypeOf curcontrol Is CheckBox Then
              curcontrol.Value = 0
        End If
        
        If TypeOf curcontrol Is DTPicker Then
              curcontrol.Value = Now
        End If
    
    Next
    End With
    
    dtpFechaProceso.Value = GDatFechaProceso
    
    lblDescripcion.Caption = Empty
    lblNumero.Caption = Empty
    lblEstado.Caption = Empty
    Call CargaGrid("0", 0, "0")
    Call LlenaDataCombos
    Call ActualizaPie
    
End Sub

Private Sub LimpiaCajaDetalle()
    txtArticulo.Text = Empty
    lblDescripcion.Caption = Empty
    ctnUnidades.ValorPorDefecto
    ctnCosto.ValorPorDefecto
End Sub

Private Sub PonerDatosGrig()
    On Error GoTo TrataError
        ctnUnidades.Text = Format(DBDetalle.Columns(4).Text, GMascara(GintDecStock))
        ctnCosto.Text = Format(DBDetalle.Columns(5).Text, GMascara(GintDecCosto))
        txtArticulo.Text = DBDetalle.Columns(1).Text
        lblDescripcion.Caption = DBDetalle.Columns(3).Text
    Exit Sub
TrataError:
End Sub

Private Sub ActualizaPie()
Dim rsTemporal As adodb.Recordset
Set rsTemporal = objMovimiento.ObtieneValorVenta(dtcMoneda.BoundText, lngCorrelativo)
dblIgvAcumulado = IIf(IsNull(rsTemporal!igv), 0, rsTemporal!igv)
dblValorVenta = IIf(IsNull(rsTemporal!valventa), 0, rsTemporal!valventa)

    lblVenta.Caption = Format(dblValorVenta, GMascara(GintDecResultado))
    If objMovimiento.ExistenDistintosValoresEnIGV(lngCorrelativo) Then
        lblMIGV.Caption = Format(dblIgvAcumulado, GMascara(GintDecResultado))
    Else
        lblMIGV.Caption = Format(CDbl(lblVenta.Caption) * GdblIGV / 100, GMascara(GintDecResultado))
    End If
    lblTotal.Caption = Format(CDbl(lblVenta.Caption) + CDbl(lblMIGV.Caption), GMascara(GintDecResultado))
Set rsTemporal = Nothing
End Sub

Private Sub ActualizaPie2()
Dim rsTemporal As adodb.Recordset
Set rsTemporal = objMovimiento.ObtieneValorVenta2(dtcMoneda.BoundText, dtcAlmacen.BoundText, lblNumero.Caption)
dblIgvAcumulado = IIf(IsNull(rsTemporal!igv), 0, rsTemporal!igv)
dblValorVenta = IIf(IsNull(rsTemporal!valventa), 0, rsTemporal!valventa)

    lblVenta.Caption = Format(dblValorVenta, GMascara(GintDecResultado))
    If objMovimiento.ExistenDistintosValoresEnIGV_2(dtcAlmacen.BoundText, lngCorrelativo) Then
        lblMIGV.Caption = Format(dblIgvAcumulado, GMascara(GintDecResultado))
    Else
        lblMIGV.Caption = Format(CDbl(lblVenta.Caption) * GdblIGV / 100, GMascara(GintDecResultado))
    End If
    lblTotal.Caption = Format(CDbl(lblVenta.Caption) + CDbl(lblMIGV.Caption), GMascara(GintDecResultado))
Set rsTemporal = Nothing
End Sub

Public Sub CargaDatos(strSITEID As String, strBATNBR As String)
On Error GoTo TrataError
    Dim rsTemporal As adodb.Recordset
    Call Limpiar
    Set rsTemporal = objMovimiento.SeleccionaEnIntraHead(strSITEID, strBATNBR)
    
    ' CARGO LA CABECERA
    lblNumero.Caption = rsTemporal!BATNBR
    If rsTemporal!DOCSTATUSID = "AN" Then
        lblEstado.Caption = "ANULADO"
    Else
        lblEstado.Caption = Empty
    End If
    
    dtcTipoSalida.BoundText = rsTemporal!TYPEDOCID
    dtcAlmacen.BoundText = rsTemporal!SITEID
    
    If dtcTipoSalida.BoundText = GstrCodTransferenciaSal Then
        dtcAlmacenDestino.BoundText = rsTemporal!SITEDEST
    End If
    
    dtcProveedor.BoundText = rsTemporal!VENDIDSS
    dtcTipoDoc.BoundText = rsTemporal!DOCTYPEID
    dtcMoneda.BoundText = rsTemporal!FROMCURYID
    txtNumeroDoc.Text = rsTemporal!REFNBR
    dtpFecha.Value = rsTemporal!INTRDATE
    dtpFechaProceso.Value = rsTemporal!INTRDATEPROCE
    chkEmitido.Value = IIf(rsTemporal!RLSED = True, 1, 0)
    chkDesensamble.Value = IIf(rsTemporal!DISASSEMBLE = True, 1, 0)
    If chkDesensamble.Value Then
        Call CargaDataCombo(dtcTipoSalida, objTipoSalida.ListarTipoMovimientoDes("0"), "TypeDocId", "Descr")
        dtcTipoSalida.BoundText = rsTemporal!TYPEDOCID
        chkDesensamble.Value = IIf(rsTemporal!DISASSEMBLE = True, 1, 0)
    End If
    
    Call TipoMovimientoValorizado 'CONOCER SI EL MOVIMIENTO ES VALORIZADO
    
    ' CARGO EL DETALLE
    Set DBDetalle.DataSource = objMovimiento.SeleccionaEnIntraItem(strSITEID, strBATNBR, dtcMoneda.BoundText)
    
    Call FormatoGrilla
    
    ' ocultar las columnas costo y total si el movimiento en no valorizado
    If Not ctnCosto.Visible Then
        DBDetalle.Columns(5).Visible = False
        DBDetalle.Columns(6).Visible = False
        DBDetalle.Columns(7).Visible = False
        DBDetalle.Columns(8).Visible = False
    Else
        DBDetalle.Columns(5).Visible = True
        DBDetalle.Columns(6).Visible = True
        DBDetalle.Columns(7).Visible = True
        DBDetalle.Columns(8).Visible = True
    End If
    
    DBDetalle.Refresh
    
    Set rsTemporal = Nothing
    
    Call PonerDatosGrig
    Call ActualizaPie2
    
    Exit Sub
    
TrataError:
    Call Limpiar
    MsgBox "Nro de Salida no Registrado en Almacen Seleccionado", vbExclamation, "Error en Consulta"
End Sub

Private Sub HabilitaCampos(blnValor As Boolean)
    fraDatosCab.Enabled = blnValor
    fraDatosItem.Enabled = blnValor
    fraFlag.Enabled = blnValor
    fraTotales.Enabled = blnValor
    lblNroSalida.Visible = Not blnValor
    lblNumero.Visible = Not blnValor
    cmdBuscar.Visible = Not blnValor
    lblEtiqueta.Visible = blnValor
End Sub

Private Sub HabilitaBotones(blnValor As Boolean)
    If blnValor Then
        cmdAnulaDoc.Enabled = pbderecho_anular
        cmdImprimeDoc.Enabled = pbderecho_imprimir
        cmdEmiteDoc.Enabled = pbderecho_emitir
    Else
        cmdAnulaDoc.Enabled = blnValor
        cmdImprimeDoc.Enabled = blnValor
        cmdEmiteDoc.Enabled = blnValor
    End If
End Sub

Private Function ValidaDatos() As Boolean
ValidaDatos = True
blnDatosOK = True
    If Not (ValidaDatosCab) Then
        ValidaDatos = False
        blnDatosOK = False
        Exit Function
    End If
    If Not (ValidaDatosDet) Then
        ValidaDatos = False
        blnDatosOK = False
        Exit Function
    End If
End Function

Private Function ValidaDatosCab() As Boolean
ValidaDatosCab = True

If DBDetalle.Bookmark = 0 Or IsNull(DBDetalle.Bookmark) Then
    If dtcTipoSalida.Text = Empty Then
        MsgBox "Ingrese Tipo de Movimiento", vbExclamation, "Salida"
        dtcTipoSalida.SetFocus
        GoTo Final
    End If
    If dtcAlmacen.Text = Empty Then
        MsgBox "Ingrese Almacen", vbExclamation, "Salida"
        dtcAlmacen.SetFocus
        GoTo Final
    End If
    If dtcProveedor.Text = Empty Then
        MsgBox "Ingrese proveedor", vbExclamation, "Salida"
        dtcProveedor.SetFocus
        GoTo Final
    End If
    If dtcTipoDoc.Text = Empty Then
        MsgBox "Ingrese Tipo de Documento", vbExclamation, "Salida"
        dtcTipoDoc.SetFocus
        GoTo Final
    End If
    If dtcMoneda.Text = Empty And dtcMoneda.Enabled Then
        MsgBox "Ingrese Moneda", vbExclamation, "Salida"
        dtcMoneda.SetFocus
        GoTo Final
    End If
    If txtNumeroDoc.Text = Empty Then
        MsgBox "Ingrese Número de Documento", vbExclamation, "Salida"
        txtNumeroDoc.SetFocus
        GoTo Final
    End If
    If objMovimiento.ExisteDocumento(dtcProveedor.BoundText, txtNumeroDoc.Text) Then
        MsgBox "Número de documento ya registrado", vbExclamation, "Salida"
        txtNumeroDoc.SetFocus
        GoTo Final
    End If
    If dtcAlmacenDestino.Text = Empty And dtcAlmacenDestino.Enabled Then
        MsgBox "Ingrese Almacen de Origen", vbExclamation, "Salida"
        dtcAlmacenDestino.SetFocus
        GoTo Final
    End If
    If dtcAlmacenDestino.BoundText = dtcAlmacen.BoundText Then
        MsgBox "El almacen origen y destino no puede ser el mismo", vbExclamation, "Salida"
        dtcAlmacenDestino.SetFocus
        GoTo Final
    End If
    If (GDatFechaProceso - dtpFechaProceso.Value) > 1 Or (GDatFechaProceso - dtpFechaProceso.Value) < 0 Then
        MsgBox "Fecha de Proceso ingresada incompatible", vbExclamation, "Salida"
        GoTo Final
    End If
    
    'Para validar el tipo de cambio de la fecha del documneto
    Dim rsTemporal As adodb.Recordset
    If dtcMoneda.BoundText = Empty Then
        Set rsTemporal = objProveedor.ObtenerTipoCambio(dtcProveedor.BoundText, GstrCodMonedaBase, dtpFecha.Value)
    Else
        Set rsTemporal = objProveedor.ObtenerTipoCambio(dtcProveedor.BoundText, dtcMoneda.BoundText, dtpFecha.Value)
    End If
    
    If rsTemporal.EOF Then
        MsgBox "No se a ingresado tipo de cambio del dia " & Format(dtpFecha.Value, "DD/MM/YYYY"), vbExclamation, "Salida"
        Set rsTemporal = Nothing
        GoTo Final
    End If
       
    dblTipoCambio = rsTemporal!Rate
    strOperador_de_Cambio = rsTemporal!Operador
    Set rsTemporal = Nothing
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
End If

    Exit Function
    
Final:
    ValidaDatosCab = False
        
End Function

Private Function ValidaDatosDet() As Boolean
ValidaDatosDet = True

    If IsNull(DBDetalle.Bookmark) Then
        MsgBox "Debe existir al menos un registro en detalle de documento", vbExclamation, "Salida"
        ValidaDatosDet = False
        txtArticulo.SetFocus
    End If
    
End Function

Private Sub TipoMovimientoValorizado()
    Dim rsTemporal As adodb.Recordset
    Set rsTemporal = objTipoSalida.ListarPorTiposMovimientoID(dtcTipoSalida.BoundText)
    
    If rsTemporal!STKVALUE = True Then
        Call CamposValorizados(True)
    Else
        Call CamposValorizados(False)
    End If
    Set rsTemporal = Nothing
    
End Sub

Private Sub CamposValorizados(blnValor As Boolean)
    dtcMoneda.Enabled = blnValor
    dtcMoneda.BoundText = Empty
    cmdBusMoneda.Enabled = blnValor
    lblCosto.Visible = blnValor
    ctnCosto.Visible = blnValor
    fraTotales.Visible = blnValor
    DBDetalle.Columns(5).Visible = blnValor
    DBDetalle.Columns(6).Visible = blnValor
    DBDetalle.Columns(7).Visible = blnValor
    DBDetalle.Columns(8).Visible = blnValor
    If blnValor = False Then
        fraDatosItem.Top = 5400
        DBDetalle.Height = 2200
    Else
        fraDatosItem.Top = 4800
        DBDetalle.Height = 1575
    End If
End Sub

Public Sub salir_formulario()
    cmdSalir_Click
End Sub

Public Sub imprimir()
    cmdImprimeDoc_Click
End Sub

Private Sub FormatoGrilla()
    DBDetalle.Columns(0).Width = 500
    DBDetalle.Columns(1).Width = 710
    DBDetalle.Columns(2).Width = 1400
    DBDetalle.Columns(3).Width = 3000
    DBDetalle.Columns(4).Width = 1000
    DBDetalle.Columns(4).Alignment = dbgRight
    DBDetalle.Columns(4).NumberFormat = GMascara(GintDecStock)
    DBDetalle.Columns(5).Width = 900
    DBDetalle.Columns(5).Alignment = dbgRight
    DBDetalle.Columns(5).NumberFormat = GMascara(GintDecCosto)
    DBDetalle.Columns(6).Width = 1000
    DBDetalle.Columns(6).Alignment = dbgRight
    DBDetalle.Columns(6).NumberFormat = GMascara(GintDecResultado)
    DBDetalle.Columns(7).Alignment = dbgRight
    DBDetalle.Columns(7).NumberFormat = GMascara(2)
    DBDetalle.Columns(8).Alignment = dbgRight
    DBDetalle.Columns(8).NumberFormat = GMascara(2)
End Sub

Private Function ExisteTipoCambio() As Boolean
Dim rsTemporal As adodb.Recordset

ExisteTipoCambio = True
'Para validar el tipo de cambio de la fecha del documento
If DBDetalle.Bookmark = 0 Or IsNull(DBDetalle.Bookmark) Then
    
    If dtcMoneda.BoundText = Empty Then
        Set rsTemporal = objProveedor.ObtenerTipoCambio(dtcProveedor.BoundText, GstrCodMonedaBase, dtpFecha.Value)
    Else
        Set rsTemporal = objProveedor.ObtenerTipoCambio(dtcProveedor.BoundText, dtcMoneda.BoundText, dtpFecha.Value)
    End If
    
    If rsTemporal.EOF Then
        MsgBox "No se a ingresado tipo de cambio del dia " & Format(dtpFecha.Value, "DD/MM/YYYY"), vbExclamation, "Ingreso"
        ExisteTipoCambio = False
        Exit Function
        Set rsTemporal = Nothing
    End If
       
    dblTipoCambio = rsTemporal!Rate
    strOperador_de_Cambio = rsTemporal!Operador
    ExisteTipoCambio = True
    Set rsTemporal = Nothing
End If
End Function

Public Sub agregar_registro()
    Call cmdNuevoDoc_Click
    pb_agregar = True
    pb_editar = True
    Call gactualiza_barra(Me) 'pb_editar, pb_primerregistro, pb_ultimoregistro)
    Call Botones_Navegacion_barra
End Sub

Public Sub descartar_registro()
    ' Revertir cambios
    Call cmdCancelaDoc_Click
    pb_agregar = False
    pb_editar = False
    Call gactualiza_barra(Me) 'pb_editar, pb_primerregistro, pb_ultimoregistro)
    Call gactualizaopcion(pbderecho_agregar, pbderecho_editar, pbderecho_borrar, pbderecho_imprimir)
        MsgBox ("Cambios Descartados"), vbInformation + vbDefaultButton1, "Mensaje"
    Call Botones_Navegacion_barra
End Sub

Public Sub Botones_Navegacion_barra()
    ' funcionabilidad   : desactiva todos los gbotones de la barra
    gformmdi.Toolbar1.Buttons(8).Enabled = False    ' Boton Refrescar
    gformmdi.Toolbar1.Buttons(10).Enabled = False   ' Boton Primero
    gformmdi.Toolbar1.Buttons(11).Enabled = False   ' Boton Anterior
    gformmdi.Toolbar1.Buttons(12).Enabled = False   ' Boton Siguiente
    gformmdi.Toolbar1.Buttons(13).Enabled = False   ' Boton Ultimo
End Sub

Public Sub modificar_registro()
End Sub

Public Sub grabar_registro()
    Call cmdGrabaDoc_Click
    If blnDatosOK Then
        pb_agregar = False
        pb_editar = False
        Call gactualizaopcion(pbderecho_agregar, pbderecho_editar, pbderecho_borrar, pbderecho_imprimir)
        Call gactualiza_barra(Me)
        Call Botones_Navegacion_barra
    End If
End Sub

