unit CaptuRap;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  StdCtrls, Forms, DBCtrls, DB, DBTables, Mask, ExtCtrls, Grids, DBGrids,
  Buttons,Dialogos, Menus,Printers, ComCtrls, Tabnotbk,conver,checa,describe,tablas,
  Tabs,Apertura,dialogs,TablasBloqueo,Tara,RepoSQL, RoundButton,
  Expresion;

type
  TFormaCapturaRapida = class(TForm)
    FuenteTablaFacturae: TDataSource;
    TablaFacturae: TTable;
    TablaDeta: TTable;
    FuenteTablaDeta: TDataSource;
    TablaCliente: TTable;
    TablaInventario: TTable;
    TablaFacturaD: TTable;
    TablaVendedores: TTable;
    TablamovimientosInventario: TTable;
    TablaCuentasxCobrar: TTable;
    MainMenu1: TMainMenu;
    Archivo1: TMenuItem;
    Salir1: TMenuItem;
    Registro1: TMenuItem;
    Nuevo1: TMenuItem;
    Modificar1: TMenuItem;
    Guardar1: TMenuItem;
    Buscar1: TMenuItem;
    Imprimir1: TMenuItem;
    Reportes1: TMenuItem;
    Ayuda1: TMenuItem;
    Consultas1: TMenuItem;
    TablaDetaCANTIDAD: TFloatField;
    TablaDetaPRECIO: TCurrencyField;
    TablaDetaDESCUENTO: TFloatField;
    TablaDetaIMPORTE: TCurrencyField;
    Label13: TLabel;
    Concentrar1: TMenuItem;
    Panel1: TPanel;
    BotonTotales: TSpeedButton;
    BotonSalir: TSpeedButton;
    BotonPago: TSpeedButton;
    BotonBuscar: TSpeedButton;
    BotonCambios: TSpeedButton;
    TipoDocumento: TLabel;
    Base: TComboBox;
    Panel2: TPanel;
    Comisiones1: TMenuItem;
    BotonNuevo: TSpeedButton;
    BotonGuardar: TSpeedButton;
    BotonImprimir: TSpeedButton;
    TablaDetaUNIDAD: TStringField;
    ConsecutivodeFacturas1: TMenuItem;
    Eliminar1: TMenuItem;
    ComisionesDetallado1: TMenuItem;
    Generar1: TMenuItem;
    Pedido1: TMenuItem;
    Remisin1: TMenuItem;
    Factura1: TMenuItem;
    TablaDetaCOSTO: TCurrencyField;
    VentasyUtilidad1: TMenuItem;
    BotonPreliminar: TSpeedButton;
    Calculadora1: TMenuItem;
    Opciones1: TMenuItem;
    Divisas1: TMenuItem;
    TotalesporDivisa1: TMenuItem;
    ImprimirDocumento1: TMenuItem;
    ImprimirRangodeDocumentos1: TMenuItem;
    Cancelar1: TMenuItem;
    Formatos: TMenuItem;
    Elegirformato1: TMenuItem;
    DisearFormato1: TMenuItem;
    BotonObservacion: TSpeedButton;
    Devolucin1: TMenuItem;
    NotadeCrdito1: TMenuItem;
    VentasporDa1: TMenuItem;
    VentasporMes1: TMenuItem;
    Ventasporao1: TMenuItem;
    VentasporArtculo1: TMenuItem;
    ImprimePlantilla1: TMenuItem;
    DocumentosCancelados1: TMenuItem;
    Temas1: TMenuItem;
    CancelaMovimiento1: TMenuItem;
    DesgloceporMoneda1: TMenuItem;
    TablaDetaCLAVE: TStringField;
    TablaDetaPRODUCTO: TStringField;
    Panel3: TPanel;
    VerFunciones1: TMenuItem;
    UtilidadporProducto1: TMenuItem;
    FacturadeCierre1: TMenuItem;
    CortedeCaja1: TMenuItem;
    TablaDetaIMPUESTO: TFloatField;
    RangodeDocumentos1: TMenuItem;
    ConfigurarCaja1: TMenuItem;
    Label6: TLabel;
    Hora: TLabel;
    Label18: TLabel;
    SaltarEncabezado1: TMenuItem;
    IniciaenClave1: TMenuItem;
    AsignarFormato1: TMenuItem;
    CtrlF11: TMenuItem;
    CtrlF21: TMenuItem;
    CtrlF31: TMenuItem;
    CtrlF41: TMenuItem;
    CtrlF51: TMenuItem;
    CtrlF61: TMenuItem;
    VentasporCaja1: TMenuItem;
    FacturaeImprimir1: TMenuItem;
    VentasporVendedor1: TMenuItem;
    TablaDetaFACTOR: TFloatField;
    SalidasdeEfectivo1: TMenuItem;
    CortedeCajayRetiros1: TMenuItem;
    CambioPrecio1: TMenuItem;
    TablaDetaEMPAQUE: TFloatField;
    CapturaporEmpaque1: TMenuItem;
    ConfigurarLectorSerial1: TMenuItem;
    Panel6: TPanel;
    Panel5: TPanel;
    caja: TScrollBox;
    Bevel12: TBevel;
    Bevel15: TBevel;
    Bevel8: TBevel;
    Bevel3: TBevel;
    Bevel1: TBevel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label7: TLabel;
    Label9: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    IvaEtiqueta: TLabel;
    usuario: TLabel;
    Nombre: TLabel;
    Direccion: TLabel;
    Direc2: TLabel;
    Poblacion: TLabel;
    RFC: TLabel;
    CodigoPostal: TLabel;
    Label1: TLabel;
    Funciones: TLabel;
    EditCLDOC_F: TDBEdit;
    EditCLCLI_F: TDBEdit;
    EditBCLIM_F: TDBEdit;
    EditCLVEN_F: TDBEdit;
    EditDESFI_F: TDBEdit;
    EditCTOVE_F: TDBEdit;
    EditIMIM1_F: TDBEdit;
    EditFEDOC_F: TMaskEdit;
    TipoPago: TComboBox;
    Panel4: TPanel;
    Detalle: TDBGrid;
    VerTotalesenformatoDigital1: TMenuItem;
    TablaAuxiliar: TTable;
    TablaTotal: TTable;
    Estado: TLabel;
    Panel7: TPanel;
    Label2: TLabel;
    CAMBIO_F: TDBEdit;
    SuCambio: TLabel;
    VentaenEspera1: TMenuItem;
    TablaDetaPREC_TARA: TFloatField;
    TablaDetaDESCUENTO2: TFloatField;
    TablaDetaDESCUENTO3: TFloatField;
    CorteZ1: TMenuItem;
    VerCampoTara1: TMenuItem;
    TablaDetaTARA: TStringField;
    Panel8: TPanel;
    Bevel4: TBevel;
    ImpresoBitmap: TImage;
    Image1: TImage;
    Impresa: TLabel;
    LabelFactor: TLabel;
    EditEmpaque: TDBEdit;
    LabelEmpaque: TLabel;
    EditClave: TDBEdit;
    EditTARA: TDBEdit;
    Label10: TLabel;
    EditCantidad: TDBEdit;
    Label15: TLabel;
    BotonTerminaVenta: TBitBtn;
    BotonNuevaVenta: TBitBtn;
    BotonAgregarPartida: TBitBtn;
    Bevel2: TBevel;
    EstadoCaptura: TLabel;
    Label11: TLabel;
    PanelSuma: TPanel;
    Label12: TLabel;
    SumarTotal: TLabel;
    Label22: TLabel;
    ImpuestoValor: TLabel;
    Label24: TLabel;
    TotalFact: TLabel;
    Navegador: TDBNavigator;
    BotonRedondo1: TRoundButton;
    BotonRedondo2: TRoundButton;
    CopiadeDocumento1: TMenuItem;
    Tabulador1: TMenuItem;
    LabelPartidas: TLabel;
    Bevel5: TBevel;
    CorteDetallado1: TMenuItem;
    CorteComparativo1: TMenuItem;
    TablaDetaFPGC: TFloatField;
    UtilidadporProductoLinea1: TMenuItem;
    CorteZRESUMEN1: TMenuItem;
    LabelFPGC: TLabel;
    CursorenCliente1: TMenuItem;
    ReporteFPGC1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure EditCLCLI_FExit(Sender: TObject);
    procedure BotonNuevoClick(Sender: TObject);
    procedure BotonGuardarClick(Sender: TObject);
    procedure NavegadorClick(Sender: TObject; Button: TNavigateBtn);
    procedure DetalleColEnter(Sender: TObject);
    procedure EditCLCLI_FKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditCLVEN_FKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditCLVEN_FExit(Sender: TObject);
    procedure EditFEDOC_FEnter(Sender: TObject);
    procedure DetalleKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormActivate(Sender: TObject);
    procedure EditNALMA_FKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditFEDOC_FKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditIMIM1_FEnter(Sender: TObject);
    procedure EditDESFI_FEnter(Sender: TObject);
    procedure BotonSalirClick(Sender: TObject);
    procedure Consultas1Click(Sender: TObject);
    procedure EditCLDOC_FKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BotonBuscarClick(Sender: TObject);
    procedure BotonCambiosClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BotonImprimirClick(Sender: TObject);
    procedure DetalleEditButtonClick(Sender: TObject);
    procedure FolderChange(Sender: TObject; NewTab: Integer;
      var AllowChange: Boolean);
    procedure BaseChange(Sender: TObject);
    procedure EditCLDOC_FEnter(Sender: TObject);
    procedure EditCLCLI_FEnter(Sender: TObject);
    procedure EditBCLIM_FEnter(Sender: TObject);
    procedure EditCLVEN_FEnter(Sender: TObject);
    procedure EditCTOVE_FEnter(Sender: TObject);
    procedure EditCLPED_FEnter(Sender: TObject);
    procedure EditDECOT_FEnter(Sender: TObject);
    procedure Concentrar1Click(Sender: TObject);
    procedure Comisiones1Click(Sender: TObject);
    procedure EditFEDOC_FExit(Sender: TObject);
    procedure EditCLDOC_FMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure EditCLCLI_FMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure EditCLVEN_FMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure EditCTOVE_FMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure EditBCLIM_FMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure EditCLPED_FMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure EditFEDOC_FMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure EditIMIM1_FMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure EditDESFI_FMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure EditDECOT_FMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure EditNALMA_FMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure EditREMIS_FKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditCONDI_FKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditDESTI_FKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ConsecutivodeFacturas1Click(Sender: TObject);
    procedure Eliminar1Click(Sender: TObject);
    procedure ComisionesDetallado1Click(Sender: TObject);
    procedure Factura1Click(Sender: TObject);
    procedure Remisin1Click(Sender: TObject);
    procedure Pedido1Click(Sender: TObject);
    procedure VentasyUtilidad1Click(Sender: TObject);
    procedure BotonPreliminarClick(Sender: TObject);
    procedure Calculadora1Click(Sender: TObject);
    procedure Divisas1Click(Sender: TObject);
    procedure ImprimirRangodeDocumentos1Click(Sender: TObject);
    procedure Cancelar1Click(Sender: TObject);
    procedure BotonTotalesClick(Sender: TObject);
    procedure EditDECOT_FKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Elegirformato1Click(Sender: TObject);
    procedure DisearFormato1Click(Sender: TObject);
    procedure TablaFacturaeEditError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure TablaFacturaePostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure EditCLDOC_FExit(Sender: TObject);
    procedure EditCTOVE_FExit(Sender: TObject);
    procedure EditBCLIM_FExit(Sender: TObject);
    procedure EditIMIM1_FExit(Sender: TObject);
    procedure EditDESFI_FExit(Sender: TObject);
    procedure TablaFacturaeDeleteError(DataSet: TDataSet;
      E: EDatabaseError; var Action: TDataAction);
    procedure TablaFacturaeUpdateError(DataSet: TDataSet;
      E: EDatabaseError; UpdateKind: TUpdateKind;
      var UpdateAction: TUpdateAction);
    procedure TablaFacturaDDeleteError(DataSet: TDataSet;
      E: EDatabaseError; var Action: TDataAction);
    procedure TablaFacturaDEditError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure TablaFacturaDPostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure TablaFacturaDUpdateError(DataSet: TDataSet;
      E: EDatabaseError; UpdateKind: TUpdateKind;
      var UpdateAction: TUpdateAction);
    procedure TablaClienteEditError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure TablaClienteDeleteError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure TablaClientePostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure TablaClienteUpdateError(DataSet: TDataSet; E: EDatabaseError;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
    procedure TablaInventarioDeleteError(DataSet: TDataSet;
      E: EDatabaseError; var Action: TDataAction);
    procedure TablaInventarioEditError(DataSet: TDataSet;
      E: EDatabaseError; var Action: TDataAction);
    procedure TablaInventarioPostError(DataSet: TDataSet;
      E: EDatabaseError; var Action: TDataAction);
    procedure TablaInventarioUpdateError(DataSet: TDataSet;
      E: EDatabaseError; UpdateKind: TUpdateKind;
      var UpdateAction: TUpdateAction);
    procedure TablaVendedoresDeleteError(DataSet: TDataSet;
      E: EDatabaseError; var Action: TDataAction);
    procedure TablaVendedoresEditError(DataSet: TDataSet;
      E: EDatabaseError; var Action: TDataAction);
    procedure TablaVendedoresPostError(DataSet: TDataSet;
      E: EDatabaseError; var Action: TDataAction);
    procedure TablaVendedoresUpdateError(DataSet: TDataSet;
      E: EDatabaseError; UpdateKind: TUpdateKind;
      var UpdateAction: TUpdateAction);
    procedure TablamovimientosInventarioDeleteError(DataSet: TDataSet;
      E: EDatabaseError; var Action: TDataAction);
    procedure TablamovimientosInventarioEditError(DataSet: TDataSet;
      E: EDatabaseError; var Action: TDataAction);
    procedure TablamovimientosInventarioPostError(DataSet: TDataSet;
      E: EDatabaseError; var Action: TDataAction);
    procedure TablamovimientosInventarioUpdateError(DataSet: TDataSet;
      E: EDatabaseError; UpdateKind: TUpdateKind;
      var UpdateAction: TUpdateAction);
    procedure BotonObservacionClick(Sender: TObject);
    procedure BotonCambiosMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure BotonNuevoMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure BotonGuardarMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure BotonTotalesMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure BotonPreliminarMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure BotonObservacionMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure BotonBuscarMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure BotonImprimirMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure BotonPagoMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Devolucin1Click(Sender: TObject);
    procedure VentasporDa1Click(Sender: TObject);
    procedure VentasporMes1Click(Sender: TObject);
    procedure Ventasporao1Click(Sender: TObject);
    procedure VentasporArtculo1Click(Sender: TObject);
    procedure ImprimePlantilla1Click(Sender: TObject);
    procedure DocumentosCancelados1Click(Sender: TObject);
    procedure EditDIVIS_FKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditDIVIS_FEnter(Sender: TObject);
    procedure EditDIVIS_FExit(Sender: TObject);
    procedure Temas1Click(Sender: TObject);
    procedure CancelaMovimiento1Click(Sender: TObject);
    procedure DesgloceporMoneda1Click(Sender: TObject);
    procedure EditDESFI_FKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DetalleKeyPress(Sender: TObject; var Key: Char);
    procedure DetalleEnter(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
    procedure CAMBIO_FExit(Sender: TObject);
    procedure CAMBIO_FKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure VerFunciones1Click(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DetalleColExit(Sender: TObject);
    procedure UtilidadporProducto1Click(Sender: TObject);
    procedure FacturadeCierre1Click(Sender: TObject);
    procedure CortedeCaja1Click(Sender: TObject);
    procedure CAMBIO_FEnter(Sender: TObject);
    procedure RangodeDocumentos1Click(Sender: TObject);
    procedure ConfigurarCaja1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure DetalleDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure EditClaveKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditCantidadKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure SaltarEncabezado1Click(Sender: TObject);
    procedure BotonAgregarPartidaClick(Sender: TObject);
    procedure IniciaenClave1Click(Sender: TObject);
    procedure CtrlF11Click(Sender: TObject);
    procedure CtrlF21Click(Sender: TObject);
    procedure CtrlF31Click(Sender: TObject);
    procedure CtrlF41Click(Sender: TObject);
    procedure CtrlF51Click(Sender: TObject);
    procedure CtrlF61Click(Sender: TObject);
    procedure VentasporCaja1Click(Sender: TObject);
    procedure FacturaeImprimir1Click(Sender: TObject);
    procedure EditCantidadEnter(Sender: TObject);
    procedure VentasporVendedor1Click(Sender: TObject);
    procedure SalidasdeEfectivo1Click(Sender: TObject);
    procedure CortedeCajayRetiros1Click(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure CambioPrecio1Click(Sender: TObject);
    procedure EditEmpaqueExit(Sender: TObject);
    procedure EditEmpaqueKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure CapturaporEmpaque1Click(Sender: TObject);
    procedure DetalleKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure VerTotalesenformatoDigital1Click(Sender: TObject);
    procedure TablaDetaAfterDelete(DataSet: TDataSet);
    procedure VentaenEspera1Click(Sender: TObject);
    procedure CorteZ1Click(Sender: TObject);
    procedure VerCampoTara1Click(Sender: TObject);
    procedure EditTARAKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormPaint(Sender: TObject);
    procedure CopiadeDocumento1Click(Sender: TObject);
    procedure Tabulador1Click(Sender: TObject);
    procedure EditIMIM1_FKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure CorteDetallado1Click(Sender: TObject);
    procedure CorteComparativo1Click(Sender: TObject);
    procedure UtilidadporProductoLinea1Click(Sender: TObject);
    procedure CorteZRESUMEN1Click(Sender: TObject);
    procedure CursorenCliente1Click(Sender: TObject);
    procedure ReporteFPGC1Click(Sender: TObject);
  private
procedure MyOnGetTextC(Sender: TField; var Text: string; DisplayText: Boolean);
    { private declarations }
  public
procedure AppMessage(var Msg: TMsg; var Handled: Boolean);
    { public declarations }
  end;



type
registroencab=record
Numero:string[10];
claveCli:string[15];
NombreCli:string[60];
direccionCli:String[60];
direccionCli2:string[60];
Poblacion:string[40];
Vendedor:string[15];
Comision:string[4];
Mostrador:string[10];
Condiciones:string[10];
Destino:string[10];
FechaDoc:string[15];
FechaEnt:string[15];
FechaVen:string[15];
Iva:String[10];
DescFina:string[10];
DescComer:string[10];
Almacen:string[10];
Pago:string[25];

end;

type
registrodeta=record
cantidad:real;
clave:string[15];
descripcion:string[40];
precio:real;
descuento:real;
costo:real;
unidad:string[3];
divisa:string[6];
impuesto:real;
factor:real;
tara:string[6];
FPGC:real;
end;

type
RegistroCaja=record
No_caja:string[3];
Cl_vendedor:string[5];
Nom_formato:string[25];

end;


var
  FormaCapturaRapida: TFormaCapturaRapida;
   numeromovimiento,tipomovimiento,indice:longint;
   cantidad,suma,iva1,total1,costo,saldoanterior:Currency;
   iva,desfin,desfin1:Real;
   indices,ant,sig:integer;
   meses:array[1..12] of Real;
   cliente:String;
   decimales,formatonum:Word;
   local:Boolean;
   Color1:TColor;
   nombreformato:string;
   ultimovendedor:string[10];
   CambiaPrecios:string[1];
   PrecioNumero:Word;
   Orig:String[8];
   ivatotal:Real;
   RangoDocumentos:Boolean;
   ExistenciasNegativos:string[1];
   desglosado:boolean;
   CajaLocal,VendedorDefault:String[10];
   Digitos:Word;
   DigitosTotal:Word;
   Digi:string[20];
   ListaClaves,ListaCantidad:TStringList;
   SaltarEncabezado,IniciaenClave:boolean;
   IntegrarMI:char;
   PreciosPolitica:Boolean;
   MovimientoBorrado:integer;
   AsignaControlVariable:integer;
   UltimoDocumento:longInt;
   Orig2:String[8];
   DatoRango:string;
   ruta8:string;
   ruta_21:string[1];
   Estado_Guardar_G:string[3];
   CapturarClaves:Boolean;
   AplicarDescuentoClienteLinea:Boolean;

CampoComparaTara,ValorComparaTara:string[25];

VerTara,VerRepo:Boolean;
PermiteCambioPrecio:boolean;


procedure posicionafactura(clave:string);
implementation


uses ConVen, ConInve, Acerca, consulta, buscar, ConPro, formatos,
  cerrar,formato, conclie, barras, advierte, edicion, moneda, totales,
  imprime, desgloce, {Concobra, cxcd,} observa, progreso, Cucobra,
  AyudaMod, Rango, Caja, XPrecio, Efectivo, AltaClave,
  adminis, ClaveRapida{, Rango};

{$R *.DFM}

function ClavePrincipal(clav:string):boolean;
begin
with FormaCapturaRapida do
begin
ClavePrincipal:=False;
try
if (TablaInventario.FindKey([TablaDeta.FieldByName('Clave').AsString]))and(TablaDeta.FieldByName('CLAVE').AsString<>'COMENTARIO') then
ClavePrincipal:=True;

except
ClavePrincipal:=False;
end;
end;

end;

function AplicaOperacion(EditOperacion:TDBEdit):real;
//var
//aux:string;
begin

EditOperacion.Text:=CalculaExpresionReal(EditOperacion.Text);

end;


function GeneraUltimoDocumento(ulti:string):integer;
var
TablaUltimo:TTable;
begin
with FormaCapturaRapida do
begin

TablaUltimo:=TTable.Create(Application);
TablaUltimo.DatabaseName:=TablaFacturaE.DatabaseName;
TablaUltimo.IndexName:=TablaFacturaE.IndexName;
TablaUltimo.TableName:=TablaFacturaE.TableName;
TablaUltimo.Open;
TablaUltimo.Refresh;

TablaUltimo.SetRange([ulti],[ulti]);

if TablaUltimo.RecordCount>1 then
begin
TablaUltimo.CancelRange;
TablaUltimo.Refresh;
TablaUltimo.Last;
GeneraUltimoDocumento:=TablaUltimo.FieldByName('CLDOC_F').AsInteger+1;
end
else
GeneraUltimoDocumento:=StrToInt(ulti);


TablaUltimo.Close;
TablaUltimo.Free;



end;
end;


procedure AngleTextOut(Canvas: TCanvas; const Text: String; x, y, angle:
Integer);
var
  LogFont  : TLogFont;
  SaveFont : TFont;
begin
  SaveFont := TFont.Create;
   Canvas.Font.Size:=30;
  SaveFont.Assign(Canvas.Font);
  GetObject(SaveFont.Handle, sizeof(TLogFont), @LogFont);
  with LogFont do
  begin
   lfEscapement := angle *10;
   lfPitchAndFamily := FIXED_PITCH or FF_DONTCARE;
   lfOutPrecision:=out_tt_precis;
   lfQuality:=proof_quality;
  end;
  Canvas.Font.Handle := CreateFontIndirect(LogFont);
  SetBkMode(Canvas.Handle, TRANSPARENT);
//  Canvas.Font.Size:=15;
  Canvas.TextOut(x, y, Text);

  Canvas.Font.Assign(SaveFont);

  SaveFont.Free;
  
end;


procedure CreaArchivoTotal;
var
arch:TextFile;
aux:string;
i:integer;
begin
with FormaCapturaRapida do
begin
AssignFile(arch,leeruta+'\total.dat');
Rewrite(arch);
aux:='';
for i:=1 to length(TotalFact.Caption) do
begin
if (TotalFact.Caption[i]<>',')and (TotalFact.Caption[i]<>'.')and (TotalFact.Caption[i]<>' ') then
aux:=aux+TotalFact.Caption[i];

end;
Writeln(arch,aux);

CloseFile(arch);

end;
end;

procedure PonePagado;
var
  Bitmap : TBitMap;
begin
  Bitmap := TBitmap.Create;
  try
    with Bitmap do begin
      LoadFromFile(FormaCapturaRapida.TablaDeta.DataBaseName+'\pagado.bmp');
      Transparent := true;
      TransParentColor := BitMap.canvas.pixels[5,5];
//    FormaCapturaRapida.Detalle.Canvas.Draw(0,0,BitMap);
//    ShowMessage('');
      TransparentMode := tmAuto;   // Transparent color now is clDefault = TColor($20000000);
      FormaCapturaRapida.Detalle.Canvas.Draw(50,50,BitMap);
//          ShowMessage('');
    end;

  finally
  Bitmap.Free;


  end;
end;

//*********funciones para filtro******

procedure AgregaPartidaDetalle;
begin
with  FormaCapturaRapida do
begin

TablaDeta.Last;
//ShowMessage(TablaDeta.FieldByName('Clave').AsString+TablaDeta.FieldByName('Producto').AsString);
if (TablaDeta.FieldByName('Clave').AsString<>'')and
(TablaDeta.FieldByName('Producto').AsString<>'')
//(TablaDeta.FieldByName('cantidad').AsString<>'1')
then
begin
//  MuestraMensaje('entro');
  TablaDeta.Append;
  TablaDeta.FieldByName('Cantidad').AsString:='1';
end;

end;
end;

procedure EntraEmpaque;
begin
with  FormaCapturaRapida do
begin

try
if EditClave.Text<>'' then
begin
 if (TablaDeta.State=dsEdit)or(TablaDeta.State=dsInsert) then
 begin
 TablaDeta.Post;
 TablaDeta.Edit;
 end;

Detalle.SelectedIndex:=2;

//if (EditEmpaque.Visible)and(EditEmpaque.Text='')and(EditClave.Tag<>1) then//caso de suso de empaques
if (EditEmpaque.Visible)and(EditClave.Tag<>1) then//caso de suso de empaques
begin
try
//TablaDeta.Prior;
EditEmpaque.SetFocus;
Exit;

except
end;



end
else
begin
//caso normal sin empaques
if IniciaenClave then
EditClave.SetFocus
else
EditCantidad.SetFocus;
end;//else Editempaques

end;
except

end;
end;


end;

function CalculaDescuentoClienteLinea(clave,linea:String):real;
var
Tabla:TTable;
begin
with  FormaCapturaRapida do
begin
Tabla:=TTable.Create(Application);
Tabla.DatabaseName:=ruta(8);
Tabla.IndexName:='CLCLI_D';
Tabla.TableName:='ClieDesc.dbf';
Tabla.Open;
Tabla.SetRange([clave],[clave]);
CalculaDescuentoClienteLinea:=0;
Tabla.First;
while not Tabla.Eof do
begin
if Tabla.FieldByName('LINEA_D').AsString=linea then
begin
CalculaDescuentoClienteLinea:= Tabla.FieldByName('DESCU_D').AsFloat;
break;
end;
Tabla.Next;
end;


Tabla.Free;
//rrr
end;
end;

procedure ConectaLectorSerial(sender: TObject);
//var
//arch:TextFile;
//linea:string;
  begin
end;



procedure EstadoCap(esta:Boolean);
begin
with FormaCapturaRapida do
begin

if esta then
begin
EstadoCaptura.Caption:='Capturando...';
Panel2.Color:=clred;
end
else
begin
EstadoCaptura.Caption:='Terminada';
Panel2.Color:=clBtnFace;

end;

end;//with
end;


function Factor_de_coincidencia(clav:string):real;
var
Tabla:TTable;
i:integer;
fac:real;
aux,aux2:string;
begin

try
Factor_de_coincidencia:=0;

if clav<>'' then
begin
Tabla:=TTable.Create(Application);
Tabla.DatabaseName:=FormaCapturaRapida.TablaInventario.DatabaseName;
Tabla.TableName:='INVENTAR.DBF';
Tabla.IndexName:='DSCPR_I';
Tabla.Open;

Tabla.FindNearest([clav]);
aux:=UpperCase(clav);
aux2:=UpperCase(Tabla.FieldByName('DSCPR_I').AsString);
fac:=0;
for i:=1 to length(clav)do
begin
if aux[i]=aux2[i] then
fac:=fac+1;
end;

fac:=fac/length(clav);

Factor_de_coincidencia:=fac;

Tabla.Close;
Tabla.Free;
end;
except
end;
end;

function ClaveAlterna(clav:string):string;
var
Tabla:TTable;
begin

try
ClaveAlterna:='';

if clav<>'' then
begin
Tabla:=TTable.Create(Application);
Tabla.DatabaseName:=FormaCapturaRapida.TablaInventario.DatabaseName;
Tabla.TableName:='INVENTAR.DBF';
Tabla.IndexName:='CODIG_I';
Tabla.Open;

if Tabla.FindKey([clav]) then
ClaveAlterna:=Tabla.FieldByName('CLPRO_I').AsString;

Tabla.Close;
Tabla.Free;
end;
except
end;
end;



function AsignaControl:integer;
begin
AsignaControl:=Trunc(Frac(Now)*100000);

end;


function RedondeaTotal(su:real;Di:integer):real;
var
T:real;
decimal:integer;
//ajustar:real;
modu:integer;
begin
Di:=Di*10;

decimal:=Trunc(Frac(su)*100);
T:=su;
modu:=decimal mod Di;
//MuestraMensaje(FloatToStr(modu));
if decimal<>0 then
begin
decimal:=decimal div Di;
if modu>0 then
T:=Trunc(su)+(((decimal*Di)+Di)/100)
else
T:=Trunc(su)+((decimal*Di)/100)

end;
//MuestraMensaje(FloatToStr(su)+'   '+FloatToStr(T)+'   '+FloatToStr(di)+'   '+FloatToStr(decimal));

{if Decimal mod Di=0 then
RedondeaTotal:=su
else
begin
Decimal:=(Trunc(decimal/Di)+1)*Di;
if Decimal=100 then
RedondeaTotal:=su+1
else
RedondeaTotal:=su+(Decimal/100);
end;}


//Str(su:12:Di, T);

RedondeaTotal:=T;
//StrToFloat(T);

end;

function LeePrecioPreferencial(pre:integer):real;
begin
with FormaCapturaRapida do
begin
if pre<1 then pre:=1;
    case Pre of

  1:begin
  TablaDeta.FieldByName('PRECIO').AsFloat:= TablaInventario.FieldByName('PPUBL_I').AsFloat;
  LeePrecioPreferencial:=TablaInventario.FieldByName('PPUBL_I').AsFloat;
  end;

  2:begin
  TablaDeta.FieldByName('PRECIO').AsString:=  TablaInventario.FieldByName('PLIS2_I').AsString;
    LeePrecioPreferencial:=TablaInventario.FieldByName('PLIS2_I').AsFloat;
  end;

  3:begin
  TablaDeta.FieldByName('PRECIO').AsString:=  TablaInventario.FieldByName('PLIS3_I').AsString;
    LeePrecioPreferencial:=TablaInventario.FieldByName('PLIS3_I').AsFloat;
  end;

  4:begin
  TablaDeta.FieldByName('PRECIO').AsString:=  TablaInventario.FieldByName('PLIS4_I').AsString;
    LeePrecioPreferencial:=TablaInventario.FieldByName('PLIS4_I').AsFloat;
  end;

  5:begin
  TablaDeta.FieldByName('PRECIO').AsString:=  TablaInventario.FieldByName('PMINI_I').AsString;
    LeePrecioPreferencial:=TablaInventario.FieldByName('PMINI_I').AsFloat;
  end;

  6:begin
  TablaDeta.FieldByName('PRECIO').AsString:=  TablaInventario.FieldByName('PLIS6_I').AsString;
    LeePrecioPreferencial:=TablaInventario.FieldByName('PLIS6_I').AsFloat;
  end;

  7:begin
  TablaDeta.FieldByName('PRECIO').AsString:=  TablaInventario.FieldByName('PLIS7_I').AsString;
    LeePrecioPreferencial:=TablaInventario.FieldByName('PLIS7_I').AsFloat;
  end;


  end;


end;
end;

function LeePrecioPolitica(p1,p2,p3,p4,p5,p6,p7,i1,i2,i3,i4,i5,i6,i7,canti:real):Real;
var
maximo:real;
pre:integer;
begin
maximo:=i1;
pre:=1;
if i2>maximo then
begin
maximo:=i2;
pre:=2;
end;
if i3>maximo then
begin
 maximo:=i3;
pre:=3;
end;

if i4>maximo then
begin
 maximo:=i4;
pre:=4;
end;

if i5>maximo then
begin
 maximo:=i5;
pre:=5;
end;

if i6>maximo then
begin
 maximo:=i6;
pre:=6;
end;

if i7>maximo then
begin
 maximo:=i7;
pre:=7;
end;

LeePrecioPolitica:=p1;
if canti<maximo then
begin
if (canti>=0)and(canti<=i1) then
begin
LeePrecioPolitica:=p1;
exit;
end;
if (canti>i1)and(canti<=i2) then
begin
LeePrecioPolitica:=p2;
exit;
end;

if (canti>i2)and(canti<=i3) then
begin
 LeePrecioPolitica:=p3;
exit;
end;

if (canti>i3)and(canti<=i4) then
begin
 LeePrecioPolitica:=p4;
exit;
end;

if (canti>i4)and(canti<=i5) then
begin
LeePrecioPolitica:=p5;
exit;
end;

if (canti>i5)and(canti<=i6) then
begin
LeePrecioPolitica:=p6;
exit;
end;

if (canti>i6) then
begin
LeePrecioPolitica:=p7;
exit;
end;

end
else
LeePrecioPolitica:=LeePrecioPreferencial(pre);

end;

function PrefijoMovimiento(cadena:string):char;
var
pre:char;
begin
if cadena<>'' then
pre:=cadena[1]
else
pre:= ' ';
PrefijoMovimiento:=pre;


end;

{function SacaFormato(Cap:string):string;
var
aux:string;
i:integer;
begin
for i:=1 to length(cap) do
begin



end;

end;}

procedure Imprime(NomFor:string);
begin
with FormaCapturaRapida do
begin

if ImpresoraLista then
begin
if FileExists(NomFor) then
begin
UsuarioActual(Usuario.Caption);
LeeEtiquetasMoneda(valordivisaetiqueta('M.N.',1),valordivisaetiqueta('M.N.',2),valordivisaetiqueta('M.N.',3),valordivisaetiqueta('M.N.',4));
forma(FormaCapturaRapida.TablaFacturaE,FormaCapturaRapida.TablaDeta,NomFor,'i');
end
else
MuestraMensaje('El Formato '+NomFor+' No Existe');
end
else
MuestraMensaje('La Impresora No Se Encuentra Lista...');


end;
end;

procedure GuardarOpciones;
var
arch:TextFile;
begin
with FormaCapturaRapida do
begin


if SaltarEncabezado1.Checked then
begin
Assignfile(arch,leeruta+'\encabeza.cnf');
ReWrite(arch);
Writeln(arch,'S');
//Writeln(arch,'S');
if IniciaenClave1.Checked then
begin
Writeln(arch,'S');
//Writeln(arch,'S');
end
else
begin
Writeln(arch,'N');
//Writeln(arch,'N');
end;

//*******teclas de funcion ctrl+f1, ctrl+f2, etc.
Writeln(arch,CtrlF11.Caption);
Writeln(arch,CtrlF21.Caption);
Writeln(arch,CtrlF31.Caption);
Writeln(arch,CtrlF41.Caption);
Writeln(arch,CtrlF51.Caption);
Writeln(arch,CtrlF61.Caption);
//*******teclas de funcion ctrl+f1, ctrl+f2, etc.
if VerTotalesenformatoDigital1.Checked then
Writeln(arch,'S')
else
Writeln(arch,'N');

CloseFile(arch);
end
else
begin
Assignfile(arch,leeruta+'\encabeza.cnf');
ReWrite(arch);
Writeln(arch,'N');
//Writeln(arch,'N');

if IniciaenClave1.Checked then
begin
Writeln(arch,'S');
//Writeln(arch,'S');
end
else
begin
Writeln(arch,'N');
//Writeln(arch,'N');
end;

//*******teclas de funcion ctrl+f1, ctrl+f2, etc.
Writeln(arch,CtrlF11.Caption);
Writeln(arch,CtrlF21.Caption);
Writeln(arch,CtrlF31.Caption);
Writeln(arch,CtrlF41.Caption);
Writeln(arch,CtrlF51.Caption);
Writeln(arch,CtrlF61.Caption);
//*******teclas de funcion ctrl+f1, ctrl+f2, etc.


CloseFile(arch);



end;
end;
end;


function EligeFormato:String;
begin
with FormaCapturaRapida do
begin
FormaFormatos:=TFormaFormatos.Create(Application);
FormaBarras:=TFormaBarras.Create(Application);

FormaFormatos.Tag:=3;
FormaFormatos.Rangos.Visible:=False;
FormaFormatos.Formatos.Visible:=True;
FormaFormatos.ShowModal;
if FormaFormatos.Tag=1 then
begin
if FileExists(Formaformatos.Rutas.Text) then
begin
//nombreformato:=Formaformatos.Rutas.Text;
EligeFormato:=Formaformatos.Rutas.Text;
{forma(TablaFacturaE,TablaFacturaE,Formaformatos.Rutas.Text,'i')}

end
else
MuestraMensaje('El Formato '+Formaformatos.Rutas.Text+' No Existe');
end;

FormaFormatos.Tag:=1;
FormaFormatos.Free;
FormaBarras.Free;


end;
end;


procedure CreaMovimientoInventario(TipoMov:word);
begin
with FormaCapturaRapida do
begin
try
//MuestraMensaje('entro1');
if IntegrarMI='S' then
begin
//MuestraMensaje('entro2 '+IntTOstr(TipoMov));
TablaMovimientosInventario.Last;
numeromovimiento:=TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger+1;
tipomovimiento:=TipoMov;

{TablaMovimientosInventario.Insert;
if MovimientoBorrado<>0 then
TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger:=MovimientoBorrado
else
TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger:=numeromovimiento;
TablamovimientosInventario.FieldByName('CONTROL').AsInteger:=AsignaControlVariable;
TablamovimientosInventario.FieldByName('TIMOV_MI').AsInteger:=tipomovimiento;
TablamovimientosInventario.FieldByName('FEDOC_MI').AsString:= EditFEDOC_F.Text;
TablamovimientosInventario.FieldByName('REFMO_MI').AsString:=Base.Text[1]+ EditCLDOC_F.Text;
TablamovimientosInventario.FieldByName('NUDOC_MI').AsString:=PrefijoMovimiento(Base.Text)+  EditCLDOC_F.Text;
TablamovimientosInventario.FieldByName('CLCOP_MI').AsString:= EditCLCLI_F.Text;

TablaMovimientosInventario.Post;}

end;//if movimientos

except

end;


end;
end;


function CantidadApartada(clave:string;regi:integer):real;
var
//acumulado:real;
indi:integer;
aux:string;
begin
{   acumulado:=0;
   for i:=1 to 100 do
   begin
    if  (Apartados[i,1]=clave)and(regi<>i) then
    acumulado:=acumulado+StrToInt(Apartados[i,2])



   end;
   CantidadApartada:=acumulado;}
//   acumulado:=0;
   if ListaClaves.Find(clave,indi) then
   begin
   aux:=ListaCantidad.Strings[indi];
    CantidadApartada:=StrToFloat(aux);
    //Insert(indi,FloatToStr(StrToFloat(ListaCantidad.Strings[indi])+TablaDeta.FieldByName('CANTIDAD').AsFloat));

   end
   else
   CantidadApartada:=0;

end;

procedure TFormaCapturaRapida.MyOnGetTextC(Sender: TField; var Text: string; DisplayText: Boolean);
var
aux:string;
//i:integer;
begin
aux:=Sender.AsString;
text:=aux;
//Sender.

if aux<>'' then
Case Sender.DataType of
ftInteger:begin
//ShowMessage('entra entero'+aux);
text:=FormatFloat(Digi,StrTofloat(aux));
end;
ftFloat	:begin
//ShowMessage('entra flotante'+AUX);
text:=FormatFloat(Digi,StrTofloat(aux));
end;
ftCurrency:begin
//ShowMessage('entra flotante'+AUX);
text:=FormatFloat(Digi,StrTofloat(aux));
end;

ftString:begin
//ShowMessage('entra cademnae'+text);
text:=aux;
end;

end;//case




end;

function CalculaSecuencia(ant,sig:string):string;
var
i:integer;
aux:string;
begin
aux:='';

for i:=StrToInt(ant) to StrToInt(sig) do
aux:=aux+IntToStr(i)+',';
    CalculaSecuencia:=aux;
end;


function NuevoRango(rang:string):string;
var
i:integer;
aux:string;
anterior,siguiente:string;
begin
aux:='';
anterior:='';

//MuestraMensaje(rang);
i:=1;
rang:=rang+',';
while i<=length(rang) do
begin
if (rang[i]=',')or(rang[i]='-') then
begin
if rang[i]=',' then
aux:=aux+anterior+','
else
begin
//MuestraMensaje(anterior);
siguiente:='';
while i<= length(rang) do
begin

if rang[i]=',' then
begin
//MuestraMensaje(siguiente);

aux:=aux+CalculaSecuencia(anterior,siguiente);
break;
end
else
begin
if rang[i]<>'-' then
siguiente:=siguiente+rang[i];
end;
i:=i+1;
end;

end;
anterior:='';
end
else
anterior:=anterior+rang[i];

i:=i+1;

end;


NuevoRango:=aux;

end;


procedure LeeDocumentoRango(docu:string;Tabla:TTable);
begin
with FormaCapturaRapida do
begin

TablaAuxiliar.SetRange([docu],[docu]);

{TablaFacturaD.First;}
TablaAuxiliar.First;
while not TablaAuxiliar.Eof do
begin
//MuestraMensaje(docu +'   '+TablaAuxiliar.FieldByName('TREGI_FD').AsString) ;
if (TablaAuxiliar.FieldByName('TREGI_FD').AsString<>'C') and
(TablaAuxiliar.FieldByName('TDOCU_FD').AsString='') then
begin
//MuestraMensaje(docu +'   '+TablaAuxiliar.FieldByName('TREGI_FD').AsString) ;

TablaDeta.Append;
TablaDeta.FieldByName('CANTIDAD').AsFloat:=TablaAuxiliar.FieldByName('CANTI_FD').AsFloat;
TablaDeta.FieldByName('CLAVE').AsString:=TablaAuxiliar.FieldByName('CLPRO_FD').AsString;
TablaDeta.FieldByName('FACTOR').AsString:=TablaAuxiliar.FieldByName('PIVA2_FD').AsString;
TablaDeta.FieldByName('TARA').AsString:=TablaAuxiliar.FieldByName('PENDI_FD').AsString;

TablaDeta.FieldByName('PRODUCTO').AsString:=TablaAuxiliar.FieldByName('DEPRO_FD').AsString;
TablaDeta.FieldByName('UNIDAD').AsString:=TablaAuxiliar.FieldByName('UNIDA_FD').AsString;
TablaDeta.FieldByName('PRECIO').AsFloat:=TablaAuxiliar.FieldByName('PUNPR_FD').AsFloat;
TablaDeta.FieldByName('COSTO').AsFloat:=TablaAuxiliar.FieldByName('COPRO_FD').AsFloat;
//*TablaDeta.FieldByName('CANTIDAD').AsFloat;
TablaDeta.FieldByName('DESCUENTO').AsFloat:=TablaAuxiliar.FieldByName('PDES1_FD').AsFloat;
TablaDeta.FieldByName('IMPORTE').AsFloat:=TablaDeta.FieldByName('CANTIDAD').AsFloat*TablaDeta.FieldByName('PRECIO').AsFloat-
(TablaDeta.FieldByName('CANTIDAD').AsFloat*TablaDeta.FieldByName('PRECIO').AsFloat*TablaDeta.FieldByName('DESCUENTO').AsFloat/100);
TablaDeta.FieldByName('IMPUESTO').AsFloat:=TablaAuxiliar.FieldByName('PIVA1_FD').AsFloat;
TablaDeta.FieldByName('FPGC').AsFloat:=TablaAuxiliar.FieldByName('FPGCX_FD').AsFloat;

TablaDeta.Post;
end;//if
TablaAuxiliar.Next;


end;//while


end;
end;



procedure CalculaRangoDocumentos(TablaAnterior:string;rango:string);
var
// Tabla: TTable;
 i:integer;
 aux:string;
// ran:Boolean;
begin
with FormaCapturaRapida do
begin
//inicio:=0;
//fin:=0;
aux:='';
//ran:=False;
//MuestraMensaje(NuevoRango(rango));
rango:=NuevoRango(rango);
//********************

if TablaAuxiliar.State=dsBrowse then
TablaAuxiliar.Close;

   TablaAuxiliar.DatabaseName := ruta(8);
   TablaAuxiliar.TableName :=TablaAnterior;
   TablaAuxiliar.IndexName:='CLDOC_FD';
   TablaAuxiliar.Open;


aux:='';
for i:=1 to length(rango) do
begin

if rango[i]=',' then
begin
//MuestraMensaje(siguiente);
LeeDocumentoRango(aux,TablaAuxiliar);
//aux:=aux+CalculaSecuencia(anterior,siguiente);
aux:='';
end
else
begin
aux:=aux+rango[i];
end;




end;//for


TablaAuxiliar.Close;
//Tabla.Free;

//*********************


{for i:=1 to length(rango) do
if rango[i]='-' then
begin
ran:=True;
end;
if ran then
rango:=rango+'-'
else
rango:=rango+',';

for j:=1 to length(rango) do
begin

if rango[j]='-' then
begin

if inicio=0 then inicio:=StrToInt(aux)
else
fin:=StrToInt(aux);
aux:='';

end//if rango
else
aux:=rango[j];

end;//for j

if TablaAuxiliar.State=dsBrowse then
TablaAuxiliar.Close;

   TablaAuxiliar.DatabaseName := ruta(8);
   TablaAuxiliar.TableName :=TablaAnterior;
   TablaAuxiliar.IndexName:='CLDOC_FD';
   TablaAuxiliar.Open;


//MuestraMensaje(IntToStr(inicio)+'   '+IntToStr(fin));
if ran then
if inicio<=fin then
for i:=fin downto inicio do
begin
TablaAuxiliar.SetRange([IntToStr(i)],[IntToStr(i)]);

TablaAuxiliar.Last;

while not TablaAuxiliar.Bof do
begin
if (TablaAuxiliar.FieldByName('TREGI_FD').AsString<>'C') then
begin
TablaDeta.Insert;
TablaDeta.FieldByName('CANTIDAD').AsFloat:=TablaAuxiliar.FieldByName('CANTI_FD').AsFloat;
TablaDeta.FieldByName('CLAVE').AsString:=TablaAuxiliar.FieldByName('CLPRO_FD').AsString;
TablaDeta.FieldByName('FACTOR').AsString:=TablaAuxiliar.FieldByName('PIVA2_FD').AsString;

TablaDeta.FieldByName('PRODUCTO').AsString:=TablaAuxiliar.FieldByName('DEPRO_FD').AsString;
TablaDeta.FieldByName('UNIDAD').AsString:=TablaAuxiliar.FieldByName('UNIDA_FD').AsString;
TablaDeta.FieldByName('PRECIO').AsFloat:=TablaAuxiliar.FieldByName('PUNPR_FD').AsFloat;
TablaDeta.FieldByName('COSTO').AsFloat:=TablaAuxiliar.FieldByName('COPRO_FD').AsFloat;
//*TablaDeta.FieldByName('CANTIDAD').AsFloat;
TablaDeta.FieldByName('DESCUENTO').AsFloat:=TablaAuxiliar.FieldByName('PDES1_FD').AsFloat;
TablaDeta.FieldByName('IMPORTE').AsFloat:=TablaDeta.FieldByName('CANTIDAD').AsFloat*TablaDeta.FieldByName('PRECIO').AsFloat-
(TablaDeta.FieldByName('CANTIDAD').AsFloat*TablaDeta.FieldByName('PRECIO').AsFloat*TablaDeta.FieldByName('DESCUENTO').AsFloat/100);
TablaDeta.FieldByName('IMPUESTO').AsFloat:=TablaAuxiliar.FieldByName('PIVA1_FD').AsFloat;

TablaDeta.Post;
end;//if
TablaAuxiliar.Prior;


end;//while


end;//for i

//**************segundo caso
aux:='';
i:=1;
if not ran then
while i<=length(rango) do
begin
if rango[i]=',' then
begin

TablaAuxiliar.SetRange([Aux],[Aux]);

TablaAuxiliar.Last;

while not TablaAuxiliar.Bof do
begin
if TablaAuxiliar.FieldByName('TREGI_FD').AsString<>'C' then
begin
TablaDeta.Insert;
TablaDeta.FieldByName('CANTIDAD').AsFloat:=TablaAuxiliar.FieldByName('CANTI_FD').AsFloat;
TablaDeta.FieldByName('CLAVE').AsString:=TablaAuxiliar.FieldByName('CLPRO_FD').AsString;
TablaDeta.FieldByName('FACTOR').AsString:=TablaAuxiliar.FieldByName('PIVA2_FD').AsString;

TablaDeta.FieldByName('PRODUCTO').AsString:=TablaAuxiliar.FieldByName('DEPRO_FD').AsString;
TablaDeta.FieldByName('UNIDAD').AsString:=TablaAuxiliar.FieldByName('UNIDA_FD').AsString;
TablaDeta.FieldByName('PRECIO').AsFloat:=TablaAuxiliar.FieldByName('PUNPR_FD').AsFloat;
TablaDeta.FieldByName('COSTO').AsFloat:=TablaAuxiliar.FieldByName('COPRO_FD').AsFloat;
//*TablaDeta.FieldByName('CANTIDAD').AsFloat;
TablaDeta.FieldByName('DESCUENTO').AsFloat:=TablaAuxiliar.FieldByName('PDES1_FD').AsFloat;
TablaDeta.FieldByName('IMPORTE').AsFloat:=TablaDeta.FieldByName('CANTIDAD').AsFloat*TablaDeta.FieldByName('PRECIO').AsFloat-
(TablaDeta.FieldByName('CANTIDAD').AsFloat*TablaDeta.FieldByName('PRECIO').AsFloat*TablaDeta.FieldByName('DESCUENTO').AsFloat/100);
TablaDeta.FieldByName('IMPUESTO').AsFloat:=TablaAuxiliar.FieldByName('PIVA1_FD').AsFloat;

TablaDeta.Post;
end;//if
TablaAuxiliar.Prior;


end;//while
Aux:='';
end
else
begin
Aux:=Aux+rango[i];
end;
i:=i+1;
end;//for i
//*************************************

}
TablaAuxiliar.Close;
//Tabla.Free;

end;//width
end;


procedure ActualizaFacturaImporte(tot,iv,su:real);
begin
with FormaCapturaRapida do
begin
if (TablaFacturaE.FieldByName('IMTOD_F').AsFloat<>Total1)
or (TablaFacturaE.FieldByName('SUBTO_F').AsFloat<>suma) then
begin
AsignaControlVariable:=AsignaControl;
TablaFacturaE.Edit;
TablaFacturaE.FieldByName('SUBTO_F').AsFloat:=suma;
TablaFacturaE.FieldByName('DECOT_F').AsFloat:=desfin1;
TablaFacturaE.FieldByName('IMIM2_F').AsFloat:=iva1;
TablaFacturaE.FieldByName('IMTOD_F').AsFloat:=Total1;
TablaFacturaE.FieldByName('COSTO_F').AsFloat:=costo;

try
TablaFacturaE.FieldByName('SALDO_F').AsFloat:=TablaFacturaE.FieldByName('IMTOD_F').AsFloat-
TablaFacturaE.FieldByName('ABONO_F').AsFloat;
except
end;

TablaFacturaE.Post;
end;//if

end;//width
end;


procedure CancelaDetalle(doc:string);
begin
with FormaCapturaRapida do
begin

TablaFacturaD.SetRange([doc],[doc]);

{TablaFacturaD.First;}
TablaFacturaD.First;

while not TablaFacturaD.Eof do
begin
TablaFacturaD.Edit;

TablaFacturaD.FieldByName('TREGI_FD').AsString:='C';

TablaFacturaD.Post;
TablaFacturaD.Next;


end;//while
end;
end;



procedure CopiaRegistro(Tabla1,Tabla2:TTable);
var
i:integer;
begin

for i:=0 to Tabla1.FieldCount-1 do
begin
Tabla2.FieldByName(Tabla1.Fields[i].FieldName).AsString:=Tabla1.FieldByName(Tabla1.Fields[i].FieldName).AsString;
end;


end;


procedure GeneraCorteDeCaja(fecha,fecha2:TDate;nombre1,nombre2,nombre3,indice:string);
var
Tabla:TTable;
campofecha,nomtab:string;
Fe1,fe2:String;
Indices1: TIndexOptions;

begin
with FormaCapturaRapida do
begin
Refresh;
if LowerCase(nombre3)='factauxi.dbf' then
begin
 campofecha:='FEDOC_F';
 nomtab:='enc';
 //************************************
Tabla:=TTable.Create(Application);
 with Tabla do
 begin
      Indices1 := [];
   Active := False;
   DatabaseName :=ruta_8;
   TableName :='FactAuxi.dbf';
   DeleteFile(PChar(DatabaseName+'\FactAuxi.dbf'));
   TableType := ttDefault;
   FieldDefs.Clear;
   FieldDefs:=TablaFacturaE.FieldDefs;
   IndexDefs.Clear;
   IndexDefs.Add('INUMENC','CLDOC_F',Indices1);
   if State=dsBrowse then
   Close;
   try
   CreateTable; { crea la tabla}
   except
   Close;
   end;
//   Muestramensaje('lo creo');
 end;



end
else
begin
campofecha:='FEDOC_FD';
nomtab:='det';
//************************************
Tabla:=TTable.Create(Application);
 with Tabla do
 begin
   Indices1 := [];
   Active := False;
   DatabaseName :=ruta_8;
   TableName :='FactAuxiD.dbf';
   DeleteFile(Pchar(DatabaseName+'\FactAuxiD.dbf'));
   TableType := ttDefault;
   FieldDefs.Clear;
   FieldDefs:=TablaFacturaD.FieldDefs;
   IndexDefs.Clear;
   IndexDefs.Add('CLDOC_FD','CLDOC_FD',Indices1);
   if State=dsBrowse then
   Close;
   try
   CreateTable;
   except
   Close;
   end;
   { crea la tabla}
//   Muestramensaje('lo creo');
 end;

end;
//MuestraMensaje(DateToStr(fecha)+'  '+DateToStr(fecha2));

//Tabla.Free;


//TablaAuxiliar.DatabaseName:=lee_ruta+'\tempo';
//TablaAuxiliar.TableName:='FactAuxi.dbf';
//TablaAuxiliar.Open;

While not TablaAuxiliar.Eof do
begin
TablaAuxiliar.Delete;
end;

//***********************************
if TablaAuxiliar.State=dsBrowse then
TablaAuxiliar.Close;

try

TablaAuxiliar.DatabaseName:=ruta_8;
TablaAuxiliar.TableName:=nombre3;
TablaAuxiliar.IndexName:=indice;
//'FactAuxi.dbf';
TablaAuxiliar.Open;
While not TablaAuxiliar.Eof do
begin
TablaAuxiliar.Delete;
end;

Tabla:=TTable.Create(Tabla);
Tabla.DatabaseName:=ruta(8);
//Tabla.TableName:='Remision.dbf';
Tabla.TableName:=nombre1;
Tabla.Open;
fe1:=DateToStr(fecha);
fe2:=DateToStr(fecha2);

While not Tabla.Eof do
begin
if (StrToDate(fe1)<=Tabla.FieldByName(campofecha).AsDateTime)and(StrToDate(fe2)>=Tabla.FieldByName(campofecha).AsDateTime) then
begin
//MuestraMensaje(Tabla.FieldByName('CLDOC_F').AsString);
TablaAuxiliar.Insert;
CopiaRegistro(Tabla,TablaAuxiliar);
TablaAuxiliar.Post;
end;//if

Tabla.Next;
end;//while


if Tabla.State=dsBrowse then
Tabla.Close;
Tabla.DatabaseName:=ruta(8);
Tabla.TableName:=nombre2;
//'Devoluc.dbf';
//MuestraMensaje(Tabla.DatabaseName+'\'+ Tabla.TableName);
Tabla.Open;
Tabla.Filtered:=False;
While not Tabla.Eof do
begin
//MuestraMensaje(fe1+'  '+Tabla.FieldByName(campofecha).AsString+'  '+fe2+'  '+Tabla.FieldByName(campofecha).AsString);
if (StrToDate(fe1)<=Tabla.FieldByName(campofecha).AsDateTime)and(StrToDate(fe2)>=Tabla.FieldByName(campofecha).AsDateTime) then
begin
TablaAuxiliar.Insert;
CopiaRegistro(Tabla,TablaAuxiliar);
if  nomtab='enc'then
begin
TablaAuxiliar.FieldByName('IMTOD_F').AsFloat:=TablaAuxiliar.FieldByName('IMTOD_F').AsFloat*(-1);
TablaAuxiliar.FieldByName('SUBTO_F').AsFloat:=TablaAuxiliar.FieldByName('SUBTO_F').AsFloat*(-1);
end
else
begin
TablaAuxiliar.FieldByName('CANTI_FD').AsFloat:=TablaAuxiliar.FieldByName('CANTI_FD').AsFloat*(-1);
//TablaAuxiliar.FieldByName('SUBTO_F').AsFloat:=TablaAuxiliar.FieldByName('SUBTO_F').AsFloat*(-1);
end;
//MuestraMensaje( Tabla.TableName+' inserto   '+Tabla.FieldByName('CLPRO_FD').AsString);

TablaAuxiliar.Post;
end;//if
//MuestraMensaje( Tabla.TableName+'   '+Tabla.FieldByName('CLPRO_FD').AsString);
Tabla.Next;
end;//while
Tabla.Close;
Tabla.Free;

except
//if TablaAuxiliar.State=dsBrowse then
//TablaAuxiliar.Close;

end;//try
//
//TablaAuxiliar.Close;

end;

end;

procedure TFormaCapturaRapida.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
{with Form2 do
begin}
 if Msg.wParam = VK_RETURN then
 begin
 if ((Screen.ActiveControl) is TEdit)or((Screen.ActiveControl) is TDBEdit)
  or((Screen.ActiveControl) is TMaskEdit)and ((Screen.ActiveForm) is TFormaCapturaRapida) then
 Msg.wParam := VK_TAB;
 end;

{end;}
end;



{***termina procedimiento  de enter******}



{***posiciona desde catalogo****}


{****************************}




{*****activar botones}

procedure activabotones(cambios,nuevo,guardar,buscar,imprimir,navegar,cancela:boolean);
begin
with FormaCapturaRapida do
begin
BotonCambios.Enabled:=cambios;
Modificar1.Enabled:=cambios;

BotonNuevo.Enabled:=nuevo;
Nuevo1.Enabled:=nuevo;

BotonGuardar.Enabled:=guardar;
Guardar1.Enabled:=guardar;

BotonBuscar.Enabled:=buscar;


Navegador.Enabled:=navegar;

CancelaMovimiento1.Enabled:=cancela;

{*****extras******}
 Eliminar1.Enabled:=nuevo;
 Cancelar1.Enabled:=nuevo;
 CancelaMovimiento1.Enabled:=guardar;

{****************}
BotonTerminaVenta.Enabled:=BotonGuardar.Enabled;
BotonNuevaVenta.Enabled:=BotonNuevo.Enabled;

BotonRedondo1.Enabled:=BotonNuevaVenta.Enabled;
BotonRedondo2.Enabled:=BotonTerminaVenta.Enabled;


EditClave.Enabled:=BotonTerminaVenta.Enabled;

EditCantidad.Enabled:=BotonTerminaVenta.Enabled;
Editempaque.Enabled:=BotonTerminaVenta.Enabled;
EditTARA.Enabled:=BotonTerminaVenta.Enabled;

EstadoCap(BotonTerminaVenta.Enabled);

BotonAgregarPartida.Enabled:=not BotonCambios.Enabled;

//***********nuevos bloqueos*****
if VerRepo then
Reportes1.Enabled:=not guardar;

Generar1.Enabled:=not guardar;
Buscar1.Enabled:=not guardar;
BotonImprimir.Enabled:=BotonNuevaVenta.Enabled;
ImprimirDocumento1.Enabled:=BotonNuevaVenta.Enabled;
ImprimirRangodeDocumentos1.Enabled:=BotonNuevaVenta.Enabled;

end;
end;

{*******************}


procedure buscaobservacion(numero:string;tipo:integer);
begin
with FormaCapturaRapida do
begin
  FormaObservaciones:=TFormaObservaciones.Create(Application);
{case tipo of
0:begin}

  FormaObservaciones.Tag:=0;
  FormaObservaciones.Observacion.Clear;
//  TablaObservacion.First;

//  if (TablaObservacion.FindKey([numero])) then
//  begin
//  FormaObservaciones.Observacion.Lines[0]:=TablaObservacion.FieldByName('OBSER_FO').AsString;
//  end;
  {MuestraMensaje('No Tiene Observaciones');}
  FormaObservaciones.ShowModal;
  {  end;
  end;
1:begin
  FormaObservaciones.Observacion.Clear;
  FormaObservaciones.ShowModal;}
 {********************************}

  if FormaObservaciones.Tag=1 then
  begin
//  TablaObservacion.First;
//  if (TablaObservacion.FindKey([numero])) then
//  TablaObservacion.Edit
//  else
//  TablaObservacion.Insert;

//  TablaObservacion.FieldByName('CLDOC_FO').AsString:=numero;
//  TablaObservacion.FieldByName('OBSER_FO').AsString:=FormaObservaciones.Observacion.Lines[0];
//  TablaObservacion.Post;

  end;
{*************************************}
  FormaObservaciones.Tag:=0;
end;
FormaObservaciones.Free;
end;


procedure ponecolor(indi:integer;col1:TColor);
begin
with FormaCapturaRapida do
begin
color1:=col1;
TDBEdit(Components[indi]).Color:=ClAqua;
end;
end;

procedure quitacolor(indi:integer);
begin
with FormaCapturaRapida do
begin
TDBEdit(Components[indi]).Color:=Color1;

end;
end;






{function guardadivisa:string;
type
mone=record
Nombre:string[15];
valor:string[10];
end;
var
arch:file of mone;
money:mone;
i:integer;
aux:string;
begin
aux:='';
if FileExists(ruta(8)+'\moneda.sif') then
begin
AssignFile(arch,ruta(8)+'\moneda.sif');
reset(arch);
while not Eof(arch) do
begin
Read(arch,money);
aux:=aux+money.nombre+',';
aux:=aux+money.valor+',';
end;
CloseFile(arch);
guardadivisa:=aux;
end;
end;}

function leedivisa:string;
type
mone=record
Nombre:string[15];
valor:string[10];
eti1:String[30];
eti2:String[30];
eti3:String[30];
eti4:String[30];
eti5:String[5];
end;
var
arch:file of mone;
money:mone;
//i:integer;
aux:string;
begin
aux:='';
if FileExists(ruta(8)+'\moneda.sif') then
begin
AssignFile(arch,ruta(8)+'\moneda.sif');
reset(arch);
{FormaCapturaRapida.EditDIVIS_F.Items.Clear;}
while not Eof(arch) do
begin

Read(arch,money);
{FormaCapturaRapida.EditDIVIS_F.Items.Add(money.nombre);}
{aux:=aux+money.valor+',';}
end;
{FormaCapturaRapida.EditDIVIS_F.Text:=FormaCapturaRapida.EditDIVIS_F.Items[0];}
CloseFile(arch);
{guardadivisa:=aux;}
end;
end;

function valordivisa(caso:integer):Currency;
type
mone=record
Nombre:string[15];
valor:string[10];
eti1:String[30];
eti2:String[30];
eti3:String[30];
eti4:String[30];
eti5:String[5];

end;
var
arch:file of mone;
money:mone;
i:integer;
begin
if FileExists(ruta(8)+'\moneda.sif') then
begin
AssignFile(arch,ruta(8)+'\moneda.sif');
reset(arch);
for i:=0 to caso do
begin
Read(arch,money);
end;
valordivisa:=StrToCurr(money.valor);
CloseFile(arch);
{guardadivisa:=aux;}
end;
end;
{****procedimiento para leer los distintos valores de mobneda******}
function valordivisaetiqueta(moned:string;valor:word):string;
type
mone=record
Nombre:string[15];
valor:string[10];
eti1:String[30];
eti2:String[30];
eti3:String[30];
eti4:String[30];
eti5:String[5];

end;
var
arch:file of mone;
money:mone;
i:integer;
begin
if FileExists(ruta(8)+'\moneda.sif') then
begin
AssignFile(arch,ruta(8)+'\moneda.sif');
reset(arch);
money.Nombre:='';
valordivisaetiqueta:='xx';
for i:=0 to FileSize(arch)-1 do
begin
if moned=money.Nombre then
begin
if valor=1 then valordivisaetiqueta:=money.eti1;
if valor=2 then valordivisaetiqueta:=money.eti2;
if valor=3 then valordivisaetiqueta:=money.eti3;
if valor=4 then valordivisaetiqueta:=money.eti4;
break;
end;

Read(arch,money);
end;
{valordivisa:=StrToCurr(money.valor);}
CloseFile(arch);
{guardadivisa:=aux;}
end;
end;



{******************************}


procedure calculavencimiento;
//var
//dias:integer;
//d:Word;
begin
end;

Procedure borra;
begin
with FormaCapturaRapida do
begin
TablaDeta.First;
while not TablaDeta.Eof do
begin
TablaDeta.Delete;
end;
end;
end;


procedure asignatipo;
type
datos=record
archivo:String[60];
descrip:String[125];
end;
var
dat:datos;
faltan:Boolean;
arch,arch2:file of datos;
i:integer;
begin
with FormaConsulta do
begin
{MuestraMensaje(leeruta+'\report\facturae.for');}
AssignFile(arch,ruta(8)+'\report\facturae.for');
Reset(arch);
Archivo.Items.Clear;
Descripcion.Clear;
faltan:=True;
for i:=0 to FileSize(arch)-1 do
begin
Read(arch,dat);
if FileExists(Dat.archivo) then
Archivo.Items.Append(Dat.archivo)
else
faltan:=False;
end;
CloseFile(arch);


if faltan=False then
begin
AssignFile(arch,ruta(8)+'\report\facturae.for');
Reset(arch);
AssignFile(arch2,ruta(8)+'\report\Cliente2.for');
Rewrite(arch2);

for i:=0 to FileSize(arch)-1 do
begin
Read(arch,dat);
if FileExists(Dat.archivo) then
write(arch2,dat);
end;
CloseFile(arch);
CloseFile(arch2);
{******************}
AssignFile(arch,ruta(8)+'\report\facturae.for');
Rewrite(arch);
AssignFile(arch2,ruta(8)+'\report\Cliente2.for');
Reset(arch2);

for i:=0 to FileSize(arch2)-1 do
begin
Read(arch2,dat);
if FileExists(Dat.archivo) then
write(arch,dat);
end;
CloseFile(arch);
CloseFile(arch2);
end;


Archivo.Text:=Archivo.Items[0];
Descripcion.lines.Add(Dat.Descrip);

ReporteDe.Caption:='Reporte de Clientes';
Archi.Caption:='facturae.for';
end;

end;



procedure AbreConsulta(caso:word);
begin



FormaConsulta.TablaConsulta.DataBaseName:=ruta(8);
FormaConsulta.TablaConsulta.IndexName:='INUMENC';
FormaConsulta.TablaConsulta.TableName:='facturae.dbf';
FormaConsulta.TablaConsulta.Open;
FormaConsulta.TablaConsulta.First;
//FormaConsulta.De.Text:=FormaConsulta.TablaConsulta.Fields[0].AsString;
FormaConsulta.TablaConsulta.Last;
//FormaConsulta.Hasta.Text:=FormaConsulta.TablaConsulta.Fields[0].AsString;
FormaConsulta.TablaConsulta.First;
FormaConsulta.NumCampo.Caption:='0';
asignatipo;

leearchivocampos('facturae.dbf','');
if caso=1 then
FormaConsulta.ShowModal;



end;



procedure ejes(m:integer);
begin
end;




{%%%%%%%%%%%%%%%%%inicia traduce %%%%%%%%%%%%%%%}

{function exponente(num:longint;j:integer):longint;
var
i:integer;
begin
if j>=1 then
for i:=1 to j do
begin
num:=num*10;
end;
exponente:=num;
end;



function busca(cifra:longint;pos,ult:integer):string;
var
cadenas:array[1..200,1..2] of string;
i,num:longint;
begin
cadenas[1,1]:='1';cadenas[1,2]:='un';
cadenas[2,1]:='2';cadenas[2,2]:='dos';
cadenas[3,1]:='3';cadenas[3,2]:='tres';
cadenas[4,1]:='4';cadenas[4,2]:='cuatro';
cadenas[5,1]:='5';cadenas[5,2]:='cinco';
cadenas[6,1]:='6';cadenas[6,2]:='seis';
cadenas[7,1]:='7';cadenas[7,2]:='siete';
cadenas[8,1]:='8';cadenas[8,2]:='ocho';
cadenas[9,1]:='9';cadenas[9,2]:='nueve';
cadenas[10,1]:='10';cadenas[10,2]:='diez';
cadenas[11,1]:='11';cadenas[11,2]:='once';
cadenas[12,1]:='12';cadenas[12,2]:='doce';
cadenas[13,1]:='13';cadenas[13,2]:='trece';
cadenas[14,1]:='14';cadenas[14,2]:='catorce';
cadenas[15,1]:='15';cadenas[15,2]:='quince';
cadenas[16,1]:='16';cadenas[16,2]:='dieciseis';
cadenas[17,1]:='17';cadenas[17,2]:='diecisiete';
cadenas[18,1]:='18';cadenas[18,2]:='dieciocho';
cadenas[19,1]:='19';cadenas[19,2]:='diecinueve';
cadenas[20,1]:='20';cadenas[20,2]:='veinte';
cadenas[21,1]:='21';cadenas[21,2]:='veintiuno';
cadenas[22,1]:='22';cadenas[22,2]:='veintidos';
cadenas[23,1]:='23';cadenas[23,2]:='veintitres';
cadenas[24,1]:='24';cadenas[24,2]:='veinticuatro';
cadenas[25,1]:='25';cadenas[25,2]:='veinticinco';
cadenas[26,1]:='26';cadenas[26,2]:='veintiseis';
cadenas[27,1]:='27';cadenas[27,2]:='veintisiete';
cadenas[28,1]:='28';cadenas[28,2]:='veintiocho';
cadenas[29,1]:='29';cadenas[29,2]:='veintinueve';
cadenas[30,1]:='30';cadenas[30,2]:='treinta';
cadenas[32,1]:='40';cadenas[32,2]:='cuarenta';
cadenas[33,1]:='50';cadenas[33,2]:='cincuenta';
cadenas[34,1]:='60';cadenas[34,2]:='sesenta';
cadenas[35,1]:='70';cadenas[35,2]:='setenta';
cadenas[36,1]:='80';cadenas[36,2]:='ochenta';
cadenas[37,1]:='90';cadenas[37,2]:='noventa';
cadenas[38,1]:='100';cadenas[38,2]:='ciento';
cadenas[39,1]:='200';cadenas[39,2]:='doscientos';
cadenas[40,1]:='300';cadenas[40,2]:='trescientos';
cadenas[41,1]:='400';cadenas[41,2]:='cuatrocientos';
cadenas[42,1]:='500';cadenas[42,2]:='quinientos';
cadenas[43,1]:='600';cadenas[43,2]:='seiscientos';
cadenas[44,1]:='700';cadenas[44,2]:='setecientos';
cadenas[45,1]:='800';cadenas[45,2]:='ochocientos';
cadenas[46,1]:='900';cadenas[46,2]:='novecientos';
cadenas[47,1]:='1000';cadenas[47,2]:='mil';
cadenas[48,1]:='1000000';cadenas[48,2]:='millones';
i:=1;

while not(cadenas[i,1]=IntToStr(cifra))and(i<50) do
begin
i:=i+1;
end;


if cadenas[i,2]<>'' then
begin

if (cifra<=10)and (cifra>=1)and(ult<>1) then
cadenas[i,2]:=' y '+cadenas[i,2];


if (pos=0)then
cadenas[i,2]:=' '+cadenas[i,2];
end;

if cadenas[i,2]<>'0' then
busca:='  '+cadenas[i,2];

case pos+1 of
4:busca:='  '+cadenas[i,2] +' mil ';


end;


end;


function traduce(cantidad:Real):String;
var
aux,letra:String;
valores:array[1..10] of longint;
cifra:longint;
j,i,pos,ult:integer;
begin
aux:=intToStr(Trunc(cantidad));
j:=length(aux);

for i:=1 to length(aux) do
begin
valores[i]:=exponente(StrToInt(aux[i]),j-1);
j:=j-1;
end;

j:=0;

if length(aux)>2 then
begin
for i:=length(aux) downto 2  do
begin
j:=j+1;
if j=1 then
begin
valores[i]:=valores[i]+valores[i-1];
end;
if j=3 then j:=0;
end;

end
else
begin
valores[2]:=StrToInt(aux);
valores[1]:= (valores[2]div 10)*10   ;
end;


letra:='';
pos:=length(aux);
j:=1;



i:=length(aux);

j:=0;
pos:=0;
if i<=2 then
i:=2;
ult:=0;
while i>=1  do
begin
j:=j+1;
if i=2 then ult:=1;

if valores[i]>=1000 then
begin
valores[i]:=valores[i] div exponente(1,pos);
if i-1>0 then
valores[i-1]:=valores[i-1] div exponente(1,pos);
end;


if j=1 then
begin
if valores[i]>30 then
begin

valores[i-1]:=valores[i]-valores[i-1];
letra:=busca(valores[i-1],pos,ult)+letra;
valores[i]:=valores[i]-valores[i-1];
letra:=busca(valores[i],1,ult)+letra;

end
else
begin
letra:=busca(valores[i],pos,ult)+letra;

end;

end;


if j=3 then
begin
letra:=busca(valores[i],pos,ult)+letra;
j:=0;
end;
i:=i-1;
pos:=pos+1;


end;



letra:=letra+'  pesos '+IntToStr(Trunc(Frac(cantidad)*100))+'/100' ;

traduce:=letra;
end; }

{%%%%%%%%%%%%%%%%%termina traduce %%%%%%%%%%%%%%%}

{**** iniciaN procedimientos para formatos***************}
procedure dibujabitmap(nombre:String);
var
  mapa: TBitmap;
  rectangulo:TRect;
begin

  mapa := TBitmap.Create;
  mapa.LoadFromFile(nombre);
  rectangulo.Left:=5;
  rectangulo.Top:=5;
  rectangulo.Right:=100;
  rectangulo.Bottom:=240;
  Printer.Canvas.StretchDraw(rectangulo,mapa);
end;


procedure imprimelinea(li:string;tipo,y:integer;palabra:word);

var
l,j,i,conta,cod:integer;
aux:string;
valor:array[1..3] of string;
palabras:array[1..5]of string;
nume:Real;
begin
conta:=1;
i:=1;
palabras[1]:='';
palabras[2]:='';
palabras[3]:='';
palabras[4]:='';
palabras[5]:='';
while (i<=length(li))and (conta<=5) do
begin

if (li[i]=',')or(li[i]='(')or(li[i]=')') then
conta:=conta+1
else
begin
if (li[i]<>' ')and (li[i]<>'@') then
palabras[conta]:=palabras[conta]+li[i];
end;
i:=i+1;
end;

aux:='';

case palabra of
1:begin
  valor[1]:='';
  valor[2]:='';
  valor[3]:='';
  j:=1;
  for l:=2 to length(li) do
  begin
  if (li[l]=',') then
  begin
  valor[j]:=aux;
  j:=j+1;
  aux:='';
  end
  else
  begin
  aux:=aux+li[l];
  if (l=length(li)) then
  valor[j]:=aux;
  end;

  end;
  {*** *checa tipo de dato****}
  case tipo of
  0:begin
     val(FormaCapturaRapida.TablaFacturaE.FieldByName(valor[3]).AsString,nume,cod);
     if cod=0 then
     begin
     if palabras[4]='' then palabras[4]:='0';
     Str(FormaCapturaRapida.TablaFacturaE.FieldByName(valor[3]).AsFloat:15:StrToInt(palabras[4]),valor[3]);
     Printer.Canvas.TextOut(StrToInt(valor[1])*25,50*StrToInt(valor[2])+y*50,valor[3]);

     end
     else
     Printer.Canvas.TextOut(StrToInt(valor[1])*25,50*StrToInt(valor[2])+y*50,FormaCapturaRapida.TablaFacturaE.FieldByName(valor[3]).AsString);

    end;
  1: begin
      val(FormaCapturaRapida.TablaDeta.FieldByName(valor[3]).AsString,nume,cod);
     if cod=0 then
     begin
     if palabras[4]='' then palabras[4]:='0';
     Str(FormaCapturaRapida.TablaDeta.FieldByName(valor[3]).AsFloat:15:StrToInt(palabras[4]),valor[3]);
     Printer.Canvas.TextOut(StrToInt(valor[1])*25,50*StrToInt(valor[2])+y*50,valor[3]);
     end
     else
      Printer.Canvas.TextOut(StrToInt(valor[1])*25,50*(StrToInt(valor[2])+y),FormaCapturaRapida.TablaDeta.FieldByName(valor[3]).AsString);
     end;
  end;



  {*termina checkeo de dato****}



{  if tipo=0 then
  Printer.Canvas.TextOut(StrToInt(valor[1])*25,50*StrToInt(valor[2])+y*50,FormaCapturaRapida.TablaFacturaE.FieldByName(valor[3]).AsString);
  if tipo=1 then
  Printer.Canvas.TextOut(StrToInt(valor[1])*25,50*(StrToInt(valor[2])+y),FormaCapturaRapida.TablaDeta.FieldByName(valor[3]).AsString);}

end;

3:begin
  if palabras[2]='rojo' then
  Printer.Canvas.Font.Color:=clRed;

  if palabras[2]='azul' then
  Printer.Canvas.Font.Color:=clBlue;

  if palabras[2]='verde' then
  Printer.Canvas.Font.Color:=clGreen;

  if palabras[2]='amarillo' then
  Printer.Canvas.Font.Color:=clYellow;

  if palabras[2]='negro' then
  Printer.Canvas.Font.Color:=clBlack;
  end;

4:begin

  Printer.Canvas.TextOut(25*StrToInt(palabras[2]),50*StrToInt(palabras[3]),traduce(FormaCapturaRapida.TablaFacturaE.FieldByName('IMTOD_F').AsFloat));
  end;

5:begin
  Printer.Canvas.Rectangle(StrToInt(palabras[2]),StrToInt(palabras[3]),StrToInt(palabras[4]),StrToInt(palabras[5]));
  end;

6:begin
  Printer.Canvas.Font.Size:=StrToInt(palabras[2]);
  end;


7:begin
  Printer.Canvas.Font.Name:=Palabras[2];
  end;

8:begin
  if (palabras[1]='logo') then
  dibujabitmap(palabras[2]);

  end;
end;



{if (li[1]='@')or(li[1]='t') then
begin
j:=1;
for l:=2 to length(li) do
begin
if (li[l]=',') then
begin
valor[j]:=aux;
j:=j+1;
aux:='';
end
else
begin
aux:=aux+li[l];
if (l=length(li)) then
valor[j]:=aux;
end;
end;

if li[1]='t' then
begin
Printer.Canvas.Font.Size:=StrToInt(valor[2]);
end;

if li[1]='@' then
if tipo=0 then
Printer.Canvas.TextOut(StrToInt(valor[1])*25,50*StrToInt(valor[2])+y*50,FormaCapturaRapida.TablaFacturaE.FieldByName(valor[3]).AsString);
if tipo=1 then
Printer.Canvas.TextOut(StrToInt(valor[1])*25,50*(StrToInt(valor[2])+y*50),FormaCapturaRapida.TablaDeta.FieldByName(valor[3]).AsString);
end;
 }



end;

procedure imprimedetalle;
var arch2:TextFile;
lin:string[100];
y:integer;
begin
FormaCapturaRapida.TablaDeta.First;
y:=0;
while not FormaCapturaRapida.TablaDeta.Eof do
begin

AssignFile(arch2,leeruta+'\consulta\detatmp.tmp');
reset(arch2);

//tipo:=1;
while not Eof(arch2) do
begin
readln(arch2,lin);
imprimelinea(lin,1,y,1);
end;

Closefile(arch2);
y:=y+1;
FormaCapturaRapida.TablaDeta.Next;

end;
end;

procedure imprimeformato;
var
arch,arch2:TextFile;
lin:string[100];
l:string[4];
//tipo:integer;
palabra:word;
begin
With FormaCapturaRapida do
begin
AssignFile(arch,leeruta+'\consulta\factura.fmt');
reset(arch);
Printer.BeginDoc;


while not Eof(arch) do
begin
readln(arch,lin);
{MuestraMensaje('lineaimprimir     '+lin);}
if lin[1]='&' then
begin
AssignFile(arch2,leeruta+'\consulta\detatmp.tmp');
ReWrite(arch2);
repeat
readln(arch,lin);
if lin[1]<>'&' then
Writeln(arch2,lin);
until lin[1]='&';
CloseFile(arch2);

imprimedetalle;
end
else
begin

l:=lin;

if l[1]='@' then palabra:=1;
{if l[1]='&' then palabra:=2;}
if l='colo' then palabra:=3;
if l='trad' then palabra:=4;
if l='cuad' then palabra:=5;
if l='tama' then palabra:=6;
if l='tipo' then palabra:=7;
if l='logo' then palabra:=8;
imprimelinea(lin,0,0,palabra);

end;

end;
Printer.EndDoc;
closefile(arch);
end;
end;

{****terminan pocedimientos para formatos***************}
function borratodaslascuentas:boolean;
//var
//borrarcuenta:Boolean;
//cuenta:integer;
begin
{
with FormaCapturaRapida do
begin
 TablaCuentasxCobrar.SetRange([EditCLDOC_F.Text],[EditCLDOC_F.Text]);
 TablaCuentasxCobrar.First;
 borrarcuenta:=False;
 cuenta:=0;
 while not TablaCuentasxCobrar.Eof do
 begin
 if (TablaCuentasxCobrar.FieldByName('STATU_CC').AsString='F')and (TablaCuentasxCobrar.FieldByName('IMCUE_CC').AsFloat= TablaCuentasxCobrar.FieldByName('SALDO_CC').AsFloat) then
 borrarcuenta:=True;
 TablaCuentasxCobrar.Next;
 cuenta:=cuenta+1;
 end;


 if borrarcuenta then
 begin
  TablaCuentasxCobrar.First;
  while not TablaCuentasxCobrar.Eof do
  begin
  TablaCuentasxCobrar.Delete;
  end;
 borratodaslascuentas:=True;
 end
 else
 begin
  borratodaslascuentas:=False;
 end;
 if cuenta=0 then
 borratodaslascuentas:=True;

 TablaCuentasxCobrar.CancelRange;
end;}

end;

procedure actualizalacuenta;
//var
//borrarcuenta:Boolean;
begin
{
with FormaCapturaRapida do
begin
 TablaCuentasxCobrar.SetRange([EditCLDOC_F.Text],[EditCLDOC_F.Text]);
 TablaCuentasxCobrar.First;
 borrarcuenta:=False;
 while not TablaCuentasxCobrar.Eof do
 begin

 if (TablaCuentasxCobrar.FieldByName('STATU_CC').AsString='F')and (TablaCuentasxCobrar.FieldByName('IMCUE_CC').AsFloat= TablaCuentasxCobrar.FieldByName('SALDO_CC').AsFloat) then
 borrarcuenta:=True;
 TablaCuentasxCobrar.Next;
 end;


 if borrarcuenta then
 begin
  TablaCuentasxCobrar.First;
  while not TablaCuentasxCobrar.Eof do
  begin
  TablaCuentasxCobrar.Delete;
  end;
 end
 else
 MuestraMensaje('La Cuenta por Cobrar no Puede ser Eliminada Poque tiene Movimientos');


 TablaCuentasxCobrar.CancelRange;
end;
}
end;


{procedure BorraDatosMovimientos(tipo:Char);
var
borrarcuenta:boolean;
begin
if IntegrarMI='S' then
begin

with FormaCapturaRapida do
begin


 TablamovimientosInventario.First;
if (tipo='F')or(tipo='R')then
 while not TablamovimientosInventario.Eof do
 begin
 if (TablamovimientosInventario.FieldByName('BANAF_MI').AsString='F') and (TablamovimientosInventario.FieldByName('REFMO_MI').AsString=EditCLDOC_F.Text) then
 begin
 TablamovimientosInventario.Delete;
 end
 else
 TablamovimientosInventario.Next;

 end;

end;

end;//if integrar
end;}

procedure BorraDatosMovimientos(tipo:Char);
//var
//borrarcuenta:boolean;
begin
//MuestraMensaje('Borrara '+tipo);

if IntegrarMI='S' then
begin
with FormaCapturaRapida do
begin
try
//if tipo<>'D' then
begin
TablamovimientosInventario.IndexName:='NUDOC_MI';
//if TablaFacturaE.FieldByName('ORIGE_F').AsString<>'' then
//TablamovimientosInventario.SetRange([TablaFacturaE.FieldByName('ORIGE_F').AsString],[TablaFacturaE.FieldByName('ORIGE_F').AsString])
//else
MovimientoBorrado:=0;
TablamovimientosInventario.SetRange([PrefijoMovimiento(Base.Text)+EditCLDOC_F.Text],[PrefijoMovimiento(Base.Text)+EditCLDOC_F.Text]);
try
MovimientoBorrado:=TablamovimientosInventario.FieldByName('CLDOC_MI').AsInteger;
except
end;
//MuestraMensaje('Borrara '+PrefijoMovimiento(Base.Text)+EditCLDOC_F.Text);
 while not TablamovimientosInventario.Eof do
 begin
 TablamovimientosInventario.Delete;
 end;
TablamovimientosInventario.CancelRange;

TablamovimientosInventario.IndexName:='CLDOC_MI';
end;//if <>D
except

end;//try
end;//with

end;//if
end;



procedure borradatosanteriores(tipo:Char);
var
VariableControl:longInt;
begin
with FormaCapturaRapida do
begin
VariableControl:= TablaFacturaE.FieldByName('CONTROL').AsInteger;
//***********************

if BotonCambios.Tag=1 then
begin

end;

 if (tipo='F')or(tipo='R') then
 begin
{ borratodaslascuentas;}

 TablaFacturaD.SetRange([EditCLDOC_F.Text],[EditCLDOC_F.Text]);
 TablaFacturaD.First;
 while not TablaFacturaD.Eof do
 begin
  if VariableControl= TablaFacturaD.FieldByName('CONTROL').AsInteger then
 TablaFacturaD.Delete
 else
 TablaFacturaD.Next;
 end;
end;
{********************************}

if tipo<>'X' then
 begin
  TablaFacturaD.SetRange([EditCLDOC_F.Text],[EditCLDOC_F.Text]);
 TablaFacturaD.First;
 while not TablaFacturaD.Eof do
 begin
 if VariableControl= TablaFacturaD.FieldByName('CONTROL').AsInteger then
  TablaFacturaD.Delete
 else
 TablaFacturaD.Next;

 end;//while

end;//if

end;//with tipo<>X

end;


procedure generadocumento(tipo:char);
var
arch:File of registrodeta;
arch2:File of registroencab;
datos:registrodeta;
encab:registroencab;
k:longint;
TablaAnterior:string[15];
begin
With FormaCapturaRapida do
begin
TablaAnterior:=TablaFacturaD.TableName;
{********cambia base****}

if tipo='F' then
begin
Base.Text:='Factura';
TablaFacturaE.Close;
TablaFacturaE.TableName:='Facturae.dbf';
TablaFacturaE.Open;
TablaFacturaD.Close;
TablaFacturaD.TableName:='FacturaD.dbf';
TablaFacturaD.Open;
formatonum:=14;
TablaFacturaE.Last;
UltimoDocumento:=TablaFacturaE.FieldByName('CLDOC_F').AsInteger;

end;

if tipo='R' then
begin
Base.Text:='Remision';
TablaFacturaE.Close;
TablaFacturaE.TableName:='Remision.dbf';
TablaFacturaE.Open;
TablaFacturaD.Close;
TablaFacturaD.TableName:='RemisioD.dbf';
TablaFacturaD.Open;
formatonum:=15;
TablaFacturaE.Last;
UltimoDocumento:=TablaFacturaE.FieldByName('CLDOC_F').AsInteger;

end;

if tipo='P' then
begin
Base.Text:='Pedido';
TablaFacturaE.Close;
TablaFacturaE.TableName:='Pedido.dbf';
TablaFacturaE.Open;
TablaFacturaD.Close;
TablaFacturaD.TableName:='PedidoD.dbf';
TablaFacturaD.Open;
formatonum:=16;
TablaFacturaE.Last;
UltimoDocumento:=TablaFacturaE.FieldByName('CLDOC_F').AsInteger;

end;

{***********************}
if tipo='D' then
begin
Base.Text:='Devolución';
TablaFacturaE.Close;
TablaFacturaE.TableName:='Devoluc.dbf';
TablaFacturaE.Open;
TablaFacturaD.Close;
TablaFacturaD.TableName:='DevolucD.dbf';
TablaFacturaD.Open;
formatonum:=21;
TablaFacturaE.Last;
UltimoDocumento:=TablaFacturaE.FieldByName('CLDOC_F').AsInteger;

end;

{***********************}



{****graba encabezado****}
TablaFacturaE.Last;
k:=TablaFacturaE.FieldByName('CLDOC_F').AsInteger+1;
TablaFacturaE.Insert;
AssignFile(arch2,leeruta+'\buferenc.tmp');
ReSet(arch2);
Read(arch2,encab);

EditCLDOC_F.Text:=IntToStr(k);
EditCLCLI_F.Text:=encab.claveCli;
Nombre.Caption:=encab.NombreCli;
Direccion.Caption:=encab.direccionCli;
Direc2.Caption:=encab.direccionCli2;
Poblacion.Caption:=encab.Poblacion;
EditCLVEN_F.Text:=encab.Vendedor;
EditCTOVE_F.Text:=encab.Comision;
EditBCLIM_F.Text:=encab.Mostrador;
{EditCONDI_F.Text:=encab.Condiciones;}
{EditDESTI_F.Text:=encab.Destino;}
EditFEDOC_F.Text:=encab.FechaDoc;
{EditFEENT_F.Text:=encab.FechaEnt;}
{EditFEVEN_F.Text:=encab.FechaVen;}
EditIMIM1_F.Text:=encab.Iva;
{EditDECOT_F.Text:=encab.DescFina;}
EditDESFI_F.Text:=encab.DescComer;
TipoPago.Text:=encab.Pago;
TablaFacturaE.FieldByName('CLPED_F').AsString:=Orig;

TablaFacturaE.Post;
//TablaFacturaE.ApplyUpdates;
CloseFile(arch2);

{************************}

{****datos detalle****}
borra;

if not RangoDocumentos then
begin

AssignFile(arch,leeruta+'\bufer.tmp');
ReSet(arch);
While not EoF(arch) do
begin
read(arch,datos);
//if datos.
TablaDeta.Append;
TablaDeta.FieldByName('cantidad').AsFloat:=Datos.cantidad;
TablaDeta.FieldByName('TARA').AsString:=Datos.tara;
TablaDeta.FieldByName('clave').AsString:=Datos.clave;
TablaDeta.FieldByName('FACTOR').AsFloat:=Datos.factor;
TablaDeta.FieldByName('producto').AsString:=Datos.descripcion;
TablaDeta.FieldByName('precio').AsFloat:=Datos.precio;
TablaDeta.FieldByName('descuento').AsFloat:=Datos.descuento;
TablaDeta.FieldByName('costo').AsFloat:=Datos.Costo;
TablaDeta.FieldByName('unidad').AsString:=Datos.Unidad;
TablaDeta.FieldByName('Factor').AsFloat:=Datos.Factor;
TablaDeta.FieldByName('impuesto').AsFloat:=Datos.impuesto;
TablaDeta.FieldByName('FPGC').AsFloat:=Datos.FPGC;

//TablaDeta.FieldByName('impuesto').AsFloat:=Datos.impuesto;
TablaDeta.Post;

end; //while

CloseFile(arch);

end
else
begin
CalculaRangoDocumentos(TablaAnterior,FormaRango.Edit1.Text);

end;
//*******************


BotonGuardar.Enabled:=True;
BotonNuevo.Enabled:=False;
BotonNuevo.tag:=1;

end;
end;

procedure regresabufercambios;
var
arch:File of registrodeta;
datos:registrodeta;
k:integer;
CantidadAnterior:Real;
begin
with FormaCapturaRapida do
begin
AssignFile(arch,leeruta+'\bufer.tmp');
Reset(arch);
for k:=0 to Filesize(arch) -1 do
begin
seek(arch,k);
read(arch,datos);

// TablaInventario.First;
 if TablaInventario.FindKey([datos.clave]) then
 begin
 TablaInventario.Edit;

 CantidadAnterior:=TablaInventario.FieldByName('EXIST_I').AsFloat;

 TablaInventario.FieldByName('EXIST_I').AsFloat:= TablaInventario.FieldByName('EXIST_I').AsFloat -
 datos.cantidad;


 TablaInventario.FieldByName('VANCA_I').AsFloat:= TablaInventario.FieldByName('VANCA_I').AsFloat+
 (CantidadAnterior-TablaInventario.FieldByName('EXIST_I').AsFloat);

  TablaInventario.FieldByName('VANMO_I').AsFloat:= TablaInventario.FieldByName('VANMO_I').AsFloat+
 ((CantidadAnterior-TablaInventario.FieldByName('EXIST_I').AsFloat)*datos.precio);


 if (TablaInventario.FieldByName('EXIST_I').AsFloat<0)and(ExistenciasNegativos='N') then
 TablaInventario.FieldByName('EXIST_I').AsFloat:=0;
 TablaInventario.Post;
// TablaInventario.ApplyUpdates;

{***********detalle*********}

 TablaFacturaD.Insert;
 TablaFacturaD.FieldByName('CLDOC_FD').AsString:= EditCLDOC_F.Text;
 TablaFacturaD.FieldByName('CONTROL').AsInteger:=AsignaControlVariable;
 TablaFacturaD.FieldByName('CLPRO_FD').AsString:= Datos.clave;
 TablaFacturaD.FieldByName('CANTI_FD').AsFloat:=Datos.cantidad;
 TablaFacturaD.FieldByName('PENDI_FD').AsString:=Datos.tara;

 TablaFacturaD.FieldByName('DEPRO_FD').AsString:= Datos.descripcion;
 TablaFacturaD.FieldByName('PUNPR_FD').AsFloat:= Datos.precio;
 TablaFacturaD.FieldByName('COPRO_FD').AsFloat:= Datos.Costo;
 TablaFacturaD.FieldByName('PDES1_FD').AsFloat:=Datos.descuento;
 TablaFacturaD.FieldByName('UNIDA_FD').AsString:= Datos.Unidad;
  TablaFacturaD.FieldByName('PIVA1_FD').Asfloat:= Datos.impuesto;
 TablaFacturaD.Post;
// TablaFacturaD.ApplyUpdates;
{***************************}
 end;
{MuestraMensaje(FloatToStr(datos.cantidad)+(datos.clave)+(datos.descripcion)+FloatToStr(datos.precio)+
FloatToStr(datos.descuento));}
end;
CloseFile(arch);
end;
end;


procedure bufercambios(tipo:Char);
var
arch:File of registrodeta;
arch2:File of registroencab;
datos:registrodeta;
encab:registroencab;

k:integer;
CantidadAnterior:Real;
begin
With FormaCapturaRapida do
begin
{****graba encabezado****}


AssignFile(arch2,leeruta+'\buferenc.tmp');
ReWrite(arch2);

encab.Numero:=EditCLDOC_F.Text;
encab.claveCli:=EditCLCLI_F.Text;
encab.NombreCli:=Nombre.Caption;
encab.direccionCli:=Direccion.Caption;
encab.direccionCli2:=Direc2.Caption;
encab.Poblacion:=Poblacion.Caption;
encab.Vendedor:=EditCLVEN_F.Text;
encab.Comision:=EditCTOVE_F.Text;
encab.Mostrador:=EditBCLIM_F.Text;
{encab.Condiciones:=EditCONDI_F.Text;
encab.Destino:=EditDESTI_F.Text;}
encab.FechaDoc:=EditFEDOC_F.Text;
{encab.FechaEnt:=EditFEENT_F.Text;}
{encab.FechaVen:=EditFEVEN_F.Text;}
encab.Iva:=EditIMIM1_F.Text;
{encab.DescFina:=EditDECOT_F.Text;}
encab.DescComer:=EditDESFI_F.Text;
encab.Pago:=TipoPago.Text;

Datos.Unidad:=TablaDeta.FieldByName('unidad').AsString;
Datos.impuesto:=TablaDeta.FieldByName('impuesto').AsFloat;//Datos.divisa:=EditDIVIS_F.Text;


write(arch2,encab);
CloseFile(arch2);

{************************}

AssignFile(arch,leeruta+'\bufer.tmp');
ReWrite(arch);

TablaDeta.First;
While not TablaDeta.EoF do
begin
Datos.cantidad:=TablaDeta.FieldByName('cantidad').AsFloat;
Datos.TARA:=TablaDeta.FieldByName('TARA').AsString;

Datos.clave:=TablaDeta.FieldByName('clave').AsString;
Datos.descripcion:=TablaDeta.FieldByName('producto').AsString;
Datos.precio:=TablaDeta.FieldByName('precio').AsFloat;
Datos.descuento:=TablaDeta.FieldByName('descuento').AsFloat;
Datos.Costo:=TablaDeta.FieldByName('costo').AsFloat;
Datos.Unidad:=TablaDeta.FieldByName('unidad').AsString;
Datos.impuesto:=TablaDeta.FieldByName('impuesto').AsFloat;
Datos.FPGC:=TablaDeta.FieldByName('FPGC').AsFloat;

Write(arch,datos);
TablaDeta.Next;

end;


if tipo='F' then
begin
for k:=0 to Filesize(arch) -1 do
begin
seek(arch,k);
read(arch,datos);
// TablaInventario.First;
 if TablaInventario.FindKey([datos.clave]) then
 begin
 TablaInventario.Edit;

   CantidadAnterior:=TablaInventario.FieldByName('EXIST_I').AsFloat;

 TablaInventario.FieldByName('EXIST_I').AsFloat:= TablaInventario.FieldByName('EXIST_I').AsFloat +
 datos.cantidad;

 TablaInventario.FieldByName('VANCA_I').AsFloat:= TablaInventario.FieldByName('VANCA_I').AsFloat+
 (CantidadAnterior-TablaInventario.FieldByName('EXIST_I').AsFloat);

   TablaInventario.FieldByName('VANMO_I').AsFloat:= TablaInventario.FieldByName('VANMO_I').AsFloat+
 ((CantidadAnterior-TablaInventario.FieldByName('EXIST_I').AsFloat)*datos.precio);


 if (TablaInventario.FieldByName('EXIST_I').AsFloat<0)and(ExistenciasNegativos='N') then
 TablaInventario.FieldByName('EXIST_I').AsFloat:=0;

 TablaInventario.Post;
// Tablainventario.ApplyUpdates;
end;
end;

end;
 CloseFile(arch);
end;

end;

procedure ActualizaInventarioCambios;
var
CantidadAnterior:Real;
begin
with FormaCapturaRapida do
begin
//TablaInventario.First;
 if (TablaInventario.FindKey([TablaDeta.FieldByName('Clave').AsString]))and(TablaInventario.FieldByName('DSCPR_I').AsString<>'') then
 begin
 TablaInventario.Edit;

   CantidadAnterior:=TablaInventario.FieldByName('EXIST_I').AsFloat;

 TablaInventario.FieldByName('EXIST_I').AsFloat:= TablaInventario.FieldByName('EXIST_I').AsFloat-
 TablaDeta.FieldByName('cantidad').AsFloat;

 TablaInventario.FieldByName('VANCA_I').AsFloat:= TablaInventario.FieldByName('VANCA_I').AsFloat+
 (CantidadAnterior-TablaInventario.FieldByName('EXIST_I').AsFloat);

 TablaInventario.FieldByName('VANMO_I').AsFloat:= TablaInventario.FieldByName('VANMO_I').AsFloat+
 ((CantidadAnterior-TablaInventario.FieldByName('EXIST_I').AsFloat)*TablaDeta.FieldByName('precio').AsFloat);


 if (TablaInventario.FieldByName('EXIST_I').AsFloat<0)and(ExistenciasNegativos='N') then
 TablaInventario.FieldByName('EXIST_I').AsFloat:=0;

 TablaInventario.Post;
// TablaInventario.ApplyUpdates;
 end;
end;

end;

{function ruta(linea:integer):String;
var
arch:TextFile;
aux:string;
i:integer;

begin

AssignFile(arch,leeempresa());
Reset(arch);
for i:=1 to linea do
Readln(arch,aux);
CloseFile(arch);
ruta:=aux;

end;}


procedure rutas;
var
  j: Integer;
  cerradas:string[2];
  RutaLocal:string;
begin
//GetDir(0,RutaLocal);
RutaLocal:=leeruta;

cerradas:=ruta(1);
with FormaCapturaRapida do
begin

  for j := 0 to ComponentCount -1 do
    begin
     if Components[j] is TTable  then
       begin
       TTable(Components[j]).DatabaseName:=ruta(8);

       //*****caso para inventario separado de las estaciones
//        ShowMessage(LowerCase(TTable(Components[j]).Name));
       if LowerCase(TTable(Components[j]).TableName)='inventar.dbf' then
       begin
       try

       if ruta(59)<>'' then
         TTable(Components[j]).DatabaseName:=ruta(59);
       except
       end;
       end;

       if LowerCase(TTable(Components[j]).TableName)='movinven.dbf' then
       begin
       try
       if ruta(59)<>'' then
         TTable(Components[j]).DatabaseName:=ruta(59);
       except
       end;
       end;

//*****termina inventario separado
       end;
    end;

//  TablaDeta.DataBaseName:=leeruta();
//  TablaTotal.DataBaseName:=leeruta();


  TablaDeta.DataBaseName:=RutaLocal;

//******procedimientos para multiventas

try
  TablaDeta.Open;
//ShowMessage('cerrada...');
  except
//   ShowMessage('abierta');
   TablaDeta.Close;
  TablaDeta.TableName:='deta2.db';
  end;

TablaDeta.Close;
TablaTotal.DataBaseName:=TablaDeta.DataBaseName;
TablaTotal.TableName:=TablaDeta.TableName;

//*********fin multiventa*********************

for j := 0 to ComponentCount -1 do
    begin

    try
     if Components[j] is TTable  then
       begin
      AbreTablaTotal(TTable(Components[j]));

       end;
       except
       end;

    end;


    DesbloqueaTabla(TablaDeta);
//           Check( DbiRelRecordLock(handle,TRUE) );

{if Usuario.Caption='0' then
EditCLDOC_F.ReadOnly:=False
else
EditCLDOC_F.ReadOnly:=True;}

ExistenciasNegativos:=ruta(41);


if (Base.Text='')or(Base.Text<>'Remisión')or(Base.Text<>'Devolución')or(Base.Text<>'Caja Chica') then
Base.Text:='Remisión';


if Base.Text='Remisión' then
begin
TablaFacturaE.Close;
TablaFacturaE.TableName:='Remision.dbf';
TablaFacturaE.Open;
TablaFacturaD.Close;
TablaFacturaD.TableName:='RemisioD.dbf';
TablaFacturaD.Open;
formatonum:=15;

Pedido1.Enabled:=False;
Remisin1.Enabled:=False;
Factura1.Enabled:=True;
Devolucin1.Enabled:=True;
NotadeCrdito1.Enabled:=False;
BotonPago.Enabled:=False;
BotonObservacion.Enabled:=False;

{if Usuario.Caption='0' then
EditCLDOC_F.ReadOnly:=True
else
EditCLDOC_F.ReadOnly:=False;}

ruta8:=ruta(8)
end;


end;

end;




procedure limpiar;
var
  j: Integer;
begin

with FormaCapturaRapida do
begin
  for j:=0 to ComponentCount -1 do
    begin
     if Components[j] is TDBEdit  then
       TDBEdit(Components[j]).Text :='';
     if Components[j] is TEdit  then
       TEdit(Components[j]).Text :='';
     if Components[j] is TMaskEdit then
       TMaskEdit(Components[j]).Text:='';

  end;
Nombre.Caption:='';
Direccion.Caption:='';
Poblacion.Caption:='';
end;
end;


procedure activa;
//var
  //j: Integer;
begin
with FormaCapturaRapida do
begin
Caja.Enabled:=True;
{  for j := 0 to ComponentCount -1 do
    begin
     if Components[j] is TDBEdit  then
       TDBEdit(Components[j]).Enabled :=True;
     if Components[j] is TEdit  then
       TEdit(Components[j]).Enabled :=True;
     if Components[j] is TLabel then
       TLabel(Components[j]).Enabled :=True;
     if Components[j] is TMaskEdit then
       TMaskEdit(Components[j]).Enabled:=True;
end;
Nombre.Enabled:=True;
Direccion.Enabled:=True;
Poblacion.Enabled:=True;}
Detalle.ReadOnly:=False;
EditCantidad.ReadOnly:=Detalle.ReadOnly;
EditClave.ReadOnly:=Detalle.ReadOnly;

end;

end;

procedure desactiva;
//var
 // j: Integer;
begin
with FormaCapturaRapida do
begin
{  for j := 0 to ComponentCount -1 do
    begin
     if Components[j] is TDBEdit then
       TDBEdit(Components[j]).Enabled :=False;
     if Components[j] is TEdit then
       TEdit(Components[j]).Enabled :=False;
     if Components[j] is TLabel then
       TLabel(Components[j]).Enabled :=False;
     if Components[j] is TMaskEdit then
       TMaskEdit(Components[j]).Enabled:=False;
end;
Nombre.Enabled:=False;
Direccion.Enabled:=False;
Poblacion.Enabled:=False;}
Caja.Enabled:=False;
Detalle.ReadOnly:=True;
EditCantidad.ReadOnly:=Detalle.ReadOnly;
EditClave.ReadOnly:=Detalle.ReadOnly;

end;
end;


procedure cursor1;
begin
With FormaCapturaRapida do
begin

if indices > 17 then indices:=1;
if indices < 1 then indices:=1;
case indices of
1:EditCLDOC_F.SetFocus;
2:EditCLCLI_F.SetFocus;
3:EditCLVEN_F.SetFocus;
4:EditCTOVE_F.SetFocus;
5:EditBCLIM_F.SetFocus;
6:EditFEDOC_F.SetFocus;
7:EditIMIM1_F.SetFocus;
8:EditDESFI_F.SetFocus;

{3:EditCLPED_F.SetFocus;
4:EditREMIS_F.SetFocus;
5:EditDIVIS_F.SetFocus;


 8:EditDESTI_F.SetFocus;
9:EditCONDI_F.SetFocus;


12:EditFEENT_F.SetFocus;
13:EditFEVEN_F.SetFocus;


16:EditDECOT_F.SetFocus;
17:EditNALMA_F.SetFocus;}
end;
end;
end;

{procedure checaexistencias;

begin
with FormaCapturaRapida do
begin
cantidad:=TablaInventario.FieldByName('Exist_I').AsFloat-TablaDeta.FieldByName('Cantidad').AsFloat;

if (cantidad<0) and (UpperCase(TablaInventario.FieldByName('LIPRO_I').AsString)<>'SERVI')and (ruta(21)='N') then
begin
MuestraMensaje('Las Compras son Superiores a las Existencias');
if (Base.Text='Factura')or(Base.Text='Remisión') then
Detalle.SelectedIndex:=0;

end;

end;
end;}

procedure checaexistencias;
var
solicitado,existente,apar:real;
begin
with FormaCapturaRapida do
begin
//cantidad:=TablaInventario.FieldByName('Exist_I').AsFloat-TablaDeta.FieldByName('Cantidad').AsFloat;
//solicitado:=(TablaDeta.FieldByName('Cantidad').AsFloat+CantidadApartada(TablaDeta.FieldByName('Clave').AsString,Detalle.DataSource.DataSet.RecNo));
apar:=CantidadApartada(TablaDeta.FieldByName('Clave').AsString,Detalle.DataSource.DataSet.RecNo);
if apar<>0 then
solicitado:=(apar)
else
solicitado:=(TablaDeta.FieldByName('Cantidad').AsFloat);

existente:=TablaInventario.FieldByName('Exist_I').AsFloat;
cantidad:=existente-solicitado;

//MuestraMensaje(floattostr(cantidad));
if (cantidad<0) and (UpperCase(TablaInventario.FieldByName('LIPRO_I').AsString)<>'SERVI')and (ruta_21='N') then
begin
MuestraMensaje('Las Compras son Superiores a las Existencias '+TablaInventario.FieldByName('Exist_I').AsString+' Solicitado '+FloatToStr(Solicitado));
if (Base.Text='Factura')or(Base.Text='Remisión') then
Detalle.SelectedIndex:=0;

end;

end;
end;


procedure actualizacliente;
begin
with FormaCapturaRapida do
begin
TablaCliente.First;
if TablaCliente.FindKey([cliente]) then
begin
TablaCliente.Edit;
suma:=suma+(suma*StrTofloat(EditIMIM1_F.Text)/100);
TablaCliente.FieldByName('FULCO_C').AsDateTime:=StrToDatetime(EditFEDOC_F.Text);
TablaCliente.FieldByName('SALDO_C').AsFloat:=TablaCliente.FieldByName('SALDO_C').AsFloat+suma-saldoanterior;
TablaCliente.FieldByName('COMPR_C').Asfloat:=TablaCliente.FieldByName('COMPR_C').AsFloat+suma-saldoanterior;
TablaCliente.Post;
//TablaCliente.ApplyUpdates;
end;
end;
end;

procedure configuracion;
var
arch:Textfile;
cadena:string;
begin
with FormaCapturaRapida do
begin
AssignFile(arch,leeempresa());
Reset(arch);
readln(arch,cadena);
readln(arch,cadena);
readln(arch,cadena);
readln(arch,cadena);
readln(arch,cadena);
iva:=StrTofloat(cadena);
readln(arch,cadena);
//desfin:=StrTofloat(cadena);
EditIMIM1_F.Text:=FloatToStr(iva);
EditDESFI_F.Text:=FloatToStr(desfin);
closefile(arch);

end;
end;

procedure pegafecha;
begin
with FormaCapturaRapida do
begin


end;

end;



procedure SumaTotal;
var
//cuenta:integer;
DCom,importe_f,FPGC_v:real;
//Tabla:TTable;
//indi:integer;
s:integer;
TotalPartidas:integer;
begin
with FormaCapturaRapida do
begin
try
//   Tabladeta.Refresh;
ListaCantidad.Clear;
ListaClaves.Clear;

   TablaTotal.First;
   TotalPartidas:=0;
   suma:=0;
   ivatotal:=0;
   costo:=0;
   desfin1:=0;
   FPGC_v:=0;

   if EditDESFI_F.Text='' then
   EditDESFI_F.Text:='0';
//   cuenta:=1;
while not TablaTotal.Eof do
begin
TablaTotal.Edit;

TablaTotal.FieldByName('IMPORTE').AsFloat:=TablaTotal.FieldByName('CANTIDAD').AsFloat*TablaTotal.FieldByName('PRECIO').AsFloat-
(TablaTotal.FieldByName('CANTIDAD').AsFloat*TablaTotal.FieldByName('PRECIO').AsFloat*TablaTotal.FieldByName('DESCUENTO').AsFloat/100);
TablaTotal.Post;

suma:=suma+TablaTotal.FieldByName('Importe').AsFloat;


if desglosado then
   begin
//PARA CALCULAR EL FPGD
if TablaTotal.FieldByName('FPGC').AsFloat>0 then
begin

//if TablaTotal.FieldByName('Importe').AsFloat<=0 then
//empaque_f:=1
//else
//empaque_f:=TablaTotal.FieldByName('Empaque').AsFloat;

importe_f:=TablaTotal.FieldByName('Importe').AsFloat-(TablaTotal.FieldByName('FPGC').AsFloat);
ivatotal:=ivatotal+importe_f-(importe_f/(1+TablaTotal.FieldByName('Impuesto').AsFloat/100));

FPGC_v:=FPGC_v+TablaTotal.FieldByName('FPGC').AsFloat;

end
else
   ivatotal:=ivatotal+TablaTotal.FieldByName('Importe').AsFloat-(TablaTotal.FieldByName('Importe').AsFloat/(1+TablaTotal.FieldByName('Impuesto').AsFloat/100));

   costo:=costo+(TablaTotal.FieldByName('CANTIDAD').AsFloat*TablaTotal.FieldByName('Costo').AsFloat);
//   /(1+TablaTotal.FieldByName('Impuesto').AsFloat*0.01));

   end
   else
   begin
   ivatotal:=ivatotal+(TablaTotal.FieldByName('Importe').AsFloat*TablaTotal.FieldByName('Impuesto').AsFloat/100);
   costo:=costo+(TablaTotal.FieldByName('CANTIDAD').AsFloat*TablaTotal.FieldByName('Costo').AsFloat);
   end;

   desfin1:=suma*(StrToFloat(EditDESFI_F.Text)/100);

   //***guarda para comparar
   //Apartados[cuenta,1]:=TablaDeta.FieldByName('CLAVE').AsString;
  // Apartados[cuenta,2]:=TablaDeta.FieldByName('CANTIDAD').AsString;

//   cuenta:=cuenta+1;



TotalPartidas:=TotalPartidas+1;
   TablaTotal.Next;
   end;



  if desglosado then
   begin
   suma:=suma-ivatotal;
   end;


   //**ojo EditDESFI_F tiene el descuento comercial
//   Dcom:=0;
   //suma:=suma*(StrToFloat(EditDESFI_F.Text)/100);
   suma:=StrToFloat(redondear(suma));
   //calcula desc. com
   if (EditDESFI_F.Text='') then EditDESFI_F.Text:='0';
   DCom:=suma*(StrToFloat(EditDESFI_F.Text)/100);
   DCom:=StrToFloat(redondear(DCom));

   suma:=suma-DCom;
   suma:=StrToFloat(redondear(suma));
   //calcula desc Fin
//   Dfin:=0;
//   if EditDECOT_F.Text='' then EditDECOT_F.Text:='0';
//   DFin:=suma*(StrToFloat(EditDECOT_F.Text)/100);
//   DFin:=StrToFloat(redondear(DFin));

//   suma:=suma-DFin;
  // desfin1:=StrToFloat(redondear(desfin1));
   suma:=StrToFloat(redondear(suma));
//   SumarTotal.Capion:=convierte('###,###,##0.00{',redondear(suma),'$');

   if (EditIMIM1_F.Text='')or(EditIMIM1_F.Text='0') then
   begin
    iva1:=StrToCurr(redondear(ivatotal));
   end
   else
   iva1:=StrToCurr(redondear(suma*(StrToCurr(EditIMIM1_F.Text)/100)));

   ImpuestoValor.Caption:=convierte('##,##0.00',CurrToStr(iva1),'');
//   total1:=StrToCurr(redondear(suma))-StrToCurr(redondear(desfin1))+StrToCurr(redondear(iva1));
   total1:=StrToCurr(redondear(suma))+StrToCurr(redondear(iva1));

   if DigitosTotal>0 then
   total1:=RedondeaTotal(total1,DigitosTotal);


   TotalFact.Caption:=convierte('##,##0.00',redondear(total1),'');

   LabelFPGC.Caption:='FPGC '+convierte('##,##0.00',redondear(FPGC_v),'');
//   suma:=suma;


//   suma:=StrToFloat(redondear(suma));
   SumarTotal.Caption:=convierte('##,##0.00',redondear(suma),'');
try
CreaArchivoTotal;
except
end;

  ActualizaFacturaImporte(total1,iva1,suma);

//*****acomoda los totales
s:=Label12.Left-TotalFact.Width;

s:=s-5;
TotalFact.Left:=s;

SumarTotal.Left:=TotalFact.Left+(TotalFact.Width-SumarTotal.Width);
ImpuestoValor.Left:=TotalFact.Left+(TotalFact.Width-ImpuestoValor.Width);

LabelPartidas.Caption:='Partidas  '+IntToStr(TotalPartidas)
+'  RUTA '+TablaDeta.DatabaseName+' '+TablaDeta.TableName;

//  TablaTotal.Close;
//  TablaTotal.Free;
except
end;

end;//width

end;





procedure VerificaEncabezado(ultimo_r:string;AsignaControlVariable:integer);
begin

with formaCapturaRapida do
begin
if not TablaFacturaE.FindKey([ultimo_r]) then
begin
TablaFacturaE.Insert;
TablaFacturaE.FieldByName('CLDOC_F').AsString:=ultimo_r;
TablaFacturaE.FieldByName('CONTROL').AsInteger:=AsignaControlVariable;
TablaFacturaE.FieldByName('NOMBR_F').AsString:=Nombre.Caption;
TablaFacturaE.FieldByName('DIREC_F').AsString:=Direccion.Caption;
TablaFacturaE.FieldByName('DIRE2_F').AsString:=Direc2.Caption;
TablaFacturaE.FieldByName('POBLA_F').AsString:=Poblacion.Caption;
TablaFacturaE.FieldByName('RFCXX_F').AsString:=RFC.Caption;
TablaFacturaE.FieldByName('CPXXX_F').AsString:=CodigoPostal.Caption;

TablaFacturaE.FieldByName('FEDOC_F').AsDateTime:=StrToDateTime(EditFEDOC_F.Text);
TablaFacturaE.FieldByName('FEENT_F').AsDateTime:=StrToDateTime(EditFEDOC_F.Text);
TablaFacturaE.FieldByName('FEVEN_F').AsDateTime:=StrToDateTime(EditFEDOC_F.Text);

try
SumaTotal;
TablaFacturaE.FieldByName('SUBTO_F').AsFloat:=suma;
TablaFacturaE.FieldByName('DECOT_F').AsFloat:=desfin1;
TablaFacturaE.FieldByName('IMIM2_F').AsFloat:=iva1;
TablaFacturaE.FieldByName('IMTOD_F').AsFloat:=Total1;
TablaFacturaE.FieldByName('COSTO_F').AsFloat:=costo;
except
end;

TablaFacturaE.FieldByName('HORAX_F').AsString:= TimeToStr(Time);
TablaFacturaE.FieldByName('PAGOX_F').AsString:=TipoPago.Text;

if (BotonNuevo.Tag=1) then
begin
TablaFacturaE.FieldByName('TREGI_F').AsString:='';
end;

TablaFacturaE.Post;



end;
end;


//rrr

end;


procedure SumaTotalCantidad;
var
//cuenta:integer;
indi:integer;
TablaD:TTable;
begin
with FormaCapturaRapida do
begin

TablaD:=TTable.Create(Application);
TablaD.DatabaseName:=TablaDeta.DataBaseName;
TablaD.TableName:=TablaDeta.TableName;
TablaD.Open;

ListaCantidad.Clear;
ListaClaves.Clear;
//   Tabladeta.Refresh;
   TablaD.First;
//   cuenta:=1;
   while not TablaD.Eof do
   begin

   //**pone los valores en las listas
   if ListaClaves.Find(TablaD.FieldByName('CLAVE').AsString,indi) then
   begin
   ListaCantidad.Insert(indi,FloatToStr(StrToFloat(ListaCantidad.Strings[indi])+TablaD.FieldByName('CANTIDAD').AsFloat));
   ListaCantidad.Delete(indi+1);
   end
   else
   begin
   ListaCantidad.Add(TablaD.FieldByName('Cantidad').AsString);
   ListaClaves.Add(TablaD.FieldByName('Clave').AsString);
   end;


   TablaD.Next;


   end;

//   ShowMessage( ListaClaves.Text+ListaCantidad.Text);
   end;
   TablaD.Close;
   TablaD.Free;

end;



procedure generacuentasxcobrar(tipo:char);
//var
//saldo:Currency;
//cambio:Boolean;
begin

{
with FormaCapturaRapida do
begin

if tipo='N' then
begin
TablaCuentasxCobrar.Insert;
TablaCuentasxCobrar.FieldByName('CLCLI_CC').AsString:=EditCLCLI_F.Text;
TablaCuentasxCobrar.FieldByName('NOMBR_CC').AsString:=Nombre.Caption;
TablaCuentasxCobrar.FieldByName('STATU_CC').AsString:='F';
TablaCuentasxCobrar.FieldByName('TIMOV_CC').AsInteger:=1;
TablaCuentasxCobrar.FieldByName('CONCE_CC').AsString:='Factura';
TablaCuentasxCobrar.FieldByName('NUFAC_CC').AsString:=EditCLDOC_F.Text;
TablaCuentasxCobrar.FieldByName('OPERA_CC').AsString:='C';
TablaCuentasxCobrar.FieldByName('NUDOC_CC').AsInteger:=StrToInt(EditCLDOC_F.Text);
sumatotal;
TablaCuentasxCobrar.FieldByName('IMCUE_CC').AsFloat:=total1;
TablaCuentasxCobrar.FieldByName('SALDO_CC').AsFloat:=total1;
TablaCuentasxCobrar.FieldByName('CARGO_CC').AsFloat:=total1;
TablaCuentasxCobrar.FieldByName('FEAPL_CC').AsDateTime:=StrToDaTeTime(EditFEDOC_F.Text);
TablaCuentasxCobrar.Post;
//TablaCuentasxCobrar.ApplyUpdates;
end;

if tipo='C' then
begin
TablaCuentasxcobrar.CancelRange;
TablaCuentasxcobrar.SetRange([EditCLDOC_F.Text],[EditCLDOC_F.Text]);
TablaCuentasxcobrar.First;
cambio:=False;

while not TablaCuentasxCobrar.Eof do
begin
if (TablaCuentasxCobrar.FieldByName('STATU_CC').AsString='F') then
begin
TablaCuentasxCobrar.Edit;
TablaCuentasxCobrar.FieldByName('CLCLI_CC').AsString:=EditCLCLI_F.Text;
TablaCuentasxCobrar.FieldByName('NOMBR_CC').AsString:=Nombre.Caption;
TablaCuentasxCobrar.FieldByName('STATU_CC').AsString:='F';
TablaCuentasxCobrar.FieldByName('TIMOV_CC').AsInteger:=1;
TablaCuentasxCobrar.FieldByName('CONCE_CC').AsString:='Factura';
TablaCuentasxCobrar.FieldByName('NUFAC_CC').AsString:=EditCLDOC_F.Text;
TablaCuentasxCobrar.FieldByName('OPERA_CC').AsString:='C';
TablaCuentasxCobrar.FieldByName('NUDOC_CC').AsInteger:=StrToInt(EditCLDOC_F.Text);
sumatotal;
saldo:=TablaCuentasxCobrar.FieldByName('IMCUE_CC').AsFloat-TablaCuentasxCobrar.FieldByName('SALDO_CC').AsFloat;
TablaCuentasxCobrar.FieldByName('IMCUE_CC').AsFloat:=total1;
TablaCuentasxCobrar.FieldByName('CARGO_CC').AsFloat:=total1;
TablaCuentasxCobrar.FieldByName('SALDO_CC').AsFloat:=total1-saldo;
TablaCuentasxCobrar.FieldByName('FEAPL_CC').AsDateTime:=StrToDaTeTime(EditFEDOC_F.Text);
TablaCuentasxCobrar.Post;
//TablaCuentasxCobrar.ApplyUpdates;

cambio:=True;
Break;

end;
 TablaCuentasxCobrar.Next;
end;

if not cambio then
begin
TablaCuentasxCobrar.Insert;
TablaCuentasxCobrar.FieldByName('CLCLI_CC').AsString:=EditCLCLI_F.Text;
TablaCuentasxCobrar.FieldByName('NOMBR_CC').AsString:=Nombre.Caption;
TablaCuentasxCobrar.FieldByName('STATU_CC').AsString:='F';
TablaCuentasxCobrar.FieldByName('TIMOV_CC').AsInteger:=1;
TablaCuentasxCobrar.FieldByName('CONCE_CC').AsString:='Factura';
TablaCuentasxCobrar.FieldByName('NUFAC_CC').AsString:=EditCLDOC_F.Text;
TablaCuentasxCobrar.FieldByName('OPERA_CC').AsString:='C';
TablaCuentasxCobrar.FieldByName('NUDOC_CC').AsInteger:=StrToInt(EditCLDOC_F.Text);
sumatotal;
saldo:=TablaCuentasxCobrar.FieldByName('IMCUE_CC').AsFloat-TablaCuentasxCobrar.FieldByName('SALDO_CC').AsFloat;
TablaCuentasxCobrar.FieldByName('IMCUE_CC').AsFloat:=total1;
TablaCuentasxCobrar.FieldByName('SALDO_CC').AsFloat:=total1-saldo;
TablaCuentasxCobrar.FieldByName('FEAPL_CC').AsDateTime:=StrToDaTeTime(EditFEDOC_F.Text);
TablaCuentasxCobrar.Post;
//TablaCuentasxCobrar.ApplyUpdates;
end;

end;

end;
}
end;

procedure mueveteclas;
//var
//i:integer;
begin
with FormaCapturaRapida do
begin

while indice < ComponentCount-1 do
begin

if Components[indice] is TDBEdit then
if TDBEdit(Components[indice]).TabOrder = sig then
begin
MuestraMensaje(IntToStr(TDBEdit(Components[indice]).TabOrder));
TDBEdit(Components[indice]).SetFocus;
MuestraMensaje(IntToStr(indice));
indice:=1000;
end;
indice:=indice+1;
end;

indice:=0;
sig:=sig+1;

{while not (Components[indice] is TDBEdit) do
begin

if indice < ComponentCount-1 then
indice:=indice+1;
if indice=ComponentCount-1 then
indice:=0;
end;

if Components[indice] is TDBEdit then
begin
TDBEdit(Components[indice]).SetFocus;
MuestraMensaje(IntToStr(TDBEdit(Components[indice]).TabOrder));
end;
indice:=indice+1;}
end;


end;

{Procedure MovimientosInventario;
begin
if IntegrarMI='S' then
begin

with FormaCapturaRapida do
begin


 TablamovimientosInventario.Insert;
 TablamovimientosInventario.FieldByName('CLDOC_MI').AsInteger:= numeromovimiento;
 TablamovimientosInventario.FieldByName('CLPRO_MI').AsString:= TablaDeta.FieldByName('CLAVE').AsString;
 TablamovimientosInventario.FieldByName('DESCR_MI').AsString:= TablaDeta.FieldByName('PRODUCTO').AsString;
 TablamovimientosInventario.FieldByName('TIMOV_MI').AsInteger:= tipomovimiento;
 TablamovimientosInventario.FieldByName('FEDOC_MI').AsString:= EditFEDOC_F.Text;
 TablamovimientosInventario.FieldByName('REFMO_MI').AsString:= EditCLDOC_F.Text;
 TablamovimientosInventario.FieldByName('CLCOP_MI').AsString:= EditCLCLI_F.Text;
 TablamovimientosInventario.FieldByName('CLVEN_MI').AsString:= EditCLVEN_F.Text;
 TablamovimientosInventario.FieldByName('CANTI_MI').AsFloat:= TablaDeta.FieldByName('CANTIDAD').AsFloat;
 TablamovimientosInventario.FieldByName('PUNIT_MI').AsFloat:= TablaDeta.FieldByName('PRECIO').AsFloat;
 TablamovimientosInventario.FieldByName('BANAF_MI').AsString:='F';

 TablamovimientosInventario.Post;
// TablamovimientosInventario.ApplyUpdates;
 end;
end;//if integar
end;}


procedure CreaMI(actu:real);
begin
with FormaCapturaRapida do
begin

//ShowMessage(IntToStr(numeromovimiento));
 TablamovimientosInventario.Insert;

if MovimientoBorrado<>0 then
TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger:=MovimientoBorrado
else
TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger:=numeromovimiento;

TablamovimientosInventario.FieldByName('CONTROL').AsInteger:=AsignaControlVariable;

 TablamovimientosInventario.FieldByName('CLPRO_MI').AsString:= TablaDeta.FieldByName('CLAVE').AsString;
 TablamovimientosInventario.FieldByName('DESCR_MI').AsString:= TablaDeta.FieldByName('PRODUCTO').AsString;
 TablamovimientosInventario.FieldByName('TIMOV_MI').AsInteger:=tipomovimiento;
 TablamovimientosInventario.FieldByName('FEDOC_MI').AsString:= EditFEDOC_F.Text;
 TablamovimientosInventario.FieldByName('REFMO_MI').AsString:= EditCLDOC_F.Text;
 TablamovimientosInventario.FieldByName('NUDOC_MI').AsString:=PrefijoMovimiento(Base.Text)+ EditCLDOC_F.Text;
 TablamovimientosInventario.FieldByName('CLCOP_MI').AsString:= EditCLCLI_F.Text;
 TablamovimientosInventario.FieldByName('CLVEN_MI').AsString:= EditCLVEN_F.Text;
 TablamovimientosInventario.FieldByName('CANTI_MI').AsFloat:= TablaDeta.FieldByName('CANTIDAD').AsFloat;
 TablamovimientosInventario.FieldByName('PUNIT_MI').AsFloat:= TablaDeta.FieldByName('PRECIO').AsFloat;
 TablamovimientosInventario.FieldByName('COSUN_MI').AsFloat:= TablaDeta.FieldByName('COSTO').AsFloat;
// if EditNALMA_F.Text='' then
// TablamovimientosInventario.FieldByName('NALMA_MI').AsString:='1'
// else
// TablamovimientosInventario.FieldByName('NALMA_MI').AsString:=EditNALMA_F.Text;
 TablamovimientosInventario.FieldByName('BANAF_MI').AsString:='F';
 TablamovimientosInventario.FieldByName('CLPRV_MI').AsString:=EditCLCLI_F.Text;
 TablamovimientosInventario.FieldByName('EXIST_MI').AsFloat:=actu;

 TablamovimientosInventario.Post;

end;
end;


Procedure MovimientosInventario(actu:Real);
var
aux:string;
begin
//ShowMessage(floatToStr(actu));
if (IntegrarMI='S')and(actu>=0) then

begin

with FormaCapturaRapida do
begin
try
CreaMI(actu);
 except
 //trata de guardar otra vez el movimiento
 i:=0;
 aux:=Caption;
 while i<1000 do
 begin
 try
 CreaMI(actu);
 i:=2000;
 except

 Caption:=aux+' Guardando MI, Problema de Tráfico...intento '+IntToStr(i);
 Refresh;
 i:=i+1;
 end;


 end;//except 1

 end;
 end;

end;//if principal

end;


Procedure MovimientosInventarioAjuste;
begin
if IntegrarMI='S' then
begin

with FormaCapturaRapida do
begin
try
 TablamovimientosInventario.Insert;
if MovimientoBorrado<>0 then
TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger:=MovimientoBorrado
else
TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger:=numeromovimiento;

 TablamovimientosInventario.FieldByName('CONTROL').AsInteger:=AsignaControlVariable;
 TablamovimientosInventario.FieldByName('CLPRO_MI').AsString:= TablaDeta.FieldByName('CLAVE').AsString;
 TablamovimientosInventario.FieldByName('DESCR_MI').AsString:= TablaDeta.FieldByName('PRODUCTO').AsString;
 TablamovimientosInventario.FieldByName('TIMOV_MI').AsInteger:=52;
 TablamovimientosInventario.FieldByName('FEDOC_MI').AsString:= EditFEDOC_F.Text;
 TablamovimientosInventario.FieldByName('REFMO_MI').AsString:= EditCLDOC_F.Text;
 TablamovimientosInventario.FieldByName('NUDOC_MI').AsString:=PrefijoMovimiento(Base.Text)+ EditCLDOC_F.Text;
 TablamovimientosInventario.FieldByName('CLCOP_MI').AsString:= EditCLCLI_F.Text;
 TablamovimientosInventario.FieldByName('CLVEN_MI').AsString:= EditCLVEN_F.Text;
 TablamovimientosInventario.FieldByName('CANTI_MI').AsFloat:= TablaDeta.FieldByName('CANTIDAD').AsFloat;
 TablamovimientosInventario.FieldByName('PUNIT_MI').AsFloat:= TablaDeta.FieldByName('PRECIO').AsFloat;
 TablamovimientosInventario.FieldByName('COSUN_MI').AsFloat:= TablaDeta.FieldByName('COSTO').AsFloat;
// if EditNALMA_F.Text='' then
// TablamovimientosInventario.FieldByName('NALMA_MI').AsString:='1'
// else
// TablamovimientosInventario.FieldByName('NALMA_MI').AsString:=EditNALMA_F.Text;
 TablamovimientosInventario.FieldByName('BANAF_MI').AsString:='F';
 TablamovimientosInventario.FieldByName('CLPRV_MI').AsString:=EditCLCLI_F.Text;

 TablamovimientosInventario.Post;
except
end;
 end;

end;//if principal

end;



procedure CreaMovimiento_Cancelar(TM:word);
begin
with FormaCapturaRapida do
begin
TablaDeta.First;
MovimientoBorrado:=0;
//TipoMovimiento:=54;
TipoMovimiento:=TM;
//MuestraMensaje(tipo);
//OcurrioFalloExistencias:=True;
while not TablaDeta.eof do
begin
{MuestraMensaje('guardando deta');}

if ((TablaDeta.FieldByName('Cantidad').AsFloat>0)and(TablaDeta.FieldByName('Clave').AsString<>'')and(TablaDeta.FieldByName('Producto').AsString<>''))or(TablaDeta.FieldByName('Clave').AsString='COMENTARIO') then
begin

//TablaInventario.First;
if ((TablaInventario.FindKey([TablaDeta.FieldByName('Clave').AsString])))or(TablaDeta.FieldByName('Clave').AsString='COMENTARIO') then
begin
//if tipo<>'Z' then
//begin

//ActualizaInventario(-1);
try
if (UpperCase(TablaInventario.FieldByName('LIPRO_I').AsString)<>'SERVI') then
begin
if (BotonCambios.Tag<>1)or(MovimientoBorrado<>0) then
MovimientosInventario(0)
else
begin
MovimientosInventarioAjuste;
MovimientosInventario(0);
end;

end;

except
end;


//end;

end;//if detalle
end;
TablaDeta.Next;
end;//while
MovimientoBorrado:=0;

end;
end;


procedure devolucionproductos;
var
//cantidad:Real;
CantidadAnterior:Real;

begin
With FormaCapturaRapida do
begin
TablaDeta.First;

while not TablaDeta.Eof do
begin
// TablaInventario.First;
 if TablaInventario.FindKey([TablaDeta.FieldByName('clave').AsString]) then
 begin
 TablaInventario.Edit;

   CantidadAnterior:=TablaInventario.FieldByName('EXIST_I').AsFloat;

 TablaInventario.FieldByName('EXIST_I').AsFloat:= TablaInventario.FieldByName('EXIST_I').AsFloat +
 TablaDeta.FieldByName('cantidad').AsFloat;


 if (TablaInventario.FieldByName('EXIST_I').AsFloat<0)and(ExistenciasNegativos='N') then
 TablaInventario.FieldByName('EXIST_I').AsFloat:=0;

// TablaInventario.FieldByName('VANMO_I').AsFloat:= TablaInventario.FieldByName('VANMO_I').AsFloat -
// TablaDeta.FieldByName('IMPORTE').AsFloat;

// TablaInventario.FieldByName('VANCA_I').AsFloat:= TablaInventario.FieldByName('VANCA_I').AsFloat -
// TablaDeta.FieldByName('CANTIDAD').AsFloat;

  TablaInventario.FieldByName('VANMO_I').AsFloat:= TablaInventario.FieldByName('VANMO_I').AsFloat+
 ((CantidadAnterior-TablaInventario.FieldByName('EXIST_I').AsFloat)*TablaDeta.FieldByName('precio').AsFloat);


 TablaInventario.FieldByName('VANCA_I').AsFloat:= TablaInventario.FieldByName('VANCA_I').AsFloat+
 (CantidadAnterior-TablaInventario.FieldByName('EXIST_I').AsFloat);

   TablaInventario.FieldByName('VANMO_I').AsFloat:= TablaInventario.FieldByName('VANMO_I').AsFloat+
 ((CantidadAnterior-TablaInventario.FieldByName('EXIST_I').AsFloat)*TablaDeta.FieldByName('precio').AsFloat);



 TablaInventario.Post;
// TablaInventario.ApplyUpdates;

 end;
{MuestraMensaje(FloatToStr(datos.cantidad)+(datos.clave)+(datos.descripcion)+FloatToStr(datos.precio)+
FloatToStr(datos.descuento));}
TablaDeta.Next;
end;
movimientosinventario(0);
end;
end;


procedure fechas(pos:integer;letra:char);
//var //cad:string[2];
//     fecha:String[12];
//   code:integer;
begin

end;


function revisafactura(cad:string):boolean;
begin
With FormaCapturaRapida do
begin
if EditCLCLI_F.Text='' then
begin
MuestraMensaje('No se puede Guardar la Factura faltan datos del Cliente');
revisafactura:=false;
end
else  revisafactura:=true;
end;
end;

procedure borradatoscliente;
begin

 FormaCapturaRapida.Nombre.Caption:='';
 FormaCapturaRapida.Direccion.Caption:='';
 FormaCapturaRapida.Direc2.Caption:='';
 FormaCapturaRapida.Poblacion.Caption:='';
 FormaCapturaRapida.CodigoPostal.Caption:='';
 FormaCapturaRapida.RFC.Caption:='';

 FormaCapturaRapida.EditFEDOC_F.Text:='';
{ FormaCapturaRapida.EditFEENT_F.Text:='';}
{ FormaCapturaRapida.EditFEVEN_F.Text:='';}

end;


function ActualizaInventario:Real;
var
CantidadAnterior:Real;
begin
with FormaCapturaRapida do
begin
ActualizaInventario:=0;
//TablaInventario.First;
 if (TablaInventario.FindKey([TablaDeta.FieldByName('Clave').AsString]))and(TablaInventario.FieldByName('DSCPR_I').AsString<>'') then
 begin
 TablaInventario.Edit;


if (TablaInventario.FieldByName('EXIST_I').AsFloat>=TablaDeta.FieldByName('cantidad').AsFloat)or(ruta_21<>'N') then
begin

  CantidadAnterior:=TablaInventario.FieldByName('EXIST_I').AsFloat;

 TablaInventario.FieldByName('EXIST_I').AsFloat:= TablaInventario.FieldByName('EXIST_I').AsFloat-
 TablaDeta.FieldByName('cantidad').AsFloat;



 if (TablaInventario.FieldByName('EXIST_I').AsFloat<0)and(ExistenciasNegativos='N') then
 TablaInventario.FieldByName('EXIST_I').AsFloat:=0;

 ActualizaInventario:=TablaInventario.FieldByName('EXIST_I').AsFloat;

// TablaInventario.FieldByName('VANCA_I').AsFloat:= TablaInventario.FieldByName('VANCA_I').AsFloat+TablaDeta.FieldByName('cantidad').AsFloat;
 TablaInventario.FieldByName('VANCA_I').AsFloat:= TablaInventario.FieldByName('VANCA_I').AsFloat+
 (CantidadAnterior-TablaInventario.FieldByName('EXIST_I').AsFloat);

  TablaInventario.FieldByName('VANMO_I').AsFloat:= TablaInventario.FieldByName('VANMO_I').AsFloat+
 ((CantidadAnterior-TablaInventario.FieldByName('EXIST_I').AsFloat)*TablaDeta.FieldByName('precio').AsFloat);


// TablaInventario.FieldByName('VANMO_I').AsFloat:= TablaInventario.FieldByName('VANMO_I').AsFloat+TablaDeta.FieldByName('cantidad').AsFloat*TablaDeta.FieldByName('precio').AsFloat;

 try
 TablaInventario.FieldByName('FEULV_I').AsString:=EditFEDOC_F.Text;
 except
 end;


end
else
begin
ActualizaInventario:=-1;
MuestraMensaje('No hay Existencias Suficientes Para Surtir '+ TablaDeta.FieldByName('producto').AsString+'  Existencias '+TablaInventario.FieldByName('EXIST_I').AsString);
end;

 TablaInventario.Post;
//  TablaInventario.ApplyUpdates;
 end;
end;

end;


procedure LeeDetalle;
var
ValorControl:LongInt;
begin

with FormaCapturaRapida do

begin
ValorControl:=TablaFacturaE.FieldByName('CONTROL').AsInteger;

Borra;
TablaFacturaD.SetRange([TablaFacturaE.FieldByName('CLDOC_F').AsString],[TablaFacturaE.FieldByName('CLDOC_F').AsString]);

{TablaFacturaD.First;}
TablaFacturaD.Last;

while not TablaFacturaD.Bof do
begin
if ValorControl= TablaFacturaD.FieldByName('CONTROL').AsInteger then
begin

TablaDeta.Insert;

TablaDeta.FieldByName('CANTIDAD').AsFloat:=TablaFacturaD.FieldByName('CANTI_FD').AsFloat;
TablaDeta.FieldByName('TARA').AsString:=TablaFacturaD.FieldByName('PENDI_FD').AsString;

TablaDeta.FieldByName('CLAVE').AsString:=TablaFacturaD.FieldByName('CLPRO_FD').AsString;
TablaDeta.FieldByName('PRODUCTO').AsString:=TablaFacturaD.FieldByName('DEPRO_FD').AsString;
TablaDeta.FieldByName('UNIDAD').AsString:=TablaFacturaD.FieldByName('UNIDA_FD').AsString;
TablaDeta.FieldByName('PRECIO').AsFloat:=TablaFacturaD.FieldByName('PUNPR_FD').AsFloat;
TablaDeta.FieldByName('COSTO').AsFloat:=TablaFacturaD.FieldByName('COPRO_FD').AsFloat;
//*TablaDeta.FieldByName('CANTIDAD').AsFloat;
TablaDeta.FieldByName('DESCUENTO').AsFloat:=TablaFacturaD.FieldByName('PDES1_FD').AsFloat;
TablaDeta.FieldByName('IMPORTE').AsFloat:=TablaDeta.FieldByName('CANTIDAD').AsFloat*TablaDeta.FieldByName('PRECIO').AsFloat-
(TablaDeta.FieldByName('CANTIDAD').AsFloat*TablaDeta.FieldByName('PRECIO').AsFloat*TablaDeta.FieldByName('DESCUENTO').AsFloat/100);
TablaDeta.FieldByName('IMPUESTO').AsFloat:=TablaFacturaD.FieldByName('PIVA1_FD').AsFloat;
TablaDeta.FieldByName('FACTOR').AsFloat:=TablaFacturaD.FieldByName('PIVA2_FD').AsFloat;
TablaDeta.FieldByName('FPGC').AsFloat:=TablaFacturaD.FieldByName('FPGCX_FD').AsFloat;


TablaDeta.Post;
end;
//TablaDeta.ApplyUpdates;
TablaFacturaD.Prior;
begin

end;


end;

end;
end;


function LeeDetalleCierre(inicio,fin,fecha:string):integer;
var
ExistiaFacturaCierre:Boolean;
cuenta:integer;
begin

with FormaCapturaRapida do

begin

Borra;
TablaFacturaD.SetRange([inicio],[fin]);
//MuestraMensaje('Ventas del Documento '+inicio+'  al  '+fin);
{TablaFacturaD.First;}
TablaFacturaD.First;
ExistiaFacturaCierre:=False;

cuenta:=0;
while not TablaFacturaD.Eof do
begin
if (TablaFacturaE.FindKey([TablaFacturaD.FieldByName('CLDOC_FD').AsString])) then
begin
if (TablaFacturaE.FieldByName('REMIS_F').AsString='') then
begin
//mUESTRAmENSAJE('ENTRO');
if (TablaFacturaD.FieldByName('TREGI_FD').AsString<>'F') then
begin
if(TablaFacturaD.FieldByName('TREGI_FD').AsString<>'C') then
begin
TablaDeta.Append;
cuenta:=cuenta+1;
TablaDeta.FieldByName('CANTIDAD').AsFloat:=TablaFacturaD.FieldByName('CANTI_FD').AsFloat;
TablaDeta.FieldByName('TARA').AsString:=TablaFacturaD.FieldByName('PENDI_FD').AsString;

TablaDeta.FieldByName('CLAVE').AsString:=TablaFacturaD.FieldByName('CLPRO_FD').AsString;
TablaDeta.FieldByName('PRODUCTO').AsString:=TablaFacturaD.FieldByName('DEPRO_FD').AsString;
TablaDeta.FieldByName('UNIDAD').AsString:=TablaFacturaD.FieldByName('UNIDA_FD').AsString;
TablaDeta.FieldByName('PRECIO').AsFloat:=TablaFacturaD.FieldByName('PUNPR_FD').AsFloat;
TablaDeta.FieldByName('COSTO').AsFloat:=TablaFacturaD.FieldByName('COPRO_FD').AsFloat;
//*TablaDeta.FieldByName('CANTIDAD').AsFloat;
TablaDeta.FieldByName('DESCUENTO').AsFloat:=TablaFacturaD.FieldByName('PDES1_FD').AsFloat;
TablaDeta.FieldByName('IMPORTE').AsFloat:=TablaDeta.FieldByName('CANTIDAD').AsFloat*TablaDeta.FieldByName('PRECIO').AsFloat-
(TablaDeta.FieldByName('CANTIDAD').AsFloat*TablaDeta.FieldByName('PRECIO').AsFloat*TablaDeta.FieldByName('DESCUENTO').AsFloat/100);

TablaDeta.FieldByName('FPGC').AsFloat:=TablaFacturaD.FieldByName('FPGCX_FD').AsFloat;
TablaDeta.Post;
end;//if cancelado
//TablaDeta.ApplyUpdates;

end
else
begin
ExistiaFacturaCierre:=True;
end;
end;//if TablaFacturaE.findkey
end;

TablaFacturaD.Next;
end;//while


LeeDetalleCierre:=cuenta;
if ExistiaFacturaCierre then
MuestraMensaje('Existe una Factura de Cierre para esta Fecha...');

end;
end;





function ChecaRepeticion(ulti:LongInt):LongInt;
var
anterior:longint;
//claves:array[1..15] of LongInt;
j,k:LongInt;
TablaFacturaUltima:TTable;
begin
With FormaCapturaRapida do
begin

//***************Caso del primer documento
//MuestraMensaje('nuevo ultimos  '+IntToStr(ultimodocumento)+'   '+IntToStr(ulti)+'   registros'+IntToStr(k));
if ulti=1 then
begin
k:=TablaFacturaE.RecordCount;
//MuestraMensaje('nuevo ultimos  '+IntToStr(ultimodocumento)+'   '+IntToStr(ulti)+'   registros'+IntToStr(k));
if k>1 then
begin
try


TablaFacturaUltima:=TTable.Create(Application);
TablaFacturaUltima.DatabaseName:=ruta(8);
//Tabla.TableName:='Remision.dbf';
TablaFacturaUltima.TableName:=TablafacturaE.TableName;
TablaFacturaUltima.IndexName:=TablafacturaE.IndexName;
TablaFacturaUltima.Open;

TablaFacturaUltima.Refresh;
TablaFacturaUltima.Last;
Ulti:=TablaFacturaUltima.FieldByName('CLDOC_F').AsInteger+1;
//MuestraMensaje('nuevo ulti '+IntToStr(ulti));
TablaFacturaUltima.Close;
TablaFacturaUltima.Free;

except
end;


end;


end;
//k:=0;
//*******************************



{*************** checa si no se repite ******}
{TablaFacturaE.MoveBy(-7);}
j:=0;
while  (ulti<UltimoDocumento)and(j<10) do
begin
 //ChecaRepeticion:=UltimoDocumento;

//**********vuelve a buscar el ultimo***********
try

TablaFacturaUltima:=TTable.Create(Application);
TablaFacturaUltima.DatabaseName:=ruta(8);
//Tabla.TableName:='Remision.dbf';
TablaFacturaUltima.TableName:=TablafacturaE.TableName;
TablaFacturaUltima.IndexName:=TablafacturaE.IndexName;
TablaFacturaUltima.Open;


TablaFacturaUltima.Last;
Ulti:=TablaFacturaUltima.FieldByName('CLDOC_F').AsInteger+1;
//MuestraMensaje('nuevo ulti '+IntToStr(ulti));
TablaFacturaUltima.Close;
TablaFacturaUltima.Free;

except
end;

j:=j+1;
end;//while


if ulti>=UltimoDocumento then
begin
TablaFacturaE.Edit;
TablaFacturaE.FieldByName('CLDOC_F').AsInteger:=ulti;

if (BotonNuevo.Tag=1) then
begin
TablaFacturaE.FieldByName('TREGI_F').AsString:='';
end;

TablaFacturaE.Post;
TablaFacturaE.Refresh;
end;


j:=0;
//anterior:=ulti;
{MuestraMensaje(InttoStr(ulti));}
while (j<15)and (not TablaFacturaE.Bof) do
begin
TablaFacturaE.Prior;
anterior:=TablaFacturaE.FieldByName('CLDOC_F').AsInteger;
//MuestraMensaje('fin '+IntToStr(j)+IntToStr(anterior));
j:=j+1;

if (anterior<ulti)then
break;

end;

//MuestraMensaje('Se movera por '+IntToStr(j)+'posicion actual '+IntToStr(TablaFacturaE.RecNo));
TablaFacturaE.MoveBy(j);

ChecaRepeticion:=ulti+j-1;

if ulti+j-1<UltimoDocumento then
begin
 //ChecaRepeticion:=UltimoDocumento;
//**********vuelve a buscar el ultimo***********
try
TablaFacturaUltima:=TTable.Create(Application);
TablaFacturaUltima.DatabaseName:=ruta(8);
//Tabla.TableName:='Remision.dbf';
TablaFacturaUltima.TableName:=TablaFacturaE.TableName;
TablaFacturaUltima.IndexName:=TablaFacturaE.IndexName;
TablaFacturaUltima.Open;

TablaFacturaUltima.SetRange([TablaFacturaE.FieldByName('CLDOC_F').AsString],[TablaFacturaE.FieldByName('CLDOC_F').AsString]);

if TablaFacturaUltima.RecordCount>1 then
begin
TablaFacturaUltima.Last;
Ulti:=TablaFacturaUltima.FieldByName('CLDOC_F').AsInteger+1;
end
else
Ulti:=TablaFacturaE.FieldByName('CLDOC_F').AsInteger;

//MuestraMensaje(IntToStr(ulti));
TablaFacturaUltima.Close;
TablaFacturaUltima.Free;

except
end;


if ulti<UltimoDocumento then
ChecaRepeticion:=-1
else
ChecaRepeticion:=Ulti;


//if (Ulti<10)and (ulti>=0) then  UltimoDocumento:=ulti;
if UltimoDocumento<15 then UltimoDocumento:=ulti;

end;

end;

//***************************************


//****************************************
end;


function ChecaRepeticionRango(ulti:LongInt):LongInt;
var
//anterior,siguiente,ultimo:longint;
//claves,clavesaux:array[1..15] of LongInt;
j:LongInt;
begin
With FormaCapturaRapida do
begin
{*************** checa si no se repite ******}
j:=0;
TablaFacturaE.SetRange([IntToStr(ulti)],[IntToStr(ulti)]);
ChecaRepeticionRango:=ulti;

MuestraMensaje(IntToStr(TablaFacturaE.RecordCount));

if TablaFacturaE.RecordCount>1 then
begin

while (not TablaFacturaE.Bof) do
begin
j:=j+1;
TablaFacturaE.Prior;
MuestraMensaje(IntToStr(j));
end;//while
TablaFacturaE.MoveBy(j);
ChecaRepeticionRango:=ulti+j;
end;//if rango

end;//with
//****************************************
end;



procedure ActualizaFactura(tipo:Char);
var
ultimo:LongInt;
actu:real;
begin
With FormaCapturaRapida do
begin

BotonNuevo.Enabled:=True;
BotonGuardar.Enabled:=False;
BotonImprimir.Enabled:=True;

{******guarda encabezado****************}

sumatotal;

ultimo:=TablaFacturaE.FieldByName('CLDOC_F').AsInteger;


if (BotonNuevo.Tag=1) then
begin
if ultimo<UltimoDocumento then
begin
try
ultimo:=StrToInt(EditCLDOC_F.Text);
except
ultimo:=UltimoDocumento;
end;
end;

ultimo:=ChecaRepeticion(ultimo);

if ultimo=-1 then
begin

ultimo:=GeneraUltimoDocumento(TablaFacturaE.FieldByName('CLDOC_F').AsString);

//MuestraMensaje('Ocurrio un error en la red no se guardaran los datos...');
//exit;

end;

end;
//ShowMessage(IntToStr(GeneraUltimoDocumento));
{MuestraMensaje(IntToStr(TablaFacturaE.RecNo));}
TablaFacturaE.Edit;
TablaFacturaE.FieldByName('CLDOC_F').AsInteger:=ultimo;
TablaFacturaE.FieldByName('CONTROL').AsInteger:=AsignaControlVariable;
TablaFacturaE.FieldByName('NOMBR_F').AsString:=Nombre.Caption;
TablaFacturaE.FieldByName('DIREC_F').AsString:=Direccion.Caption;
TablaFacturaE.FieldByName('DIRE2_F').AsString:=Direc2.Caption;
TablaFacturaE.FieldByName('POBLA_F').AsString:=Poblacion.Caption;
TablaFacturaE.FieldByName('RFCXX_F').AsString:=RFC.Caption;
TablaFacturaE.FieldByName('CPXXX_F').AsString:=CodigoPostal.Caption;

TablaFacturaE.FieldByName('FEDOC_F').AsDateTime:=StrToDateTime(EditFEDOC_F.Text);
TablaFacturaE.FieldByName('FEENT_F').AsDateTime:=StrToDateTime(EditFEDOC_F.Text);
TablaFacturaE.FieldByName('FEVEN_F').AsDateTime:=StrToDateTime(EditFEDOC_F.Text);
TablaFacturaE.FieldByName('SUBTO_F').AsFloat:=suma;
TablaFacturaE.FieldByName('DECOT_F').AsFloat:=desfin1;
TablaFacturaE.FieldByName('IMIM2_F').AsFloat:=iva1;
TablaFacturaE.FieldByName('IMTOD_F').AsFloat:=Total1;
TablaFacturaE.FieldByName('COSTO_F').AsFloat:=costo;

TablaFacturaE.FieldByName('HORAX_F').AsString:= TimeToStr(Time);
TablaFacturaE.FieldByName('PAGOX_F').AsString:=TipoPago.Text;
{TablaFacturaE.FieldByName('NOMDI_F').AsString:=EditDIVIS_F.Text;
TablaFacturaE.FieldByName('DIVIS_F').AsString:=EditVALDI_F.Text;
if Tipo='D' then
TablaFacturaE.FieldByName('STATU_F').AsString:='P';}


if (BotonNuevo.Tag=1) then
begin
TablaFacturaE.FieldByName('TREGI_F').AsString:='';
end;

TablaFacturaE.Post;
//TablaFacturaE.ApplyUpdates;

{*******termina encabezado***********}

TablaDeta.First;
while not TablaDeta.eof do
begin

if (TablaDeta.FieldByName('Cantidad').AsFloat>0)and(TablaDeta.FieldByName('Clave').AsString<>'')and(TablaDeta.FieldByName('Producto').AsString<>'') then
begin

if (tipo='F')or(tipo='R') then
begin
actu:=ActualizaInventario;
//MovimientosInventario(actu);
MovimientosInventario(0);
end;

if (actu>=0)or(ruta_21<>'N') then
begin
TablaFacturaD.Insert;
TablaFacturaD.FieldByName('CLDOC_FD').AsString:= EditCLDOC_F.Text;
TablaFacturaD.FieldByName('CONTROL').AsInteger:=AsignaControlVariable;
TablaFacturaD.FieldByName('CLPRO_FD').AsString:= TablaDeta.FieldByName('Clave').AsString;
TablaFacturaD.FieldByName('CANTI_FD').AsFloat:= TablaDeta.FieldByName('Cantidad').AsFloat;
TablaFacturaD.FieldByName('PENDI_FD').AsString:= TablaDeta.FieldByName('TARA').AsString;

TablaFacturaD.FieldByName('DEPRO_FD').AsString:= TablaDeta.FieldByName('Producto').AsString;
TablaFacturaD.FieldByName('PUNPR_FD').AsFloat:= TablaDeta.FieldByName('Precio').AsFloat;

try
TablaFacturaD.FieldByName('PREDE_FD').AsFloat:= TablaDeta.FieldByName('Precio').AsFloat*
((1-(TablaDeta.FieldByName('Descuento').AsFloat/100))*(1-(TablaDeta.FieldByName('Descuento2').AsFloat/100))*(1-(TablaDeta.FieldByName('Descuento3').AsFloat/100))*(1-(TablaFacturaE.FieldByName('DECOT_F').AsFloat/100))      );

TablaFacturaD.FieldByName('PREDE_FD').AsFloat:=TablaFacturaD.FieldByName('PREDE_FD').AsFloat*
(1/(1+(TablaDeta.FieldByName('Impuesto').AsFloat/100)));

except
end;

TablaFacturaD.FieldByName('IMPOR_FD').AsFloat:=TablaDeta.FieldByName('Precio').AsFloat*
TablaFacturaD.FieldByName('CANTI_FD').AsFloat;

TablaFacturaD.FieldByName('COPRO_FD').AsFloat:= TablaDeta.FieldByName('Costo').AsFloat;



TablaFacturaD.FieldByName('PDES1_FD').AsFloat:= TablaDeta.FieldByName('Descuento').AsFloat;
TablaFacturaD.FieldByName('UNIDA_FD').AsString:= TablaDeta.FieldByName('Unidad').AsString;
TablaFacturaD.FieldByName('FEDOC_FD').AsString:= EditFEDOC_F.Text;
TablaFacturaD.FieldByName('PIVA1_FD').AsFloat:= TablaDeta.FieldByName('Impuesto').AsFloat;
TablaFacturaD.FieldByName('FPGCX_FD').AsFloat:=TablaDeta.FieldByName('FPGC').AsFloat;
try
TablaFacturaD.FieldByName('PIVA2_FD').AsFloat:=TablaDeta.FieldByName('FACTOR').AsFloat;
except
end;

TablaFacturaD.Post;

end;
//TablaFacturaD.ApplyUpdates;

end;
TablaDeta.Next;
end;

//*****verifica que exista el encabezado
VerificaEncabezado(EditCLDOC_F.Text,AsignaControlVariable);

MovimientoBorrado:=0;
{borra;}
end;


end;


procedure guardatodo(tipo:Char);
begin
With FormaCapturaRapida do
begin
cliente:=EditCLCLI_F.Text;
if BotonNuevo.tag=1 then
begin
{MuestraMensaje(IntTostr(numeromovimiento));}
if revisafactura(EditCLCLI_F.Text) then
begin
case tipo of
'Z':begin
//generacuentasxcobrar('N');
actualizafactura(tipo);
actualizacliente;
end;

'F':begin
if IntegrarMI='S' then
begin
try
TablaMovimientosInventario.Last;
numeromovimiento:=TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger+1;
tipomovimiento:=1;

{TablaMovimientosInventario.Insert;
if MovimientoBorrado<>0 then
TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger:=MovimientoBorrado
else
TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger:=numeromovimiento;
TablamovimientosInventario.FieldByName('CONTROL').AsInteger:=AsignaControlVariable;
TablaMovimientosInventario.Post;}

except
end;

end;
//TablaMovimientosInventario.ApplyUpdates;
actualizafactura(tipo);
//generacuentasxcobrar('N');
actualizacliente;
end;

'R':begin
if IntegrarMI='S' then
begin
try
TablaMovimientosInventario.Last;
numeromovimiento:=TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger+1;
tipomovimiento:=3;

{TablaMovimientosInventario.Insert;
if MovimientoBorrado<>0 then
TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger:=MovimientoBorrado
else
TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger:=numeromovimiento;
TablamovimientosInventario.FieldByName('CONTROL').AsInteger:=AsignaControlVariable;
TablaMovimientosInventario.Post;}

except
end;

end;
//TablaMovimientosInventario.ApplyUpdates;
actualizafactura(tipo);
{actualizacliente;}
end;

'C':begin
actualizafactura('C');

end;

'P':begin
actualizafactura(tipo);
end;

'X':begin
actualizafactura(tipo);
end;

'N':begin
actualizafactura(tipo);

end;

'D':begin
if IntegrarMI='S' then
begin
try
TablaMovimientosInventario.Last;
numeromovimiento:=TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger+1;
tipomovimiento:=52;
devolucionproductos;

{TablaMovimientosInventario.Insert;
if MovimientoBorrado<>0 then
TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger:=MovimientoBorrado
else
TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger:=numeromovimiento;
TablamovimientosInventario.FieldByName('CONTROL').AsInteger:=AsignaControlVariable;
TablaMovimientosInventario.Post;}

except
end;
end;
//TablaMovimientosInventario.ApplyUpdates;
actualizafactura(tipo);


end;



end;{case}


end;
BotonNuevo.Tag:=0;
end;
{*********cambios*******}
if BotonCambios.tag=1 then
begin

case tipo of
'F':begin
borradatosanteriores('F');
if IntegrarMI='S' then
begin
try
TablaMovimientosInventario.Last;
numeromovimiento:=TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger+1;
except
end;
end;
//generacuentasxcobrar('C');
actualizafactura(tipo);
actualizacliente;
end;

'R':begin
if IntegrarMI='S' then
begin
try
TablaMovimientosInventario.Last;
numeromovimiento:=TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger+1;
except
end;
end;
actualizafactura(tipo);
end;

'C':begin
    actualizafactura(tipo);
    end;

'P':begin
    actualizafactura(tipo);
    end;
end;
{****case termina cambios*****}



BotonCambios.Tag:=0;
end;



{limpiar;}
desactiva;

end;
end;

procedure DatosEstado;
begin
With FormaCapturaRapida do
begin

if TablaFacturaE.FieldByName('STATU_F').AsString='C' then
begin
 Estado.Caption:='Cancelada';
 Cancelar1.Enabled:=False;
end
 else
 begin
 if TablaFacturaE.FieldByName('STATU_F').AsString='D' then
 Estado.Caption:='Dev. Total';
 if TablaFacturaE.FieldByName('STATU_F').AsString='P' then
 Estado.Caption:='Dev. Parcial';
 if TablaFacturaE.FieldByName('STATU_F').AsString='G' then
 Estado.Caption:='Pagada';
 if TablaFacturaE.FieldByName('STATU_F').AsString='' then
 Estado.Caption:='Activa';

 if TablaFacturaE.FieldByName('STATU_F').AsString='E' then
 Estado.Caption:='En Espera...';


 if TablaFacturaE.FieldByName('TREGI_F').AsString='I' then
 begin
 Impresa.Caption:='Impresa';
 ImpresoBitmap.Visible:=True;
 end
 else
 begin
 Impresa.Caption:='No Impresa';
  ImpresoBitmap.Visible:=False;
 end;
  Cancelar1.Enabled:=True;
 end;


end;
end;

procedure ponedatos;
begin

With FormaCapturaRapida do
begin
{if TablaFacturaE.FieldByName('NOMBR_F').AsString<>'' then
 begin}
 Nombre.Caption:=TablaFacturaE.FieldByName('NOMBR_F').AsString;
 TipoPago.Text:=TablaFacturaE.FieldByName('PAGOX_F').AsString;


 Direccion.Caption:=TablaFacturaE.FieldByName('DIREC_F').AsString;
 Direc2.Caption:=TablaFacturaE.FieldByName('DIRE2_F').AsString;
 Poblacion.Caption:=TablaFacturaE.FieldByName('POBLA_F').AsString;
 RFC.Caption:=TablaFacturaE.FieldByName('RFCXX_F').AsString;
 CodigoPostal.Caption:=TablaFacturaE.FieldByName('CPXXX_F').AsString;
 FormaCapturaRapida.EditFEDOC_F.Text:=TablaFacturaE.FieldByName('FEDOC_F').AsString;

 Hora.Caption:=TablaFacturaE.FieldByName('HORAX_F').AsString;

 if TablaFacturaE.FieldByName('STATU_F').AsString='C' then
 Estado.Caption:='Cancelada'
 else
 begin
 if TablaFacturaE.FieldByName('STATU_F').AsString='D' then
 Estado.Caption:='Dev. Total';
 if TablaFacturaE.FieldByName('STATU_F').AsString='P' then
 Estado.Caption:='Dev. Parcial';
 if TablaFacturaE.FieldByName('STATU_F').AsString='' then
 Estado.Caption:='Activa';
 end;

 if TablaFacturaE.FieldByName('CAMBI_F').AsFloat>0 then
 SuCambio.Caption:=convierte('##,##0.00',redondear(TablaFacturaE.FieldByName('CAMBI_F').AsFloat-TablaFacturaE.FieldByName('IMTOD_F').AsFloat),'')
  else
 SuCambio.Caption:='0';
 DatosEstado;


{ if TablaFacturaE.FieldByName('STATU_F').AsString='C' then
 Estado.Caption:='Cancelada'
 else
 Estado.Caption:='Activa';}


LeeDetalle;
sumatotal;


if TablaFacturaE.FieldByName('REMIS_F').AsString<>'' then
Label18.Caption:='F11 IMPRIME TICKET,     Ctrl+B   BUSCAR       '+TablaFacturaE.FieldByName('REMIS_F').AsString
else
Label18.Caption:='F11 IMPRIME TICKET,     Ctrl+B   BUSCAR       ';

//PonePagado;
end;
end;

{xxx*********}
procedure posicionafactura(clave:string);
begin
with FormaCapturaRapida do
begin
if FormaCapturaRapida.Tag=0 then
begin
{if FileExists(leetapiz(3)) then
Fondo.Picture.LoadFromFile(leetapiz(3));}
{Fondo.Visible:=True;}
rutas;
desactiva;
Pedido1.Enabled:=False;
Remisin1.Enabled:=False;
//Factura1.Enabled:=False;
BotonCambios.Enabled:=True;
BotonNuevo.Enabled:=true;
BotonGuardar.Enabled:=false;
Guardar1.enabled:=False;
{BotonImprimir.Enabled:=false;}
indices:=1;
decimales:=2;
{ponedatos;}
end;

FormaCapturaRapida.Tag:=1;
TablafacturaE.FindKey([clave]);
end;
ponedatos;
end;

{************}


procedure TFormaCapturaRapida.FormCreate(Sender: TObject);
var
i:integer;
arch:TextFile;
linea:string;
  begin

//BotonRedondo1.Caption:=BotonNuevo.Caption;

MovimientoBorrado:=0;

try
Assignfile(arch,leeruta+'\encabeza.cnf');
Reset(arch);
Readln(arch,linea);

  if ruta(33)='S' then
  desglosado:=True
  else
  desglosado:=False;

if linea='S' then
begin
SaltarEncabezado:=True;
SaltarEncabezado1.Checked:=True;
end
else
begin
SaltarEncabezado:=False;
SaltarEncabezado1.Checked:=False;
end;


Readln(arch,linea);

if linea='S' then
begin
IniciaenClave:=True;
IniciaenClave1.Checked:=True;
end
else
begin
IniciaenClave:=False;
IniciaenClave1.Checked:=False;
end;

//*******teclas de funcion ctrl+f1, ctrl+f2, etc.
Readln(arch,linea);
CtrlF11.Caption:=linea;
Readln(arch,linea);
CtrlF21.Caption:=linea;
Readln(arch,linea);
CtrlF31.Caption:=linea;
Readln(arch,linea);
CtrlF41.Caption:=linea;
Readln(arch,linea);
CtrlF51.Caption:=linea;
Readln(arch,linea);
CtrlF61.Caption:=linea;

Readln(arch,linea);
if linea='S' then
begin
VerTotalesenformatoDigital1.Checked:=True;
//PanelSuma.Font.Name:='Digital Readout Thick Upright'
PanelSuma.Font.Name:='Digiface'
end
else
begin
VerTotalesenformatoDigital1.Checked:=False;
PanelSuma.Font.Name:='Courier New';
end;


FormResize(Sender);
//*******teclas de funcion ctrl+f1, ctrl+f2, etc.


if ruta(61)='S' then
EditDESFI_F.Enabled:=True
else
EditDESFI_F.Enabled:=False;


CloseFile(arch);
except
end;

  FormatosPais;
//  formatonum:=14;
formatonum:=15;
  nombreformato:=leeruta+'\consulta\'+ruta(formatonum);
  ultimovendedor:='';
  orig:='';
//  desglosado:=True;
  Digitos:=2;

//  MuestraMensaje(ruta(42));
  Digitos:=StrToInt(ruta(42));
  DigitosTotal:=StrToInt(ruta(45));

  if ruta(47)='S' then
    CapturarClaves:=True
  else
    CapturarClaves:=False;


  if ruta(43)='S' then
  PreciosPolitica:=True
  else
  PreciosPolitica:=False;

if digitos>0 then
begin
Digi:='';
for i:=1 to Digitos do
Digi:=Digi+'0';
Digi:='##,##0.'+digi;
//MuestraMensaje(Digi);
end;

Funciones.Caption:='F2 -> Buscar Producto'+char(13)+
                   'F3 -> Repite el último Movimiento'+char(13)+
                   'F4 -> Salta a Cantidad'+char(13)+
                   'F5 -> Ingresar Efectivo'+char(13);
  ListaClaves:=TStringList.Create;
  ListaCantidad:=TStringList.Create;



//FormaSerial.ComPortRG.ItemIndex:=
//FormaSerial.DataBitsRG.Items[FormaSerial.DataBitsRG.ItemIndex]

if FileExists(leeruta+'\especial.cnf') then
begin
Assignfile(arch,leeruta+'\especial.cnf');
Reset(arch);

Readln(arch,linea);
if linea='S' then
begin
VerTara:=True;
VerCampoTara1.Checked:=True;
EditClave.Width:=EditClave.Width-EditTARA.Width-5;

end;

Readln(arch,linea);
CampoComparaTara:=linea;
Readln(arch,linea);
ValorComparaTara:=linea;

//rrr
CloseFile(arch);

end; //fieleexists

if FileExists(leeruta+'\Serial.cnf') then
begin
Assignfile(arch,leeruta+'\Serial.cnf');
Reset(arch);

Readln(arch,linea);

CloseFile(arch);

if linea='S' then
begin
ConfigurarLectorSerial1.Checked:=True;
ConectaLectorSerial(sender);
Caption:=Caption+'    Conectado a Puerto Serial...';
end;
end;

if ruta(58)='S' then
 AplicarDescuentoClienteLinea:=True
 else
 AplicarDescuentoClienteLinea:=False;



end;

procedure TFormaCapturaRapida.EditCLCLI_FExit(Sender: TObject);
//var
//trunca:string[60];
begin

quitacolor(EditCLCLI_F.ComponentIndex);
TablaCliente.First;
if Tablacliente.FindKey([EditCLCLI_F.Text]) then
begin
Nombre.Caption:=TablaCliente.FieldByName('NOMBR_C').AsString;
Direccion.Caption:=TablaCliente.FieldByName('DIREC_C').AsString;
Direc2.Caption:=TablaCliente.FieldByName('DIRE2_C').AsString;
Poblacion.Caption:=TablaCliente.FieldByName('POBLA_C').AsString;
RFC.Caption:=TablaCliente.FieldByName('RFCXX_C').AsString;
CodigoPostal.Caption:=TablaCliente.FieldByname('CPXXX_C').AsString;
//EditCONDI_F.Text:=TablaCliente.FieldByname('DCRED_C').AsString;

PrecioNumero:=Tablacliente.FieldByName('PREPR_C').AsInteger;
if PrecioNumero<1 then
Precionumero:=0;

if Tablacliente.FieldByName('STATU_C').AsString='I' then
begin

MuestraMensaje('Cliente Inactivo, tiene que modificar esta clave...');
EditCLCLI_F.SetFocus;

end;
end;
{end;}

end;

procedure TFormaCapturaRapida.BotonNuevoClick(Sender: TObject);
var
Ultimo:LongInt;
begin
PermiteCambioPrecio:=False;
if caso(StrToInt(usuario.Caption),20) then
begin
TipoMovimiento:=3;
MovimientoBorrado:=0;
PrecioNumero:=0;
Hora.Caption:=TimeToStr(Time);
Label18.Caption:='F11 IMPRIME TICKET,     Ctrl+B   BUSCAR';
{*********}
try
TablaFacturaE.Refresh;
except
end;
TablaFacturaE.Last;

Ultimo:=TablaFacturaE.FieldByName('CLDOC_F').AsInteger;
TablaFacturae.Insert;
EditBCLIM_F.Text:=CajaLocal;
if VendedorDefault<>'' then EditCLVEN_F.Text:=VendedorDefault;

SuCambio.Caption:='';
LabelPartidas.Caption:='Partidas  0'
+'  RUTA '+TablaDeta.DatabaseName+' '+TablaDeta.TableName;

//***********************
//if TablaFacturaE.State=dsInsert then
//begin

try
TablaFacturae.FieldByName('CLDOC_F').AsInteger:=Ultimo+1;
if VendedorDefault='' then
TablaFacturae.FieldByName('CLVEN_F').AsString:=ultimovendedor
else
TablaFacturae.FieldByName('CLVEN_F').AsString:=VendedorDefault;

TablaFacturae.FieldByName('FEDOC_F').AsDateTime:=Date;

TablaFacturae.Post;

//TablaFacturaE.ApplyUpdates;
{TablaFacturaE.UnLockTable(ltReadLock);}
{TablaUltimo.UnLockTable(ltReadLock);}
saldoanterior:=0;
borradatoscliente;
borra;
{BotonImprimir.Enabled:=false;}
BotonNuevo.Tag:=1;
BotonCambios.Tag:=0;
Caja.Enabled:=True;
local:=True;
TablaFacturae.Edit;
EditCLCLI_F.Visible:=True;
activa;
EditFEDOC_F.Text:=DateToStr(Date);
configuracion;
indice:=0;
sig:=1;
{****totales****}
SumarTotal.Caption:=convierte('##,##0.00','0','');
ImpuestoValor.Caption:=convierte('##,##0.00','0','');
TotalFact.Caption:=convierte('##,##0.00','0','');
{**************}
activabotones(False,False,True,False,False,False,True);
BotonTerminaVenta.Enabled:=BotonGuardar.Enabled;
BotonNuevaVenta.Enabled:=BotonNuevo.Enabled;

BotonRedondo1.Enabled:=BotonNuevaVenta.Enabled;
BotonRedondo2.Enabled:=BotonTerminaVenta.Enabled;


EditClave.Enabled:=BotonTerminaVenta.Enabled;
EditCantidad.Enabled:=BotonTerminaVenta.Enabled;
Editempaque.Enabled:=BotonTerminaVenta.Enabled;
EditTARA.Enabled:=BotonTerminaVenta.Enabled;

EstadoCap(BotonTerminaVenta.Enabled);
{indices:=1;}
//EditCLDOC_F.SetFocus;
EditCLCLI_F.SetFocus;
EditCLCLI_F.Text:='1';
if SaltarEncabezado then
begin
FormaCapturaRapida.EditCLCLI_FExit(Sender);
Tabladeta.Edit;
EditCantidad.SetFocus;
EditCantidad.Text:='1';
//*******************
if IniciaenClave then
EditClave.SetFocus
else
begin
EditCantidad.SetFocus;
EditCantidad.SelectAll;
end;
end;
//********************
Detalle.ReadOnly:=False;
EditCantidad.ReadOnly:=Detalle.ReadOnly;
EditClave.ReadOnly:=Detalle.ReadOnly;
Impresa.Caption:='No Impresa';
 ImpresoBitmap.Visible:=False;
//end
//else

except
MuestraMensaje('No Pueden Guardarse los Datos ha Ocurrido un Error');
end;
end;
Navegador.Enabled:=False;
end;


procedure ActualizaOrigen(Orige,Doc_Final,Base:string);
var
 Tabla:TTable;
 nombre:string;
 begin
//muestraMensaje(orige+'  '+Doc_Final+'   '+Base);
Tabla:=TTable.Create(Application);
if Orige[1]='F' then
nombre:='FacturaE.dbf';

if Orige[1]='R' then
nombre:='Remision.dbf';

if Orige[1]='P' then
nombre:='Pedido.dbf';

if Orige[1]='C' then
nombre:='Cotizaci.dbf';

//if Orige[1]='F' then
//nombre:='Devoluc.dbf';
//muestraMensaje(nombre);
with Tabla do
begin
   DatabaseName :=ruta(8);
   TableName := nombre;
   Tabla.IndexName:='INUMENC';
   Tabla.Open;
   if Tabla.Findkey([CortaCadena(2,length(Orige),Orige)]) then
   begin
   if Base[1]+Doc_Final<>FieldByName('REMIS_F').AsString then
   begin
   Edit;
   FieldByName('REMIS_F').AsString:=Base[1]+Doc_Final;
   Post;
   end;
    end;//if
   Close;

end;//width
Tabla.Close;
Tabla.Free;

//********el detalle*****
Tabla:=TTable.Create(Application);
if Orige[1]='F' then
nombre:='FacturaD.dbf';

if Orige[1]='R' then
nombre:='RemisioD.dbf';

if Orige[1]='P' then
nombre:='PedidoD.dbf';

if Orige[1]='C' then
nombre:='CotizacD.dbf';

//if Orige[1]='F' then
//nombre:='Devoluc.dbf';
//muestraMensaje(nombre);
try
with Tabla do
begin
   DatabaseName :=ruta(8);
   TableName := nombre;
   Tabla.IndexName:='CLDOC_FD';
   Tabla.Open;
  Tabla.SetRange([CortaCadena(2,length(Orige),Orige)],[CortaCadena(2,length(Orige),Orige)]);
//   muestraMensaje(CortaCadena(2,length(Orige),Orige));
   While not Tabla.EOF do
   begin
   if FieldByName('TDOCU_FD').AsString<>Base[1]+Doc_Final then
   begin
   Edit;
   FieldByName('TDOCU_FD').AsString:=Base[1]+Doc_Final;
   Post;
   end
   else
   exit;
   Tabla.Next;
    end;//if
   Close;

end;//width
Tabla.Close;
Tabla.Free;
except
end;

end;


procedure ActualizaOrigenRango(rango,anterior,base1,nume:string);
var
 i:integer;
 aux,ante:string;
// ran:Boolean;
begin
with FormaCapturaRapida do
begin


//inicio:=0;
//fin:=0;
aux:='';

//ran:=False;
ante:=anterior;
//MuestraMensaje(NuevoRango(rango));
rango:=NuevoRango(rango);
//********************



aux:='';
for i:=1 to length(rango) do
begin

if rango[i]=',' then
begin
//MuestraMensaje(siguiente);
ActualizaOrigen(ante[1]+Aux,nume,base1);
//aux:=aux+CalculaSecuencia(anterior,siguiente);
aux:='';
end
else
begin
aux:=aux+rango[i];
end;




end;//for



//*********************


{ran:=False;
ante:=anterior;
MuestraMensaje(rango);
for i:=1 to length(rango) do
if rango[i]='-' then
begin
ran:=True;
end;
if ran then
rango:=rango+'-'
else
rango:=rango+',';

for j:=1 to length(rango) do
begin

if rango[j]='-' then
begin

if inicio=0 then inicio:=StrToInt(aux)
else
fin:=StrToInt(aux);
aux:='';

end//if rango
else
aux:=rango[j];

end;//for j

if ran then
if inicio<=fin then
for i:=fin downto inicio do
begin
ActualizaOrigen(ante[1]+IntToStr(i),nume,base1);
end;//for i

//**************segundo caso
aux:='';
i:=1;
if not ran then
while i<=length(rango) do
begin
if rango[i]=',' then
begin

ActualizaOrigen(ante[1]+Aux,nume,base1);
Aux:='';
end
else
begin
Aux:=Aux+rango[i];
end;
i:=i+1;
end;//for i
//*************************************

//Tabla.Free;
           }
end;//width


end;



procedure TFormaCapturaRapida.BotonGuardarClick(Sender: TObject);
var
ulti:string[20];
UltimoControl:LongInt;
begin
//                                                                                          MuestraMensaje('botron guardar');
Hora.Caption:=TimeToStr(Time);

if ((BotonNuevo.Tag=1)or(BotonCambios.Tag=1)) and (revisafactura(EditCLCLI_F.Text)) then
begin

if BotonCambios.Tag=1 then
BorraDatosMovimientos('F');

if EditCLDOC_F.Text<>'' then
begin
if (Base.Text='Factura')and (Base.Tag=1) then
guardatodo('Z');
if Base.Text='Factura' then
guardatodo('F');
if Base.Text='Remisión' then
guardatodo('R');
if Base.Text='Pedido' then
guardatodo('P');
if Base.Text='Cotización' then
guardatodo('C');
if Base.Text='Devolución' then
guardatodo('D');
if Base.Text='Nota de Crédito' then
guardatodo('N');
if Base.Text='Caja Chica' then
guardatodo('C');


{configuracion;}

if ruta(1)='NO' then
begin
ulti:=EditCLDOC_F.Text;


UltimoControl:=AsignaControlVariable;
//MuestraMensaje('guarda permanete');
GuardaPendientes(TablaMovimientosInventario);
GuardaPendientes(TablaFacturaE);

try
TablaFacturaE.Refresh;
except
end;


GuardaPendientes(TablaFacturaD);
GuardaPendientes(TablaInventario);

GuardaPendientes(TablaCuentasxCobrar);
GuardaPendientes(TablaCliente);
//****checa si es el ultimo documento y se posiciona
if TablaFacturaE.FindKey([ulti]) then
begin

ponedatos;

if (AsignaControlVariable<>UltimoControl)then
begin

TablaFacturaE.Next;
if ulti<>TablaFacturaE.FieldByName('CLDOC_F').AsString then
 TablaFacturaE.Prior;

 ponedatos

end;
end;//if UltimoTotal=suma

end;
ultimovendedor:=EditCLVEN_F.Text;
Navegador.Enabled:=True;
Base.Tag:=0;
activabotones(True,True,False,True,True,True,False);
BotonTerminaVenta.Enabled:=BotonGuardar.Enabled;
BotonNuevaVenta.Enabled:=BotonNuevo.Enabled;
BotonRedondo1.Enabled:=BotonNuevaVenta.Enabled;
BotonRedondo2.Enabled:=BotonTerminaVenta.Enabled;

EditCantidad.Enabled:=BotonTerminaVenta.Enabled;
EditClave.Enabled:=BotonTerminaVenta.Enabled;
Editempaque.Enabled:=BotonTerminaVenta.Enabled;
EditTARA.Enabled:=BotonTerminaVenta.Enabled;

EstadoCap(BotonTerminaVenta.Enabled);

BotonPago.Enabled:=True;
MovimientoBorrado:=0;
//Base.SetFocus;
//Detalle.SelectedIndex:=2;
//Detalle.SelectedIndex:=0;
if RangoDocumentos then
begin
//FormaRango.Edit1.Text
ActualizaOrigenRango(DatoRango,Orig2,Base.Text,EditCLDOC_F.Text);

end;

RangoDocumentos:=False;

end
else
begin
MuestraMensaje('Falta el Numero de Documento');
EditCLDOC_F.SetFocus;
end;
end
else
MuestraMensaje('No Pueden Guardarse los Datos ha Ocurrido un Error');


end;


procedure TFormaCapturaRapida.NavegadorClick(Sender: TObject; Button: TNavigateBtn);
begin
ponedatos;

end;

procedure TFormaCapturaRapida.DetalleColEnter(Sender: TObject);
var valor:Real;
    code:integer;
    cadena:string;
    EncontroArticulo:Boolean;
    ClaveArticulo:String[30];
//    UsuarioAnte:string[3];
    factor_c:real;

begin

if (Detalle.Enabled=True)and((BotonCambios.Tag=1)or(BotonNuevo.Tag=1))  then
begin
case Detalle.SelectedIndex of

0:begin
try
//   Facturable:=False;
try
   sumatotal;
except
end;//para que  no se bloquee   
   Str(suma:12:3,cadena);
   SumarTotal.Caption:=convierte('##,##0.00',cadena,'');
{   TablaDeta.Insert;}
except
end;
 end;


1:begin
if TablaDeta.FieldByName('Cantidad').AsString='' then
  Detalle.SelectedIndex:=Detalle.SelectedIndex-1
  else
  begin
  Val(TablaDeta.FieldByName('Cantidad').AsString,valor,code);
  if code<>0 then
  TablaDeta.FieldByName('Cantidad').AsString:='0';
  TablaDeta.Edit;
  end;
  end;

2:begin
//ShowMessage('entro');
try


//EncontroArticulo:=False;

if TablaDeta.FieldByName('Cantidad').AsString='' then
  Detalle.SelectedIndex:=Detalle.SelectedIndex-1
  else
  begin
//**********codigo clave alterna
//   mUESTRAmENSAJE(TablaDeta.FieldByName('Clave').AsString);
EncontroArticulo:=False;
try

  if ClavePrincipal(TablaDeta.FieldByName('Clave').AsString) then
  EncontroArticulo:=True
  else
  begin

  ClaveArticulo:=ClaveAlterna(TablaDeta.FieldByName('Clave').AsString);

if ClaveArticulo='' then
begin
factor_c:=Factor_de_coincidencia(TablaDeta.FieldByName('Clave').AsString);
if factor_c>0.6 then
begin
LabelPartidas.Caption:=FloatToStr(factor_c);

  ClaveArticulo:=BuscaClaveDirecto(FormaCapturaRapida.TablaDeta.FieldByName('clave').AsString,1,2);
//****estose puede comprimir
  if (TablaInventario.FindKey([ClaveArticulo]))and(TablaDeta.FieldByName('CLAVE').AsString<>'COMENTARIO') then
  begin

  TablaDeta.FieldByName('Clave').AsString:=ClaveArticulo;
  if TablaInventario.FieldByName('UEMPA_I').AsString='' then
  TablaDeta.FieldByName('Factor').AsString:='1'
  else
  TablaDeta.FieldByName('Factor').AsString:=TablaInventario.FieldByName('UEMPA_I').AsString;

  LabelFactor.Caption:=TablaDeta.FieldByName('Factor').AsString;

  EncontroArticulo:=True;
  end;


  //*******
end;//factor coincidencia

end;

if  ClaveArticulo<>'' then
  if (TablaInventario.FindKey([ClaveArticulo]))and(TablaDeta.FieldByName('CLAVE').AsString<>'COMENTARIO') then
  begin
  TablaDeta.FieldByName('Clave').AsString:=ClaveArticulo;
  TablaDeta.FieldByName('Factor').AsString:=TablaInventario.FieldByName('UEMPA_I').AsString;
  LabelFactor.Caption:=TablaDeta.FieldByName('Factor').AsString;
  EncontroArticulo:=True;
   end;
   end;

except
//ESTRAmENSAJE(TablaDeta.FieldByName('Clave').AsString);
 ClaveArticulo:=ClaveAlterna(TablaDeta.FieldByName('Clave').AsString);

{if ClaveArticulo='' then
begin
factor_c:=Factor_de_coincidencia(TablaDeta.FieldByName('Clave').AsString);
if factor_c>0.6 then
begin
LabelPartidas.Caption:=FloatToStr(factor_c);

  ClaveArticulo:=BuscaClaveDirecto(FormaCapturaRapida.TablaDeta.FieldByName('clave').AsString,1,2);
//****estose puede comprimir

  if (TablaInventario.FindKey([ClaveArticulo]))and(TablaDeta.FieldByName('CLAVE').AsString<>'COMENTARIO') then
  begin

  TablaDeta.FieldByName('Clave').AsString:=ClaveArticulo;
  if TablaInventario.FieldByName('UEMPA_I').AsString='' then
  TablaDeta.FieldByName('Factor').AsString:='1'
  else
  TablaDeta.FieldByName('Factor').AsString:=TablaInventario.FieldByName('UEMPA_I').AsString;

  LabelFactor.Caption:=TablaDeta.FieldByName('Factor').AsString;

  EncontroArticulo:=True;
  end;
  //*******
end;//factor coincidencia
end; }


 //UESTRAmENSAJE('ALTERNA  '+ClaveArticulo);
if  ClaveArticulo<>'' then
  if (TablaInventario.FindKey([ClaveArticulo]))and(TablaDeta.FieldByName('CLAVE').AsString<>'COMENTARIO') then
  begin

  TablaDeta.FieldByName('Clave').AsString:=ClaveArticulo;
  if TablaInventario.FieldByName('UEMPA_I').AsString='' then
  TablaDeta.FieldByName('Factor').AsString:='1'
  else
  TablaDeta.FieldByName('Factor').AsString:=TablaInventario.FieldByName('UEMPA_I').AsString;

  LabelFactor.Caption:=TablaDeta.FieldByName('Factor').AsString;

  EncontroArticulo:=True;
  end
  else
  begin
  ClaveArticulo:=BuscaClaveDirecto(FormaCapturaRapida.TablaDeta.FieldByName('clave').AsString,1,2);
//****estose puede comprimir

  if (TablaInventario.FindKey([ClaveArticulo]))and(TablaDeta.FieldByName('CLAVE').AsString<>'COMENTARIO') then
  begin

  TablaDeta.FieldByName('Clave').AsString:=ClaveArticulo;
  if TablaInventario.FieldByName('UEMPA_I').AsString='' then
  TablaDeta.FieldByName('Factor').AsString:='1'
  else
  TablaDeta.FieldByName('Factor').AsString:=TablaInventario.FieldByName('UEMPA_I').AsString;

  LabelFactor.Caption:=TablaDeta.FieldByName('Factor').AsString;

  EncontroArticulo:=True;
  end;
  //*******


  end;;


end;
//  ClaveArticulo:=
//**********fin codigo clave alterna
//  if (TablaInventario.FindKey([TablaDeta.FieldByName('Clave').AsString]))and(TablaDeta.FieldByName('CLAVE').AsString<>'COMENTARIO') then
if  EncontroArticulo then
  begin

//*****parte para la tara
if TablaInventario.FieldByName('FACTO_I').AsFloat>0 then
TablaDeta.FieldByName('cantidad').AsFloat:=GeneraTara(TablaDeta.FieldByName('cantidad').AsFloat,TablaInventario.FieldByName('FACTO_I').AsFloat,TablaInventario.FieldByName('EXIFA_I').AsFloat);
//**********

  SumaTotalCantidad;
  checaexistencias;
  TablaDeta.Edit;

  if (cantidad>=0) or ((UpperCase(TablaInventario.FieldByName('LIPRO_I').AsString)='SERVI')or (ruta_21<>'N')) or
  ((Base.Text='Pedido')or(Base.Text='Cotización')or(Base.Text='Nota de Crédito')or(Base.Text='Devolución'))then
  begin


  TablaDeta.Edit;
  TablaDeta.FieldByName('Producto').AsString:=TablaInventario.FieldByName('DSCPR_I').AsString;
  if TablaInventario.FieldByName('UEMPA_I').AsString='' then
  TablaDeta.FieldByName('Factor').AsString:='1'
  else
  TablaDeta.FieldByName('Factor').AsString:=TablaInventario.FieldByName('UEMPA_I').AsString;

  LabelFactor.Caption:=TablaDeta.FieldByName('Factor').AsString;

  //***********verifica el tipo de precio
  if (PrecioNumero>0)or(not PreciosPolitica) then
  LeePrecioPreferencial(PrecioNumero)
  else
  TablaDeta.FieldByName('PRECIO').AsFloat:= LeePrecioPolitica(TablaInventario.FieldByName('PPUBL_I').AsFloat,TablaInventario.FieldByName('PLIS2_I').AsFloat,TablaInventario.FieldByName('PLIS3_I').AsFloat,TablaInventario.FieldByName('PLIS4_I').AsFloat,TablaInventario.FieldByName('PMINI_I').AsFloat,TablaInventario.FieldByName('PLIS6_I').AsFloat,TablaInventario.FieldByName('PLIS7_I').AsFloat,
  TablaInventario.FieldByName('POLI1_I').AsFloat,TablaInventario.FieldByName('POLI2_I').AsFloat,TablaInventario.FieldByName('POLI3_I').AsFloat,TablaInventario.FieldByName('POLI4_I').AsFloat,TablaInventario.FieldByName('POLI5_I').AsFloat,TablaInventario.FieldByName('POLI6_I').AsFloat,TablaInventario.FieldByName('POLI7_I').AsFloat,TablaDeta.FieldByName('Cantidad').AsFloat);

//*******checa si el cliente tiene algun descuento en la linea
if AplicarDescuentoClienteLinea then
begin
//ShowMessage(EditCLCLI_F.Text+'   '+TablaInventario.FieldByName('LIPRO_I').AsString);
//TablaDeta.FieldByName('DESCUENTO').AsFloat:=CalculaDescuentoClienteLinea(EditCLCLI_F.Text,TablaInventario.FieldByName('LIPRO_I').AsString);
TablaDeta.FieldByName('PRECIO').AsFloat:=TablaInventario.FieldByName('PPUBL_I').AsFloat-( (CalculaDescuentoClienteLinea(EditCLCLI_F.Text,TablaInventario.FieldByName('LIPRO_I').AsString)/100)*TablaInventario.FieldByName('PPUBL_I').AsFloat);
//ShowMessage(TablaDeta.FieldByName('PRECIO').AsString);
end;
//*******termina descuento en la linea




  TablaDeta.FieldByName('Unidad').AsString:=TablaInventario.FieldByName('UMEDI_I').AsString;


  TablaDeta.FieldByName('importe').AsFloat:=  TablaDeta.FieldByName('cantidad').AsFloat*
  TablaDeta.FieldByName('Precio').AsFloat-(TablaDeta.FieldByName('cantidad').AsFloat*TablaDeta.FieldByName('Precio').AsFloat*
  TablaDeta.FieldByName('DESCUENTO').AsFloat/100)+0.000;
  TablaDeta.FieldByName('Impuesto').AsString:=TablaInventario.FieldByName('PIVA1_I').AsString;
  TablaDeta.FieldByName('FPGC').AsFloat:=TablaInventario.FieldByName('FPGCC_I').AsFloat*TablaInventario.FieldByName('FPGCI_I').AsFloat*
  TablaInventario.FieldByName('UEMPA_I').AsFloat*TablaDeta.FieldByName('Cantidad').AsFloat;

  if (TablaInventario.FieldByName('TICOS_I').AsString='PROM')or (TablaInventario.FieldByName('TICOS_I').AsString='') then
  TablaDeta.FieldByName('Costo').AsString:=TablaInventario.FieldByName('CPROM_I').AsString
  else
  TablaDeta.FieldByName('Costo').AsString:=TablaInventario.FieldByName('ULCOS_I').AsString;

  try
  TablaDeta.FieldByName('Costo').AsFloat:=TablaDeta.FieldByName('Costo').AsFloat*
  (1/(1+(TablaDeta.FieldByName('Impuesto').AsFloat/100)));
  except
  end;


  TablaDeta.Post;
  sumatotal;
//  TablaDeta.ApplyUpdates;                    0

    Detalle.SelectedIndex:=1;
{   TablaDeta.FieldByName('Costo').AsFloat:=}


  Str(TablaDeta.FieldByName('importe').AsFloat:12:4,cadena);
  FormatFloat( CADENA,3);
  TablaDeta.FieldByName('importe').AsString:=cadena;



//******
if not EditEmpaque.Visible then
begin
AgregaPartidaDetalle;
end;
//******quitamos lo siguiente para EID se agrega parar los demás solo se quita el comentario*****
//  Detalle.SelectedIndex:=3;
  end;

    EditClave.Tag:=0;

  end
  else
begin

if (TablaDeta.FieldByName('CLAVE').AsString<>'COMENTARIO') then
begin

  //*******captura rapida de clave*****

if CapturarClaves then
begin
FormaAdvertencia:=TFormaAdvertencia.Create(Application);
formaAdvertencia.Label1.caption:='El Producto No Se encuentra...¿Desea darlo de Alta?';
FormaAdvertencia.BotonCaptura.Visible:=True;
FormaAdvertencia.BitBtn1.Visible:=False;
FormaAdvertencia.ShowModal;
FormaAdvertencia.BotonCaptura.Visible:=False;
FormaAdvertencia.BitBtn1.Visible:=True;

if FormaAdvertencia.Tag=2 then
begin
FormaClaveRapida:=TFormaClaveRapida.Create(Application);
AltaRapidaClave(TablaInventario.DatabaseName,TablaDeta.FieldByName('CLAVE').AsString);

FormaClaveRapida.Free;
TablaInventario.Refresh;
end;

FormaAdvertencia.Free;
end
else
  MuestraMensaje('El Producto No Se encuentra');

  Detalle.SelectedIndex:=Detalle.SelectedIndex-1;
//
  EditClave.Tag:=1;
  Detalle.SetFocus;
  EditClave.SetFocus;
end;


end;

  end;//primer if

except
MuestraMensaje('Error en la Clave');
 TablaDeta.Edit;
 EditClave.Text:='';
 TablaDeta.Post;
Detalle.SelectedIndex:=1;

end;//try
try
EditCantidad.SetFocus;
except
end;
  end; //caso 2:



3:begin //descuentos
if AplicarDescuentoClienteLinea then
begin
//ShowMessage(EditCLCLI_F.Text+'   '+TablaInventario.FieldByName('LIPRO_I').AsString);
TablaDeta.FieldByName('DESCUENTO').AsFloat:=CalculaDescuentoClienteLinea(EditCLCLI_F.Text,TablaInventario.FieldByName('LIPRO_I').AsString);

end;

PermiteCambioPrecio:=False;
end;




4:begin
//if CambiaPrecios='s' then
//UsuarioAnte:= Usuario.Caption;
if not PermiteCambioPrecio then
begin
//
//TablaDetaPRECIO.ReadOnly:=False
Detalle.SelectedIndex:=0;
MuestraMensaje('No Tiene Acceso a Precios');
end;
//Usuario.Caption:=UsuarioAnte;
//else
//TablaDetaPRECIO.ReadOnly:=True;


  Detalle.Columns[4].PickList.Clear;
  Detalle.Columns[4].PickList.Add(  TablaInventario.FieldByName('PLIS2_I').AsString);
  Detalle.Columns[4].PickList.Add(  TablaInventario.FieldByName('PLIS3_I').AsString);
  Detalle.Columns[4].PickList.Add(  TablaInventario.FieldByName('PLIS4_I').AsString);
  Detalle.Columns[4].PickList.Add(  TablaInventario.FieldByName('PMINI_I').AsString);

  end;


 5:begin
   TablaDeta.Edit;
   TablaDeta.FieldByName('importe').AsFloat:=  TablaDeta.FieldByName('cantidad').AsFloat*
   TablaDeta.FieldByName('Precio').AsFloat-(TablaDeta.FieldByName('cantidad').AsFloat*TablaDeta.FieldByName('Precio').AsFloat*
   TablaDeta.FieldByName('DESCUENTO').AsFloat/100);

//   TablaDeta.FieldByName('Costo').AsFloat:=  TablaDeta.FieldByName('Costo').AsFloat;

{  try
  TablaDeta.FieldByName('Costo').AsFloat:=TablaInventario.FieldByName('ULCOS_I').AsFloat*
  (1/(1+(TablaDeta.FieldByName('Impuesto').AsFloat/100)));
  except
  end;}

   //*TablaDeta.FieldByName('cantidad').AsFloat;

   Str(TablaDeta.FieldByName('importe').AsFloat:12:3,cadena);
   TablaDeta.FieldByName('importe').AsString:=cadena;
   PermiteCambioPrecio:=False;
  end;
end;
end;//if pricipal
end;

procedure TFormaCapturaRapida.EditCLCLI_FKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
{mueveteclas;}
if (key=13) or (key=40) then
begin
indices:=indices+1;
cursor1;
end;
if key=38 then
begin
indices:=indices-1;
cursor1;
end;
if key=113 then
begin
EditCLCLI_F.Text:=BuscaclaveCliente(EditCLCLI_F.Text);
EditCLCLI_F.SetFocus;
end;

end;

procedure TFormaCapturaRapida.EditCLVEN_FKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
TablaVendedores.FindNearest([EditCLVEN_F.Text]);
if key=113 then
begin
FormaCapturaRapida.Tag:=2;
EditCLVEN_F.Text:=LeeVendedor(EditCLVEN_F.Text);
EditCLVEN_F.SetFocus;
end;
if (key=13) or (key=40) then
begin
indices:=indices+1;
cursor1;
end;
if key=38 then
begin
indices:=indices-1;
cursor1;
end;
end;

procedure TFormaCapturaRapida.EditCLVEN_FExit(Sender: TObject);
begin
quitacolor(EditCLVEN_F.ComponentIndex);
if (TablaVendedores.FindKey([EditCLVEN_F.Text]))and(TablaFacturaE.State=dsEdit) then
TablaFacturaE.FieldByName('CTOVE_F').AsFloat:=TablaVendedores.FieldByName('COMIS_V').AsFloat;

end;

procedure TFormaCapturaRapida.EditFEDOC_FEnter(Sender: TObject);
begin
ponecolor(EditFEDOC_F.ComponentIndex,EditFEDOC_F.Color);
indices:=6;
EditFEDOC_F.Text:=DateToStr(Date);
//Uno.Caption:=comenta(13,'factu.des');
//Dos.Caption:=comenta(14,'factu.des');
end;

procedure TFormaCapturaRapida.DetalleKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
//var
//clave:string;
begin

if (Detalle.Enabled=True)and((BotonCambios.Tag=1)or(BotonNuevo.Tag=1))  then
begin
Case key of

113:
begin
Detalle.Tag:=3;
TablaDeta.Edit;
TablaDeta.Post;
TablaDeta.Edit;

FormaCapturaRapida.TablaDeta.FieldByName('clave').AsString:=BuscaClaveDirecto(FormaCapturaRapida.TablaDeta.FieldByName('clave').AsString,1,1);
EditClave.SetFocus;

end;

13:
begin
Detalle.SelectedIndex:=Detalle.SelectedIndex+1;
if  (Detalle.SelectedIndex =5) then
begin
Detalle.DataSource.DataSet.Next;
Detalle.SelectedIndex:=0;
end;

end;

116://f5 para dar cambio
begin
CAMBIO_F.SetFocus;
end;


114:begin
try
if EditEmpaque.Visible then
begin
LabelFactor.Caption:=TablaDeta.FieldByName('Factor').AsString;
EditEmpaque.SetFocus;
end;
except
end;
end;

115://f4 ir a cantidad
begin
Detalle.SelectedIndex:=0;
end;


118://f7 ir a cantidad
begin

end;


123:
begin
Detalle.SelectedIndex:=0;
Detalle.SetFocus;
end;
end;//case

end;//if

end;

procedure TFormaCapturaRapida.FormActivate(Sender: TObject);
begin
if FormaCapturaRapida.Tag=0 then
begin
{if FileExists(leetapiz(3)) then
Fondo.Picture.LoadFromFile(leetapiz(3));}
{Fondo.Visible:=True;}
Refresh;
//Panel2.Refresh;

rutas;
desactiva;
Pedido1.Enabled:=False;
Remisin1.Enabled:=False;
//Factura1.Enabled:=False;
BotonCambios.Enabled:=True;
BotonNuevo.Enabled:=true;
BotonGuardar.Enabled:=false;
Guardar1.enabled:=False;
{BotonImprimir.Enabled:=false;}
indices:=1;
decimales:=2;
TablafacturaE.Last;
ponedatos;
try
UltimoDocumento:=TablaFacturaE.FieldByName('CLDOC_F').AsInteger;
except
end;

CambiaPrecios:=casoLetra(StrToInt(usuario.Caption),44);

{if not Registrado then
begin
Reportes1.Enabled:=False;
BotonImprimir.Enabled:=False;
ImprimirRangodeDocumentos1.Enabled:=False;
Imprimir1.Enabled:=False;
end;}

end;
FormaCapturaRapida.Tag:=1;
end;

procedure TFormaCapturaRapida.EditNALMA_FKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=13 then
Detalle.SetFocus;
if key=38 then
{EditDECOT_F.SetFocus;}
end;

procedure TFormaCapturaRapida.EditFEDOC_FKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

//if Key=114 then
//EditFEDOC_F.Text:=DateTimeToStr(Date);
if (Key=13) or (Key=40) then
begin
quitacolor(EditFEDOC_F.ComponentIndex);
if not fechavalida(EditFedoc_F.Text) then
EditFedoc_F.Text:=DateTimeToStr(Date);

indices:=indices+1;
cursor1;
end;

if Key=38 then
begin
indices:=indices-1;
cursor1;
end;

end;

procedure TFormaCapturaRapida.EditIMIM1_FEnter(Sender: TObject);
begin
ponecolor(EditIMIM1_F.ComponentIndex,EditIMIM1_F.Color);
indices:=7;
EditIMIM1_F.Text:=FloatToStr(iva);
//Uno.Caption:=comenta(19,'factu.des');
//Dos.Caption:=comenta(20,'factu.des');
end;

procedure TFormaCapturaRapida.EditDESFI_FEnter(Sender: TObject);
begin
ponecolor(EditDESFI_F.ComponentIndex,EditDESFI_F.Color);
indices:=8;
//EditDESFI_F.Text:=FloatToStr(desfin);
//Uno.Caption:=comenta(21,'factu.des');
//Dos.Caption:=comenta(22,'factu.des');
end;




procedure TFormaCapturaRapida.BotonSalirClick(Sender: TObject);
begin
Close;
end;

procedure TFormaCapturaRapida.Consultas1Click(Sender: TObject);
begin
FormaConsulta:=TFormaConsulta.Create(Application);
AbreConsulta(1);
FormaConsulta.Free;

end;

procedure TFormaCapturaRapida.EditCLDOC_FKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (key=13) or (key=40) then
begin

indices:=indices+1;
cursor1;

end;
if key=38 then
begin
indices:=indices-1;
cursor1;
end;
end;

procedure TFormaCapturaRapida.BotonBuscarClick(Sender: TObject);
//var siguiente:LongInt;
begin
FormaBusqueda:=TFormaBusqueda.Create(Application);
FormaBusqueda.ShowModal;
TablaFacturae.FindNearest([FormaBusqueda.CajaBuscar.Text]);
ponedatos;
FormaBusqueda.Free;
end;

procedure TFormaCapturaRapida.BotonCambiosClick(Sender: TObject);

begin

if caso(StrToInt(usuario.Caption),22) then
begin
MovimientoBorrado:=0;
local:=False;
TablaFacturae.Edit;
if TablaFacturaE.State=dsEdit then
begin
bufercambios('F');
saldoanterior:=TablaFacturaE.FieldByName('IMTOD_F').AsFloat;

TablaDeta.Edit;
EditCLCLI_F.Visible:=True;
activa;
indice:=0;
sig:=1;
indices:=1;
borradatosanteriores('F');

activabotones(False,False,True,False,False,False,True);
BotonTerminaVenta.Enabled:=BotonGuardar.Enabled;
BotonNuevaVenta.Enabled:=BotonNuevo.Enabled;
BotonRedondo1.Enabled:=BotonNuevaVenta.Enabled;
BotonRedondo2.Enabled:=BotonTerminaVenta.Enabled;

EditClave.Enabled:=BotonTerminaVenta.Enabled;
EditCantidad.Enabled:=BotonTerminaVenta.Enabled;
Editempaque.Enabled:=BotonTerminaVenta.Enabled;
EditTARA.Enabled:=BotonTerminaVenta.Enabled;

EstadoCap(BotonTerminaVenta.Enabled);

BotonCambios.Tag:=1;
BotonNuevo.Tag:=0;

//EditCLDOC_F.SetFocus;
EditCLCLI_F.SetFocus;
end
else
MuestraMensaje('No se Pueden Realizar Cambios');
end;


Navegador.Enabled:=False;

end;




procedure TFormaCapturaRapida.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin

if (BotonCambios.Tag=1)or (BotonNuevo.Tag=1) then
begin
FormaCerrar:=TFormaCerrar.Create(Application);
{FormaCapturaRapida.Tag:=1;}
FormaCerrar.ShowModal;
{MuestraMensaje(IntToStr(FormaCerrar.Tag));}
if FormaCerrar.Tag=1 then
begin
{MuestraMensaje('voy a guardar');}

if Base.Text='Factura' then
guardatodo('F');
if Base.Text='Remisión' then
guardatodo('R');
if Base.Text='Pedido' then
guardatodo('P');
if Base.Text='Cotización' then
guardatodo('C');

activabotones(True,True,False,True,True,True,False);
desactiva;
BotonCambios.Tag:=0;
BotonNuevo.Tag:=0;
end;

if FormaCerrar.Tag=2 then
begin

if BotonCambios.Tag=1 then
regresabufercambios;

if BotonCambios.Tag<>1 then
begin
//TablaFacturae.Delete;
try
TablaFacturae.Post;
except
end;

end;
TablaFacturad.Cancel;



{FormaCapturaRapida.Close;}


activabotones(True,True,False,True,True,True,False);
BotonTerminaVenta.Enabled:=BotonGuardar.Enabled;
BotonNuevaVenta.Enabled:=BotonNuevo.Enabled;
BotonRedondo1.Enabled:=BotonNuevaVenta.Enabled;
BotonRedondo2.Enabled:=BotonTerminaVenta.Enabled;

EditClave.Enabled:=BotonTerminaVenta.Enabled;
EditCantidad.Enabled:=BotonTerminaVenta.Enabled;
Editempaque.Enabled:=BotonTerminaVenta.Enabled;
EditTARA.Enabled:=BotonTerminaVenta.Enabled;

EstadoCap(BotonTerminaVenta.Enabled);

desactiva;
BotonCambios.Tag:=0;
BotonNuevo.Tag:=0;

end;

if FormaCerrar.Tag=3 then
begin
Action:=caNone;
exit;
end;
FormaCerrar.Tag:=0;
{FormaCapturaRapida.Tag:=0;}
FormaCerrar.Free;
end;
Navegador.Enabled:=True;
BotonSalir.Tag:=1000;
//FormaCalculaxPrecio.Free;
end;

procedure TFormaCapturaRapida.BotonImprimirClick(Sender: TObject);
var
entrar:boolean;
begin
entrar:=True;

Usuario.Caption:=Usuario.Caption;

{if TablaFacturaE.FieldByName('TREGI_F').AsString='I' then
begin



 entrar:=False;
if Usuario.Caption<>'0' then
begin
FormaAdministrador:=TFormaAdministrador.Create(Application);
FormaAdministrador.ShowModal;
if FormaAdministrador.Tag=1 then
entrar:=True
else
entrar:=False;
end
else
entrar:=True;

end;}
//*****


if entrar then
begin
Detalle.Enabled:=False;
try
BotonNuevaVenta.Enabled:=False;
BotonRedondo1.Enabled:=BotonNuevaVenta.Enabled;

Nuevo1.Enabled:=BotonNuevaVenta.Enabled;
if FileExists(nombreformato) then
begin
try
UsuarioActual(Usuario.Caption);
LeeEtiquetasMoneda(valordivisaetiqueta('M.N.',1),valordivisaetiqueta('M.N.',2),valordivisaetiqueta('M.N.',3),valordivisaetiqueta('M.N.',4));
forma(FormaCapturaRapida.TablaFacturaE,FormaCapturaRapida.TablaDeta,nombreformato,'i');
except
end;

TablaFacturaE.Edit;
TablaFacturaE.FieldByName('TREGI_F').AsString:='I';
Impresa.Caption:='Impresa';
ImpresoBitmap.Visible:=True;
TablaFacturaE.Post;

end
else
MuestraMensaje('El Formato '+nombreformato+' No Existe');

BotonNuevaVenta.Enabled:=True;
BotonRedondo1.Enabled:=BotonNuevaVenta.Enabled;

Nuevo1.Enabled:=BotonNuevaVenta.Enabled;
Detalle.Enabled:=True;
except
Detalle.Enabled:=True;
end;//try

end;

end;

procedure TFormaCapturaRapida.DetalleEditButtonClick(Sender: TObject);
begin
{MuestraMensaje('Mostrar precios');}
end;

procedure TFormaCapturaRapida.FolderChange(Sender: TObject; NewTab: Integer;
  var AllowChange: Boolean);
//var
//ventas:integer;
begin
{TablaFacturaE.Open;
TablaFacturaE.SetRange([TablaCliente.FieldByName('CLCLI_C').AsString],[TablaCliente.FieldByName('CLCLI_C').AsString]);}
end;

procedure TFormaCapturaRapida.BaseChange(Sender: TObject);
begin
if (Base.Text='')or(Base.Text<>'Remisión')or(Base.Text<>'Devolución')or(Base.Text<>'Caja Chica') then
Base.Text:='Remisión';


if Base.Text='Remisión' then
begin
TablaFacturaE.Close;
TablaFacturaE.TableName:='Remision.dbf';
TablaFacturaE.Open;
TablaFacturaD.Close;
TablaFacturaD.TableName:='RemisioD.dbf';
TablaFacturaD.Open;
formatonum:=15;

Pedido1.Enabled:=False;
Remisin1.Enabled:=False;
Factura1.Enabled:=True;
Devolucin1.Enabled:=True;
NotadeCrdito1.Enabled:=False;
BotonPago.Enabled:=False;
BotonObservacion.Enabled:=False;
if Usuario.Caption='0' then
EditCLDOC_F.ReadOnly:=True
else
EditCLDOC_F.ReadOnly:=False;
end;


if Base.Text='Caja Chica' then
begin
TablaFacturaE.Close;
TablaFacturaE.TableName:='CajaChic.dbf';
TablaFacturaE.Open;
TablaFacturaD.Close;
TablaFacturaD.TableName:='CajaChiD.dbf';
TablaFacturaD.Open;
formatonum:=17;

Pedido1.Enabled:=False;
Remisin1.Enabled:=False;
Factura1.Enabled:=False;
Devolucin1.Enabled:=False;
NotadeCrdito1.Enabled:=False;
BotonPago.Enabled:=False;
BotonObservacion.Enabled:=False;
end;




nombreformato:=leeruta+'\consulta\'+ruta(formatonum);
ponedatos;

end;

procedure TFormaCapturaRapida.EditCLDOC_FEnter(Sender: TObject);
begin
ponecolor(EditCLDOC_F.ComponentIndex,EditCLDOC_F.Color);
indices:=1;
//Uno.Caption:=comenta(1,'factu.des');
//Dos.Caption:=comenta(2,'factu.des');
end;

procedure TFormaCapturaRapida.EditCLCLI_FEnter(Sender: TObject);
begin

EditCLClI_F.Text:='1';
EditCLClI_F.SelectAll;
ponecolor(EditCLCLI_F.ComponentIndex,EditCLCLI_F.Color);
indices:=2;
if (BotonNuevo.Tag=1)or(BotonCambios.Tag=1) then
TablaFacturaE.Edit;
//Uno.Caption:=comenta(3,'factu.des');
//Dos.Caption:=comenta(4,'factu.des');

end;

procedure TFormaCapturaRapida.EditBCLIM_FEnter(Sender: TObject);
begin
ponecolor(EditBCLIM_F.ComponentIndex,EditBCLIM_F.Color);
indices:=5;
//Uno.Caption:=comenta(9,'factu.des');
//Dos.Caption:=comenta(10,'factu.des');
EditBCLIM_F.Text:=CajaLocal;
if VendedorDefault<>'' then EditCLVEN_F.Text:=VendedorDefault;
end;

procedure TFormaCapturaRapida.EditCLVEN_FEnter(Sender: TObject);
begin
EditCLVEN_F.Text:=VendedorDefault;
ponecolor(EditCLVEN_F.ComponentIndex,EditCLVEN_F.Color);
indices:=3;
//Uno.Caption:=comenta(5,'factu.des');
//Dos.Caption:=comenta(6,'factu.des');
end;

procedure TFormaCapturaRapida.EditCTOVE_FEnter(Sender: TObject);
begin
ponecolor(EditCTOVE_F.ComponentIndex,EditCTOVE_F.Color);
indices:=4;
//Uno.Caption:=comenta(7,'factu.des');
//Dos.Caption:=comenta(8,'factu.des');
end;

procedure TFormaCapturaRapida.EditCLPED_FEnter(Sender: TObject);
begin
{ponecolor(EditCLPED_F.ComponentIndex,EditCLPED_F.Color);}
indices:=3;
//Uno.Caption:=comenta(11,'factu.des');
//Dos.Caption:=comenta(12,'factu.des');
end;

procedure TFormaCapturaRapida.EditDECOT_FEnter(Sender: TObject);
begin
{ponecolor(EditDECOT_F.ComponentIndex,EditDECOT_F.Color);}
indices:=16;
//Uno.Caption:=comenta(23,'factu.des');
//Dos.Caption:=comenta(24,'factu.des');
end;

procedure TFormaCapturaRapida.Concentrar1Click(Sender: TObject);
//var
//desde,hastavalor:string;
begin
with Sender as TMenuItem do
ReporteSIF(Caption,'CLDOC_F','FEDOC_F','FEDOC_F','',TablaFacturaE,
           '$'+Caption+char(13)+
           '& Select CLCLI_F,NOMBR_F,CLDOC_F,SUBTO_F-(SUBTO_F*(DECOT_F/100)),IMIM2_F,IMTOD_F,FEDOC_F from "'+ruta(8)+'\'+TablaFacturaE.TableName+'"'+char(13)+
           '?(STATU_F<>"C" OR STATU_F IS NULL) '+'¿'+char(13)+
           '!CLCLI_F,NOMBR_F,cldoc_f'+char(13)+
           '>CLCLI_F'+char(13)+
           '%c          c          e             t              t             t            c'+char(13)+
           '#CLIENTE    NOMBRE     DOCUMENTO     SUBTOTAL       IVA           TOTAL        FECHA     '+char(13)+
           '@'+char(13)
           ,0);

ponedatos;

end;


procedure TFormaCapturaRapida.Comisiones1Click(Sender: TObject);
//var
//desde,hastavalor:string;
begin
with Sender as TMenuItem do
ReporteSIF(Caption,'CLDOC_F','FEDOC_F','FEDOC_F',TablaFacturaE.FieldByName('CLDOC_F').AsString,TablaFacturaE,
           '$'+Caption+char(13)+
           '& Select CLDOC_F,CLVEN_F,SUBTO_F-(SUBTO_F*DECOT_F/100),(SUBTO_F-(SUBTO_F*DECOT_F/100))*(CTOVE_F*0.01),IMTOD_F,IMTOD_F*CTOVE_F*0.01,FEDOC_F from "'+ruta(8)+'\'+TablaFacturaE.TableName+'"'+char(13)+
           '?(STATU_F<>"C" OR STATU_F IS NULL) '+'¿'+char(13)+
           '!cldoc_f'+char(13)+
           '%e          c             t             t                 t              t                  c        '+char(13)+
           '#DOCUMENTO  VENDEDOR      SUBTOTAL      COMISION/SUB.     TOTAL_DOC      COMISION/TOT.      FECHA    '+char(13)+
           '@'+char(13)
           ,0);

ponedatos;
end;

procedure TFormaCapturaRapida.EditFEDOC_FExit(Sender: TObject);
begin
quitacolor(EditFEDOC_F.ComponentIndex);
if not fechavalida(EditFedoc_F.Text) then
EditFedoc_F.Text:=DateTimeToStr(Date);

end;

procedure TFormaCapturaRapida.EditCLDOC_FMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
//Uno.Caption:=comenta(1,'factu.des');
//Dos.Caption:=comenta(2,'factu.des');
end;

procedure TFormaCapturaRapida.EditCLCLI_FMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
//Uno.Caption:=comenta(3,'factu.des');
//Dos.Caption:=comenta(4,'factu.des');
end;

procedure TFormaCapturaRapida.EditCLVEN_FMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
//Uno.Caption:=comenta(5,'factu.des');
//Dos.Caption:=comenta(6,'factu.des');
end;

procedure TFormaCapturaRapida.EditCTOVE_FMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
//Uno.Caption:=comenta(7,'factu.des');
//Dos.Caption:=comenta(8,'factu.des');
end;

procedure TFormaCapturaRapida.EditBCLIM_FMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
//Uno.Caption:=comenta(9,'factu.des');
//Dos.Caption:=comenta(10,'factu.des');
end;

procedure TFormaCapturaRapida.EditCLPED_FMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
//Uno.Caption:=comenta(11,'factu.des');
//Dos.Caption:=comenta(12,'factu.des');
end;

procedure TFormaCapturaRapida.EditFEDOC_FMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
//Uno.Caption:=comenta(13,'factu.des');
//Dos.Caption:=comenta(14,'factu.des');
end;

procedure TFormaCapturaRapida.EditIMIM1_FMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
//Uno.Caption:=comenta(19,'factu.des');
//Dos.Caption:=comenta(20,'factu.des');
end;

procedure TFormaCapturaRapida.EditDESFI_FMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
//Uno.Caption:=comenta(21,'factu.des');
//Dos.Caption:=comenta(22,'factu.des');
end;

procedure TFormaCapturaRapida.EditDECOT_FMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
//Uno.Caption:=comenta(23,'factu.des');
//Dos.Caption:=comenta(24,'factu.des');
end;

procedure TFormaCapturaRapida.EditNALMA_FMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
//Uno.Caption:=comenta(25,'factu.des');
//Dos.Caption:=comenta(26,'factu.des');
end;

procedure TFormaCapturaRapida.EditREMIS_FKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (key=13) or (key=40) then
begin
indices:=indices+1;
cursor1;
{indice:=0;
mueveteclas;}

end;

if key=38 then
begin
indices:=indices-1;
cursor1;
end;
end;

procedure TFormaCapturaRapida.EditCONDI_FKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (key=13) or (key=40) then
begin
indices:=indices+1;
cursor1;
{indice:=0;
mueveteclas;}

end;

if key=38 then
begin
indices:=indices-1;
cursor1;
end;
end;

procedure TFormaCapturaRapida.EditDESTI_FKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (key=13) or (key=40) then
begin
indices:=indices+1;
cursor1;
{indice:=0;
mueveteclas;}

end;

if key=38 then
begin
indices:=indices-1;
cursor1;
end;
end;

procedure TFormaCapturaRapida.ConsecutivodeFacturas1Click(Sender: TObject);
//var
//dia:string[12];
//desde,hastavalor:string;
begin
//*******
with Sender as TMenuItem do
ReporteSIF(Caption,'CLDOC_F','FEDOC_F','FEDOC_F',TablaFacturaE.FieldByName('CLDOC_F').AsString,TablaFacturaE,
           '$'+Caption+char(13)+
           '& Select CLDOC_F,NOMBR_F,IMTOD_F,SUBTO_F-(SUBTO_F*DECOT_F/100),IMIM2_F,FEDOC_F from "'+ruta(8)+'\'+TablaFacturaE.TableName+'"'+char(13)+
           '?(STATU_F<>"C" OR STATU_F IS NULL) '+'¿'+char(13)+
           '!cldoc_f'+char(13)+
           '%e           c                  t            t              t             c         '+char(13)+
           '#DOCUMENTOS  NOMBRE             IMPORTE       SUBTOTAL      IMPUESTO      FECHA     '+char(13)+
           '@'+char(13)
           ,0);

ponedatos;
end;


procedure TFormaCapturaRapida.Eliminar1Click(Sender: TObject);
begin
if caso(StrToInt(usuario.Caption),22) then
begin
FormaAdvertencia:=TFormaAdvertencia.Create(Application);
FormaAdvertencia.ShowModal;
if FormaAdvertencia.Tag=1 then
begin
{***********}
if Base.Text='Factura' then
begin
if borratodaslascuentas then
begin
bufercambios('F');
BorraDatosMovimientos('F');
borradatosanteriores('F');
TablaFacturaE.Delete;
end
else
MuestraMensaje('El documento No Puede Eliminarse Posee Movimientos');
end
else
begin
if Base.Text='Remisión' then
begin

bufercambios('F');
BorraDatosMovimientos('R');
borradatosanteriores('R');
TablaFacturaE.Delete;
end;//if remision
end;
ponedatos;
end;
FormaAdvertencia.Tag:=0;
FormaAdvertencia.Free;
end;
end;

procedure TFormaCapturaRapida.ComisionesDetallado1Click(Sender: TObject);
var
ACTUAL,inicio,fin:string;
begin
//*******
actual:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
TablaFacturaE.First;
inicio:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
TablaFacturaE.Last;
fin:=TablaFacturaE.FieldByName('CLDOC_F').AsString;

with Sender as TMenuItem do
ReporteSIF(Caption,'CLDOC_F','FEDOC_F','FEDOC_F',TablaFacturaE.FieldByName('CLDOC_F').AsString,TablaFacturaE,
           '$'+Caption+char(13)+
           '& Select cldoc_f,NOMBR_F,CLCLI_F,imtod_f,SUBTO_F,IMIM2_F,FEDOC_F from "'+ruta(8)+'\'+TablaFacturaE.TableName+'"'+char(13)+
           '?(STATU_F<>"C" OR STATU_F IS NULL) '+'¿'+char(13)+
           '!CLCLI_F,cldoc_f'+char(13)+
           '%e          p,1,3           c        t           t           t           c'+char(13)+
           '#DOCUMENTOS  NOMBRE     CLAVE        IMPORTE       SUBTOTAL      IMPUESTO      FECHA     '+char(13)+
           '@'+char(13)
           ,0);

TablaFacturaE.Open;
TablaFacturaE.FindKey([actual]);
ponedatos;

end;

procedure TFormaCapturaRapida.Factura1Click(Sender: TObject);
var
Aux:string[1];
//CadenaFormato:string;
RegistroActual:Integer;
begin
FormaAdvertencia:=TFormaAdvertencia.Create(Application);
FormaAdvertencia.Label1.Caption:='Esta Seguro que Desea GENERAR LA FACTURA ?';
FormaAdvertencia.ShowModal;
FormaAdvertencia.Label1.Caption:='Esta Seguro que Desea ELIMINAR este Documento ?';
if FormaAdvertencia.Tag=1 then
begin

if TablaFacturaE.FieldByName('REMIS_F').AsString='' then
begin
if (TablaCliente.FindKey([EditCLCLI_F.Text])) then
begin

Nombre.Caption:=TablaCliente.FieldByName('NOMBR_C').AsString;
Direccion.Caption:=TablaCliente.FieldByName('DIREC_C').AsString;
Direc2.Caption:=TablaCliente.FieldByName('DIRE2_C').AsString;
Poblacion.Caption:=TablaCliente.FieldByName('POBLA_C').AsString;
RFC.Caption:=TablaCliente.FieldByName('RFCXX_C').AsString;
CodigoPostal.Caption:=TablaCliente.FieldByname('CPXXX_C').AsString;

RegistroActual:=TablaFacturaE.FieldByName('CLDOC_F').AsInteger;

Aux:=Base.Text;
Orig:=Aux+EditCLDOC_F.Text;
RangoDocumentos:=False;

Base.Tag:=1;
while not TablaFacturaD.EOF do
begin
TablaFacturaD.Edit;
TablaFacturaD.FieldByName('TREGI_FD').AsString:='F';
TablaFacturaD.Post;
TablaFacturaD.Next;
end;

bufercambios('C');
generadocumento('F');
TablaFacturaD.First;
activa;
//EditCLDOC_F.SetFocus;
EditCLCLI_F.SetFocus;
local:=True;
TablaFacturaE.Edit;


BotonGuardarClick(Sender);

Orig:='F'+TablaFacturaE.FieldByName('CLDOC_F').AsString;
//CadenaFormato:=nombreformato;
//nombreformato:=leeruta+'\consulta\'+ruta(14);
//FormaCapturaRapida.BotonImprimirClick(Sender);
//nombreformato:=CadenaFormato;

Base.Text:='Remisión';
BaseChange(Sender);
if TablaFacturaE.FindKey([RegistroActual]) then
begin
//***actualiza el documento que genero
TablaFacturaE.Edit;
TablaFacturaE.FieldByName('REMIS_F').AsString:=Orig;


TablaFacturaE.Post;
end;


ponedatos;
end
else
MuestraMensaje('La Clave del Cliente no EXISTE es necesario darla de alta para Facturar');

end
else
MuestraMensaje('El Documento ya se FACTURO...');
end;


end;

procedure TFormaCapturaRapida.Remisin1Click(Sender: TObject);
var
Aux:string[1];
begin
Aux:=Base.Text;
Orig:=Aux+EditCLDOC_F.Text;
bufercambios('C');
generadocumento('R');
activa;
//EditCLDOC_F.SetFocus;
EditCLCLI_F.SetFocus;
local:=True;
TablaFacturaE.Edit;
end;

procedure TFormaCapturaRapida.Pedido1Click(Sender: TObject);
var
Aux:string[1];
begin
Aux:=Base.Text;
Orig:=Aux+EditCLDOC_F.Text;
bufercambios('C');
generadocumento('P');
activa;
//EditCLDOC_F.SetFocus;
EditCLCLI_F.SetFocus;
local:=True;
TablaFacturaE.Edit;
end;

procedure TFormaCapturaRapida.VentasyUtilidad1Click(Sender: TObject);
//var
//desde,hastavalor:string;
begin

with Sender as TMenuItem do
ReporteSIF(Caption,'CLDOC_F','FEDOC_F','FEDOC_F',TablaFacturaE.FieldByName('CLDOC_F').AsString,TablaFacturaE,
           '$'+Caption+char(13)+
           '& Select CLDOC_F,NOMBR_F,COSTO_F,SUBTO_F-(SUBTO_F*DECOT_F/100),((SUBTO_F-(SUBTO_F*DECOT_F/100)))-COSTO_F,((SUBTO_F-COSTO_F)/SUBTO_F)*100,FEDOC_F from "'+ruta(8)+'\'+TablaFacturaE.TableName+'"'+char(13)+
           '?(STATU_F<>"C" OR STATU_F IS NULL) '+'¿'+char(13)+
           '!cldoc_f'+char(13)+
           '%e           c             t            t             t            m            c         '+char(13)+
           '#DOCUMENTOS  NOMBRE        COSTO        SUBTOTAL      UTILIDAD     PROM.UTILID. FECHA     '+char(13)+
           '@'+char(13)
           ,0);

ponedatos;
end;

procedure TFormaCapturaRapida.BotonPreliminarClick(Sender: TObject);
begin
if FileExists(nombreformato) then
begin
FormaEdicion:=TFormaEdicion.Create(Application);
UsuarioActual(Usuario.Caption);
LeeEtiquetasMoneda(valordivisaetiqueta('M.N.',1),valordivisaetiqueta('M.N.',2),valordivisaetiqueta('M.N.',3),valordivisaetiqueta('M.N.',4));
forma(FormaCapturaRapida.TablaFacturaE,FormaCapturaRapida.TablaDeta,nombreformato,'p');
end
else
MuestraMensaje('El Formato '+nombreformato+' No Existe');
FormaEdicion.Hoja.Tag:=0;
FormaEdicion.ShowModal;
FormaEdicion.Free;
end;


procedure TFormaCapturaRapida.Calculadora1Click(Sender: TObject);
begin
{if FileExists('calc.exe') then}
WinExec('calc.exe',SW_SHOWNORMAL);

end;

procedure TFormaCapturaRapida.Divisas1Click(Sender: TObject);
begin
FormaDivisa:=TFormaDivisa.Create(Application);
FormaDivisa.ShowModal;
FormaDivisa.Free;
end;

procedure TFormaCapturaRapida.ImprimirRangodeDocumentos1Click(Sender: TObject);
var
i:integer;
begin
DialogoImprimir:=TDialogoImprimir.Create(Application);
DialogoImprimir.Tag:=0;
DialogoImprimir.PrimeraPagina.Text:='0';
DialogoImprimir.UltimaPagina.Text:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
DialogoImprimir.ShowModal;

if DialogoImprimir.Tag=1 then
begin
TablaFacturaE.First;
for i:=StrToInt(DialogoImprimir.PrimeraPagina.Text) to StrToInt(DialogoImprimir.UltimaPagina.Text) do
begin
if TablaFacturaE.FindKey([IntToStr(i)]) then
begin
ponedatos;
if FileExists(nombreformato) then
begin
UsuarioActual(Usuario.Caption);
forma(FormaCapturaRapida.TablaFacturaE,FormaCapturaRapida.TablaDeta,nombreformato,'i')
end
else
MuestraMensaje('El Formato '+nombreformato+' No Existe');
end;
end;
ponedatos;
end;
DialogoImprimir.Free;

end;


procedure TFormaCapturaRapida.Cancelar1Click(Sender: TObject);
var
Tipo:Char;
clave:String;
begin
if Usuario.Caption<>'0' then
begin
FormaAdministrador:=TFormaAdministrador.Create(Application);
FormaAdministrador.ShowModal;
if FormaAdministrador.Tag=1 then
clave:='admon'
else
clave:='xxxx';
FormaAdministrador.Free;
end;


if (usuario.Caption='0')or(clave='admon') then
begin
FormaAdvertencia:=TFormaAdvertencia.Create(Application);
FormaAdvertencia.Label1.Caption:='Esta Seguro que Desea CANCELAR este Documento ?';
FormaAdvertencia.ShowModal;
FormaAdvertencia.Label1.Caption:='Esta Seguro que Desea ELIMINAR este Documento ?';
if FormaAdvertencia.Tag=1 then
begin
Tipo:=Base.Text[1];
if TablaFacturaE.FieldByName('STATU_F').AsString<>'C' then
begin

case Tipo of

'R':begin

   bufercambios('F');
   saldoanterior:=TablaFacturaE.FieldByName('IMTOD_F').AsFloat;

//   BorraDatosMovimientos('F');
   borradatosanteriores('X');
   if IntegrarMI='S' then
   begin
   try
   TablaMovimientosInventario.Last;
   numeromovimiento:=TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger+1;
   except
   end;
   end;//if mov inv

if TablaCliente.FindKey([EditCLCLI_F.Text]) then
begin
TablaCliente.Edit;
TablaCliente.FieldByName('SALDO_C').AsFloat:=TablaCliente.FieldByName('SALDO_C').AsFloat-saldoanterior;
TablaCliente.FieldByName('COMPR_C').Asfloat:=TablaCliente.FieldByName('COMPR_C').AsFloat-saldoanterior;
TablaCliente.Post;
end;

{*********};
try
CreaMovimiento_Cancelar(54);
TipoMovimiento:=3;

except
end;



{guardatodo('X');}

local:=False;
TablaFacturaE.Edit;
TablaFacturaE.FieldByName('STATU_F').AsString:='C';
TablaFacturaE.Post;
CancelaDetalle(EditCLDOC_F.Text);
//Cancelar1.Enabled:=False;
Estado.Caption:='Cancelada';

end;


'D':begin
   bufercambios('F');
   saldoanterior:=TablaFacturaE.FieldByName('IMTOD_F').AsFloat;

//   BorraDatosMovimientos('F');
//   borradatosanteriores('X');
   if IntegrarMI='S' then
   begin
   try
   TablaMovimientosInventario.Last;
   numeromovimiento:=TablaMovimientosInventario.FieldByName('CLDOC_MI').AsInteger+1;
   except
   end;
   end;//if mov inv

if TablaCliente.FindKey([EditCLCLI_F.Text]) then
begin
TablaCliente.Edit;
TablaCliente.FieldByName('SALDO_C').AsFloat:=TablaCliente.FieldByName('SALDO_C').AsFloat-saldoanterior;
TablaCliente.FieldByName('COMPR_C').Asfloat:=TablaCliente.FieldByName('COMPR_C').AsFloat-saldoanterior;
TablaCliente.Post;
end;

{*********};
try
CreaMovimiento_Cancelar(3);
except
end;



{guardatodo('X');}

local:=False;
TablaFacturaE.Edit;
TablaFacturaE.FieldByName('STATU_F').AsString:='C';
TablaFacturaE.Post;
CancelaDetalle(EditCLDOC_F.Text);
//Cancelar1.Enabled:=False;
Estado.Caption:='Cancelada';

end;


end;//case


end
else
MuestraMensaje('La Factura Ya Fue Cancelada');
indice:=0;
sig:=1;
indices:=1;

end;
FormaAdvertencia.Tag:=0;
FormaAdvertencia.Free;
end
else
MuestraMensaje('No se tiene acceso a esta opción');;

end;

procedure TFormaCapturaRapida.BotonTotalesClick(Sender: TObject);
var
cantiletra:string;
begin
sumatotal;
FormaDesglosaTotal:=TFormaDesglosaTotal.Create(Application);
FormaDesglosaTotal.SubTotal.Caption:=SumarTotal.Caption;
FormaDesglosaTotal.Descuento.Caption:=convierte('##,##0.00',redondear(desfin1),'');
FormaDesglosaTotal.Iva.Caption:=ImpuestoValor.Caption;
FormaDesglosaTotal.Total.Caption:=TotalFact.Caption;
{*****************}
cantiletra:=Traduce(Total1);
FormaDesglosaTotal.Letra2.Caption:='';
FormaDesglosaTotal.Letra1.Caption:=cantiletra;
{*****************}
FormaDesglosaTotal.ShowModal;
FormaDesglosaTotal.Free;
end;

procedure TFormaCapturaRapida.EditDECOT_FKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (key=13) or (key=40) then
begin
indices:=indices+1;
cursor1;
end;
if key=38 then
begin
indices:=indices-1;
cursor1;
end;

end;

















procedure TFormaCapturaRapida.Elegirformato1Click(Sender: TObject);
begin
FormaFormatos:=TFormaFormatos.Create(Application);
FormaBarras:=TFormaBarras.Create(Application);

FormaFormatos.Tag:=3;
FormaFormatos.Rangos.Visible:=False;
FormaFormatos.Formatos.Visible:=True;
FormaFormatos.ShowModal;
if FormaFormatos.Tag=1 then
begin
if FileExists(Formaformatos.Rutas.Text) then
begin
nombreformato:=Formaformatos.Rutas.Text;
{forma(TablaFacturaE,TablaFacturaE,Formaformatos.Rutas.Text,'i')}

end
else
MuestraMensaje('El Formato '+Formaformatos.Rutas.Text+' No Existe');
end;
FormaFormatos.Tag:=1;
FormaFormatos.Free;
FormaBarras.Free;

end;

procedure TFormaCapturaRapida.DisearFormato1Click(Sender: TObject);
begin
FormaFormatos:=TFormaFormatos.Create(Application);
//FormaBarras:=TFormaBarras.Create(Application);

FormaFormatos.Rangos.Visible:=False;
FormaFormatos.Formatos.Visible:=True;
FormaFormatos.BotonEdicionClick(Sender);

//FormaFormatos.ShowModal;

FormaFormatos.Free;
//FormaBarras.Free;

end;

procedure TFormaCapturaRapida.TablaFacturaeEditError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
if local then Action:=daRetry
else
DatabaseError('No se Pueden Editar los Datos ha Ocurrido un Error');
end;

procedure TFormaCapturaRapida.TablaFacturaePostError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
Action:=daRetry	;
{DatabaseError('No se Pueden Guardar los Datos ha Ocurrido un Error');}
end;

procedure TFormaCapturaRapida.EditCLDOC_FExit(Sender: TObject);
begin
quitacolor(EditCLDOC_F.ComponentIndex);
end;

procedure TFormaCapturaRapida.EditCTOVE_FExit(Sender: TObject);
begin
quitacolor(EditCTOVE_F.ComponentIndex);

end;

procedure TFormaCapturaRapida.EditBCLIM_FExit(Sender: TObject);
begin
quitacolor(EditBCLIM_F.ComponentIndex);
end;

procedure TFormaCapturaRapida.EditIMIM1_FExit(Sender: TObject);
begin
quitacolor(EditIMIM1_F.ComponentIndex);
end;

procedure TFormaCapturaRapida.EditDESFI_FExit(Sender: TObject);
begin
quitacolor(EditDESFI_F.ComponentIndex);
end;

procedure TFormaCapturaRapida.TablaFacturaeDeleteError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
Action:=daRetry	;
end;

procedure TFormaCapturaRapida.TablaFacturaeUpdateError(DataSet: TDataSet;
  E: EDatabaseError; UpdateKind: TUpdateKind;
  var UpdateAction: TUpdateAction);
begin
UpdateAction:=uaRetry;
end;

procedure TFormaCapturaRapida.TablaFacturaDDeleteError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
Action:=daRetry	;
end;

procedure TFormaCapturaRapida.TablaFacturaDEditError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
Action:=daRetry	;
end;

procedure TFormaCapturaRapida.TablaFacturaDPostError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
Action:=daRetry	;
end;

procedure TFormaCapturaRapida.TablaFacturaDUpdateError(DataSet: TDataSet;
  E: EDatabaseError; UpdateKind: TUpdateKind;
  var UpdateAction: TUpdateAction);
begin
UpdateAction:=uaRetry	;
end;

procedure TFormaCapturaRapida.TablaClienteEditError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
Action:=daRetry	;
end;

procedure TFormaCapturaRapida.TablaClienteDeleteError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
Action:=daRetry	;
end;

procedure TFormaCapturaRapida.TablaClientePostError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
Action:=daRetry	;
end;

procedure TFormaCapturaRapida.TablaClienteUpdateError(DataSet: TDataSet;
  E: EDatabaseError; UpdateKind: TUpdateKind;
  var UpdateAction: TUpdateAction);
begin
UpdateAction:=uaRetry	;
end;

procedure TFormaCapturaRapida.TablaInventarioDeleteError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
Action:=daRetry	;
end;

procedure TFormaCapturaRapida.TablaInventarioEditError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
Action:=daRetry	;
end;

procedure TFormaCapturaRapida.TablaInventarioPostError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
Action:=daRetry	;
end;

procedure TFormaCapturaRapida.TablaInventarioUpdateError(DataSet: TDataSet;
  E: EDatabaseError; UpdateKind: TUpdateKind;
  var UpdateAction: TUpdateAction);
begin
UpdateAction:=uaRetry	;
end;

procedure TFormaCapturaRapida.TablaVendedoresDeleteError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
Action:=daRetry	;
end;

procedure TFormaCapturaRapida.TablaVendedoresEditError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
Action:=daRetry	;
end;

procedure TFormaCapturaRapida.TablaVendedoresPostError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin
Action:=daRetry	;
end;

procedure TFormaCapturaRapida.TablaVendedoresUpdateError(DataSet: TDataSet;
  E: EDatabaseError; UpdateKind: TUpdateKind;
  var UpdateAction: TUpdateAction);
begin
UpdateAction:=uaRetry	;
end;

procedure TFormaCapturaRapida.TablamovimientosInventarioDeleteError(
  DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);
begin
Action:=daRetry	;
end;

procedure TFormaCapturaRapida.TablamovimientosInventarioEditError(
  DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);
begin
Action:=daRetry	;
end;

procedure TFormaCapturaRapida.TablamovimientosInventarioPostError(
  DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);
begin
Action:=daRetry	;
end;

procedure TFormaCapturaRapida.TablamovimientosInventarioUpdateError(
  DataSet: TDataSet; E: EDatabaseError; UpdateKind: TUpdateKind;
  var UpdateAction: TUpdateAction);
begin
UpdateAction:=uaRetry	;
end;


procedure TFormaCapturaRapida.BotonObservacionClick(Sender: TObject);
begin
try
buscaobservacion(EditCLDOC_F.Text,BotonNuevo.Tag);
except
end;
end;

procedure TFormaCapturaRapida.BotonCambiosMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaCapturaRapida.Left+BotonCambios.Left,FormaCapturaRapida.Top+BotonCambios.Top+BotonCambios.Height,15);
end;

procedure TFormaCapturaRapida.BotonNuevoMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaCapturaRapida.Left+BotonNuevo.Left,FormaCapturaRapida.Top+BotonNuevo.Top+BotonNuevo.Height,16);
end;

procedure TFormaCapturaRapida.BotonGuardarMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaCapturaRapida.Left+BotonGuardar.Left,FormaCapturaRapida.Top+BotonGuardar.Top+BotonGuardar.Height,17);
end;

procedure TFormaCapturaRapida.BotonTotalesMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaCapturaRapida.Left+BotonTotales.Left,FormaCapturaRapida.Top+BotonTotales.Top+BotonTotales.Height,18);
end;

procedure TFormaCapturaRapida.BotonPreliminarMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaCapturaRapida.Left+BotonPreliminar.Left,FormaCapturaRapida.Top+BotonPreliminar.Top+BotonPreliminar.Height,19);
end;

procedure TFormaCapturaRapida.BotonObservacionMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaCapturaRapida.Left+BotonObservacion.Left,FormaCapturaRapida.Top+BotonObservacion.Top+BotonObservacion.Height,20);
end;

procedure TFormaCapturaRapida.BotonBuscarMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaCapturaRapida.Left+BotonBuscar.Left,FormaCapturaRapida.Top+BotonBuscar.Top+BotonBuscar.Height,21);
end;

procedure TFormaCapturaRapida.BotonImprimirMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaCapturaRapida.Left+BotonImprimir.Left,FormaCapturaRapida.Top+BotonImprimir.Top+BotonImprimir.Height,22);
end;

procedure TFormaCapturaRapida.BotonPagoMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
describir(Button,FormaCapturaRapida.Left+BotonPago.Left,FormaCapturaRapida.Top+BotonPago.Top+BotonPago.Height,23);
end;

procedure TFormaCapturaRapida.Devolucin1Click(Sender: TObject);
var
Aux:string[1];
begin
RangoDocumentos:=False;
Aux:=Base.Text;
Orig:=Aux+EditCLDOC_F.Text;

bufercambios('C');
generadocumento('D');
activa;
//EditCLDOC_F.SetFocus;
EditCLCLI_F.SetFocus;
local:=True;
TablaFacturaE.Edit;

end;

procedure TFormaCapturaRapida.VentasporDa1Click(Sender: TObject);
var
desde,hastavalor:string;
begin
FormaFormatos:=TFormaFormatos.Create(Application);
FormaBarras:=TFormaBarras.Create(Application);

FormaFormatos.Rangos.Visible:=True;
FormaFormatos.Formatos.Visible:=False;
activacondiciones(true,true,False,true,False,true,true,true,true,'facturae.dbf');
TablaFacturaE.First;
desde:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
TablaFacturaE.Last;
hastavalor:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
valoresiniciales('','',desde,hastavalor);

FormaFormatos.ShowModal;
if FormaFormatos.Tag=1 then
begin
condiciones(FormaFormatos.C1.Caption,tipooperador(FormaFormatos.Operador1.Text),FormaFormatos.Valor1.Text,FormaFormatos.T1.Caption,FormaFormatos.C2.Caption,tipooperador(FormaFormatos.Operador2.Text),FormaFormatos.Valor2.Text,FormaFormatos.T2.Caption,FormaFormatos.C3.Caption,tipooperador(FormaFormatos.Operador3.Text),FormaFormatos.Valor3.Text,FormaFormatos.T3.Caption,'Y');
if FormaFormatos.IncluirDevoluciones.Checked then
begin
GeneraCorteDeCaja(FormaFormatos.Inicial.Date,FormaFormatos.Final.Date,TablaFacturaE.TableName,'devoluc.dbf','FactAuxi.dbf','INUMENC');
Concentrar(TablaAuxiliar,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date),'FEDOC_F','','IMTOD_F','CTOVE_F','&%IMTOD_F&*&%CTOVE_F&*&0.01&','','','','','','STATU_F','!','C','C');
end
else
Concentrar(TablaFacturaE,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date),'FEDOC_F','','IMTOD_F','CTOVE_F','&%IMTOD_F&*&%CTOVE_F&*&0.01&','','','','','','STATU_F','!','C','C');
poneetiquetas('Fecha','','Importe','- % Comis. Vend.','Comisión','','','','','','');
Poneanchos(20,20,20,20,20,20,20,20,20,20,0);
//FormaBarras.Caption:='Reporte de Ventas por Día';
//******pone el titulo
 with Sender as TMenuItem do
  begin
  desde:=Caption;
  end;
FormaBarras.Caption:=AgregaTitulo2('Reporte de '+desde,FormaFormatos.Titulo.Text);
//******termina pone el titulo

parametrosgrafica('Gráfica de Ventas por Día','Día','Total por Día',1);
FormaBarras.Tag:=0;
FormaBarras.Panel2.Tag:=0;
FormaBarras.botonGrafica.Tag:=2;
FormaBarras.ShowModal;
FormaBarras.Tag:=0;
end;
FormaFormatos.Tag:=0;
FormaFormatos.Free;
FormaBarras.Free;

end;

procedure TFormaCapturaRapida.VentasporMes1Click(Sender: TObject);
var
desde,hastavalor:string;
begin
FormaFormatos:=TFormaFormatos.Create(Application);
FormaBarras:=TFormaBarras.Create(Application);

FormaFormatos.Rangos.Visible:=True;
FormaFormatos.Formatos.Visible:=False;
activacondiciones(true,true,False,true,False,true,true,true,true,'facturae.dbf');
TablaFacturaE.First;
desde:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
TablaFacturaE.Last;
hastavalor:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
valoresiniciales('','',desde,hastavalor);

FormaFormatos.ShowModal;
if FormaFormatos.Tag=1 then
begin
condiciones(FormaFormatos.C1.Caption,tipooperador(FormaFormatos.Operador1.Text),FormaFormatos.Valor1.Text,FormaFormatos.T1.Caption,FormaFormatos.C2.Caption,tipooperador(FormaFormatos.Operador2.Text),FormaFormatos.Valor2.Text,FormaFormatos.T2.Caption,FormaFormatos.C3.Caption,tipooperador(FormaFormatos.Operador3.Text),FormaFormatos.Valor3.Text,FormaFormatos.T3.Caption,'Y');
if FormaFormatos.IncluirDevoluciones.Checked then
begin
GeneraCorteDeCaja(FormaFormatos.Inicial.Date,FormaFormatos.Final.Date,TablaFacturaE.TableName,'devoluc.dbf','FactAuxi.dbf','INUMENC');
Concentrar(TablaAuxiliar,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date),'FEDOC_F','','IMTOD_F','CTOVE_F','&%IMTOD_F&*&%CTOVE_F&*&0.01&','','','','','','STATU_F','!','C','C');
end
else
Concentrar(TablaFacturaE,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date),'FEDOC_F','','IMTOD_F','CTOVE_F','&%IMTOD_F&*&%CTOVE_F&*&0.01&','','','','','','STATU_F','!','C','C');
poneetiquetas('Fecha','','Importe','- % Comis. Vend.','Comisión','','','','','','');
Poneanchos(20,20,20,20,20,20,20,20,20,20,0);
pormes;
//FormaBarras.Caption:='Reporte de Ventas por Mes';
//******pone el titulo
 with Sender as TMenuItem do
  begin
  desde:=Caption;
  end;
FormaBarras.Caption:=AgregaTitulo2('Reporte de '+desde,FormaFormatos.Titulo.Text);
//******termina pone el titulo

parametrosgrafica('Gráfica de Ventas por Mes','Mes','Total por Mes',1);
FormaBarras.Tag:=0;
FormaBarras.Panel2.Tag:=0;
FormaBarras.botonGrafica.Tag:=2;
FormaBarras.ShowModal;
FormaBarras.Tag:=0;
end;
FormaFormatos.Tag:=0;
FormaFormatos.Free;
FormaBarras.Free;

end;

procedure TFormaCapturaRapida.Ventasporao1Click(Sender: TObject);
var
desde,hastavalor:string;
begin
FormaFormatos:=TFormaFormatos.Create(Application);
FormaBarras:=TFormaBarras.Create(Application);

FormaFormatos.Rangos.Visible:=True;
FormaFormatos.Formatos.Visible:=False;
activacondiciones(true,true,False,true,False,true,true,true,true,'facturae.dbf');
TablaFacturaE.First;
desde:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
TablaFacturaE.Last;
hastavalor:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
valoresiniciales('','',desde,hastavalor);

FormaFormatos.ShowModal;
if FormaFormatos.Tag=1 then
begin
condiciones(FormaFormatos.C1.Caption,tipooperador(FormaFormatos.Operador1.Text),FormaFormatos.Valor1.Text,FormaFormatos.T1.Caption,FormaFormatos.C2.Caption,tipooperador(FormaFormatos.Operador2.Text),FormaFormatos.Valor2.Text,FormaFormatos.T2.Caption,FormaFormatos.C3.Caption,tipooperador(FormaFormatos.Operador3.Text),FormaFormatos.Valor3.Text,FormaFormatos.T3.Caption,'Y');
if FormaFormatos.IncluirDevoluciones.Checked then
begin
GeneraCorteDeCaja(FormaFormatos.Inicial.Date,FormaFormatos.Final.Date,TablaFacturaE.TableName,'devoluc.dbf','FactAuxi.dbf','INUMENC');
Concentrar(TablaAuxiliar,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date),'FEDOC_F','','IMTOD_F','CTOVE_F','&%IMTOD_F&*&%CTOVE_F&*&0.01&','','','','','','STATU_F','!','C','C');
end
else
Concentrar(TablaFacturaE,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date),'FEDOC_F','','IMTOD_F','CTOVE_F','&%IMTOD_F&*&%CTOVE_F&*&0.01&','','','','','','STATU_F','!','C','C');
poneetiquetas('Fecha','','Importe','- % Comis. Vend.','Comisión','','','','','','');
Poneanchos(20,20,20,20,20,20,20,20,20,20,0);
//FormaBarras.Caption:='Reporte de Ventas por Año';
//******pone el titulo
 with Sender as TMenuItem do
  begin
  desde:=Caption;
  end;
FormaBarras.Caption:=AgregaTitulo2('Reporte de '+desde,FormaFormatos.Titulo.Text);
//******termina pone el titulo

parametrosgrafica('Gráfica de Ventas por Año','Año','Total por Año',1);
FormaBarras.Tag:=0;
FormaBarras.Panel2.Tag:=0;
FormaBarras.botonGrafica.Tag:=2;
porano;
FormaBarras.ShowModal;
FormaBarras.Tag:=0;
end;
FormaFormatos.Tag:=0;

FormaFormatos.Free;
FormaBarras.Free;

end;

procedure TFormaCapturaRapida.VentasporArtculo1Click(Sender: TObject);
var
actual,inicio,fin:string;
begin
//*******
actual:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
TablaFacturaE.First;
inicio:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
TablaFacturaE.Last;
fin:=TablaFacturaE.FieldByName('CLDOC_F').AsString;


with Sender as TMenuItem do
ReporteSIF(Caption,'CLDOC_F','FEDOC_F','FEDOC_F',TablaFacturaE.FieldByName('CLDOC_F').AsString,TablaFacturaE,
           '$'+Caption+char(13)+
           '& Select cldoc_f,NOMBR_F,CLCLI_F,imtod_f,SUBTO_F,IMIM2_F,FEDOC_F from "'+ruta(8)+'\'+TablaFacturaE.TableName+'"'+char(13)+
           '?(STATU_F<>"C" OR STATU_F IS NULL) '+'¿'+char(13)+
           '!CLCLI_F,cldoc_f'+char(13)+
           '%e          p,1,3           c        t           t           t           c'+char(13)+
           '#DOCUMENTOS  NOMBRE     CLAVE        IMPORTE       SUBTOTAL      IMPUESTO      FECHA     '+char(13)+
           '@'+char(13)
           ,0);

TablaFacturaE.Open;
TablaFacturaE.FindKey([actual]);
ponedatos;

end;

procedure TFormaCapturaRapida.ImprimePlantilla1Click(Sender: TObject);
begin
FormaCapturaRapida.Print;
end;

procedure TFormaCapturaRapida.DocumentosCancelados1Click(Sender: TObject);
var
inicio,fin:string;
begin
//*******
TablaFacturaE.First;
inicio:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
TablaFacturaE.Last;
fin:=TablaFacturaE.FieldByName('CLDOC_F').AsString;

with Sender as TMenuItem do
ReporteSIF(Caption,'CLDOC_F','FEDOC_F','FEDOC_F',TablaFacturaE.FieldByName('CLDOC_F').AsString,TablaFacturaE,
           '$'+Caption+char(13)+
           '& Select CLDOC_F,CLCLI_F,NOMBR_F,SUBTO_F-(SUBTO_F*(DECOT_F/100)),IMIM2_F,IMTOD_F,FEDOC_F from "'+ruta(8)+'\'+TablaFacturaE.TableName+'"'+char(13)+
           '?(STATU_F="C" ) '+'¿'+char(13)+
           '!cldoc_f'+char(13)+
           '%e          c          c               t              t             t            c'+char(13)+
           '#DOCUMENTO  CLIENTE    NOMBRE          SUBTOTAL       IVA           TOTAL        FECHA     '+char(13)+
           '@'+char(13)
           ,0);


end;

procedure TFormaCapturaRapida.EditDIVIS_FKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (key=13) or (key=40) then
begin
indices:=indices+1;
cursor1;
{indice:=0;
mueveteclas;}

end;

if key=38 then
begin
indices:=indices-1;
cursor1;
end;

end;

procedure TFormaCapturaRapida.EditDIVIS_FEnter(Sender: TObject);
begin
leedivisa;
indices:=5;

end;

procedure TFormaCapturaRapida.EditDIVIS_FExit(Sender: TObject);
begin
{if Editdivis_F.Text='M.N.' then
EditVALDI_F.Text:='1.00';}
end;

procedure TFormaCapturaRapida.Temas1Click(Sender: TObject);
begin
FormaAyudaLinea:=TFormaAyudaLinea.Create(Application);
PoneAyuda(leeruta+'\ayuda\factura.rtf',0);
FormaAyudaLinea.Free;
end;

procedure TFormaCapturaRapida.CancelaMovimiento1Click(Sender: TObject);
begin
if caso(StrToInt(usuario.Caption),22) then
begin
if (BotonNuevo.Tag=1) then
begin
//TablaFacturaE.Delete;
borra;
//ponedatos;
//desactiva;
EditCantidad.SetFocus;

end;

if BotonCambios.Tag=1 then
begin
regresabufercambios;
TablaFacturaE.Cancel;
desactiva;
end;

activabotones(True,True,False,True,True,True,False);
BotonNuevo.Tag:=0;
BotonCambios.Tag:=0;

RangoDocumentos:=False;
end;

end;

procedure TFormaCapturaRapida.DesgloceporMoneda1Click(Sender: TObject);
var
dia:string[12];
desde,hastavalor:string;
begin
FormaFormatos:=TFormaFormatos.Create(Application);
FormaBarras:=TFormaBarras.Create(Application);

FormaFormatos.Rangos.Visible:=True;
FormaFormatos.Formatos.Visible:=False;
activacondiciones(true,true,False,true,False,true,true,true,true,'facturae.dbf');
TablaFacturaE.First;
desde:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
TablaFacturaE.Last;
hastavalor:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
valoresiniciales('','',desde,hastavalor);

FormaFormatos.ShowModal;
if FormaFormatos.Tag=1 then
begin
condiciones(FormaFormatos.C1.Caption,tipooperador(FormaFormatos.Operador1.Text),FormaFormatos.Valor1.Text,FormaFormatos.T1.Caption,FormaFormatos.C2.Caption,tipooperador(FormaFormatos.Operador2.Text),FormaFormatos.Valor2.Text,FormaFormatos.T2.Caption,FormaFormatos.C3.Caption,tipooperador(FormaFormatos.Operador3.Text),FormaFormatos.Valor3.Text,FormaFormatos.T3.Caption,'Y');
if FormaFormatos.IncluirDevoluciones.Checked then
begin
GeneraCorteDeCaja(FormaFormatos.Inicial.Date,FormaFormatos.Final.Date,TablaFacturaE.TableName,'devoluc.dbf','FactAuxi.dbf','INUMENC');
//Concentrar(TablaAuxiliar,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date),'CLCLI_F','NOMBR_F','IMTOD_F','SUBTO_F','IMIM1_F','IMIM2_F','','','','','STATU_F','!','C','D');
Concentrar(TablaAuxiliar,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date),'CLDOC_F','NOMDI_F','DIVIS_F','SUBTO_F','IMTOD_F','&%SUBTO_F&*&%DIVIS_F&*&1.00&','&%IMTOD_F&*&%DIVIS_F&*&1.00&','','','','STATU_F','!','C','D');
end
else
Concentrar(TablaFacturaE,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date),'CLDOC_F','NOMDI_F','DIVIS_F','SUBTO_F','IMTOD_F','&%SUBTO_F&*&%DIVIS_F&*&1.00&','&%IMTOD_F&*&%DIVIS_F&*&1.00&','','','','STATU_F','!','C','D');
dia:=DateToStr(FormaFormatos.Inicial.Date);

poneetiquetas('Documento','Nombre','Valor Div.','SubTotal Divisa','Total Divisa','Subtotal M.N.','Total M.N.','','','','');
Poneanchos(20,20,20,20,20,20,20,20,20,20,0);
parametrosgrafica('Gráfica Desgloce por Moneda','Número de Documento','Total por Moneda',3);
FormaBarras.Tag:=0;
FormaBarras.Panel2.Tag:=0;
FormaBarras.botonGrafica.Tag:=2;

FormaBarras.Concentrado.Clear;
//FormaBarras.Caption:='Reporte Desgloce por monedas';
//******pone el titulo
 with Sender as TMenuItem do
  begin
  desde:=Caption;
  end;
FormaBarras.Caption:=AgregaTitulo2('Reporte de '+desde,FormaFormatos.Titulo.Text);
//******termina pone el titulo

FormaBarras.ShowModal;
FormaBarras.Tag:=0;
end;
FormaFormatos.Tag:=0;
FormaFormatos.Free;
FormaBarras.Free;

end;

procedure TFormaCapturaRapida.EditDESFI_FKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (key=13) then
Detalle.SetFocus;
end;

procedure TFormaCapturaRapida.DetalleKeyPress(Sender: TObject; var Key: Char);
begin
key:=CambiaLetras(key);
end;

procedure TFormaCapturaRapida.DetalleEnter(Sender: TObject);
begin
//Facturable:=False;
try
Detalle.SelectedIndex:=0;
try
LabelFactor.Caption:=TablaDeta.FieldByName('Factor').AsString;
except
end;


if TablaDeta.State=dsBrowse then
begin


if TablaDeta.FieldByName('Cantidad').AsFloat<=0 then
begin
if  TablaDeta.RecordCount=0 then
begin

TablaDeta.Append;
TablaDeta.FieldByName('Cantidad').AsFloat:=1;
Detalle.SelectedIndex:=1;
if IniciaenClave then
EditClave.SetFocus
else
EditCantidad.SetFocus;

end;



end;

end;//is state
except

end;

end;



procedure TFormaCapturaRapida.Edit1Exit(Sender: TObject);
var
camb:real;
begin
//camb:=0;
if CAMBIO_F.Text<>'' then
begin
camb:=StrTofloat(CAMBIO_F.Text)-total1;

SuCambio.Caption:='Cambio '+Convierte('##,##0.00',FloatToStr(camb),'');

end;
end;


procedure TFormaCapturaRapida.CAMBIO_FExit(Sender: TObject);
var
camb:real;
begin
//camb:=0;
if CAMBIO_F.Text<>'' then
begin
camb:=StrToFloat(CAMBIO_F.Text)-total1;

SuCambio.Caption:='Cambio '+Convierte('##,##0.00',FloatToStr(camb),'');

end;
end;


procedure TFormaCapturaRapida.CAMBIO_FKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
//var
//camb:real;
begin
if key=117 then
begin
FormaAdvertencia:=TFormaAdvertencia.Create(Application);
FormaAdvertencia.Label1.Caption:='Esta Seguro que Desea ELIMINAR esta Partida '+TablaDeta.FieldByName('Cantidad').AsString+
'  '+TablaDeta.FieldByName('Producto').AsString;
FormaAdvertencia.ShowModal;
if FormaAdvertencia.Tag=1 then
begin
TablaDeta.Delete;
end;
{
camb:=0;
if CAMBIO_F.Text<>'' then
begin
camb:=StrTofloat(CAMBIO_F.Text)-total1;

SuCambio.Caption:='Cambio '+Convierte('##,##0.00',FloatToStr(camb),'');

end;}

end;//if f6

if key=13 then
begin
if CAMBIO_F.Text='' then
CAMBIO_F.Text:='0';
AplicaOperacion(CAMBIO_F);
CAMBIO_FExit(Sender);
end;


end;

procedure TFormaCapturaRapida.VerFunciones1Click(Sender: TObject);
begin
ShowMessage('F1    Busca Producto por Descipción'+Char(13)+
               'F2    Busca Producto por Clave'+Char(13)+
               'F4    Salta a Cantidad'+Char(13)+
               'F5    Introducir Efectivo'+Char(13)+
               'F6    Calcular Cambio'+Char(13)+
               'F7    Inicia Captura por Importe'+Char(13)+
               'F8    Tipo de Pago'+Char(13)+
               'F9    Venta Nueva'+Char(13)+
               'F10   Guardar Venta'+Char(13)+
               'Ctrl+B     Buscar'+Char(13)+
               'Ctrl+I ó F11    Imprimir'+Char(13)+
               'Ctrl+P     Cambio Precio'+Char(13)+
               'Ctrl+F2    Cursor en Cliente'+Char(13)

               );

end;

procedure TFormaCapturaRapida.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

if Shift=[ssCtrl] then
begin
case key of
65:
begin
TablaFacturaE.Prior;
ponedatos;
end;

83:begin
TablaFacturaE.Next;
ponedatos;
end;
end;

end;


try

if Shift=[ssCtrl] then
begin
case key of
65:
begin
TablaFacturaE.Prior;

end;

83:begin
TablaFacturaE.Next;
end;
end;

end;


if key=115 then
EditCantidad.SetFocus;


//if key=118 then
//Detalle.SetFocus;


if key=117 then
begin
FormaAdvertencia:=TFormaAdvertencia.Create(Application);
FormaAdvertencia.Label1.Caption:='Esta Seguro que Desea ELIMINAR esta Partida '+TablaDeta.FieldByName('Cantidad').AsString+
'  '+TablaDeta.FieldByName('Producto').AsString;
FormaAdvertencia.ShowModal;
if FormaAdvertencia.Tag=1 then
begin
TablaDeta.Delete;
end;


//CAMBIO_FExit(Sender);
end;

if (key=118)and((BotonNuevo.Tag=1)or(BotonCambios.Tag=1)) then
begin
try
//FormaCalculaxPrecio:=TFormaCalculaxPrecio.Create(Application);
FormaCalculaxPrecio.ShowModal;
SumaTotal;
//FormaCalculaxPrecio.Free;

except
end;
end;


if key=119 then
TipoPago.SetFocus;

if key=116 then
begin
try
CAMBIO_F.SetFocus;
except
end;
end;

{if key=121 then
begin
BotonGuardarClick(Sender);
Detalle.SetFocus;
end;}

if Shift=[ssCtrl] then
begin
case key of
112:begin
//MuestraMensaje(CortaCadena(10,length(CtrlF11.Caption)-1,CtrlF11.Caption));
Imprime(CortaCadena(10,length(CtrlF11.Caption)-1,CtrlF11.Caption));

end;
113:begin
Imprime(CortaCadena(10,length(CtrlF21.Caption)-1,CtrlF21.Caption));
//MuestraMensaje('Oprimio F2');
end;

114:begin
//Imprime(CortaCadena(10,length(CtrlF31.Caption)-1,CtrlF31.Caption));
//MuestraMensaje('Oprimio F3');
try
if EditEmpaque.Visible then
begin
  LabelFactor.Caption:=TablaDeta.FieldByName('Factor').AsString;
EditEmpaque.SetFocus;
end;
except
end;
end;

115:begin
Imprime(CortaCadena(10,length(CtrlF41.Caption)-1,CtrlF41.Caption));
//MuestraMensaje('Oprimio F4');
end;

116:begin
Imprime(CortaCadena(10,length(CtrlF51.Caption)-1,CtrlF51.Caption));
//MuestraMensaje('Oprimio F5');
end;
117:begin
Imprime(CortaCadena(10,length(CtrlF61.Caption)-1,CtrlF61.Caption));
//MuestraMensaje('Oprimio F6');
end;



123:
begin
//TablaDeta.Append;
//if TablaDeta.FieldByName('Cantidad').AsString='' then
//TablaDeta.FieldByName('Cantidad').AsInteger:=1;
Detalle.SelectedIndex:=0;
Detalle.SetFocus;
end;


end;//case


end;//if Shift

except
end;
end;

procedure TFormaCapturaRapida.DetalleColExit(Sender: TObject);
begin
   if Detalle.SelectedIndex=3 then
   begin
   TablaDeta.Edit;
   TablaDeta.FieldByName('Importe').AsFloat:=TablaDeta.FieldByName('Cantidad').AsFloat*TablaDeta.FieldByName('Precio').AsFloat;
   TablaDeta.FieldByName('Importe').AsFloat:=TablaDeta.FieldByName('Importe').AsFloat-(TablaDeta.FieldByName('Importe').AsFloat*TablaDeta.FieldByName('Descuento').AsFloat/100);
   TablaDeta.Post;
   end;

end;

procedure TFormaCapturaRapida.UtilidadporProducto1Click(Sender: TObject);
//var
//desde:string;
//ExisteReporte:integer;
//EL_IVA:string;
begin

//PRECIO*(1-(DESCUENTO/100))*(1-(DESCUENTO2/100))*(1-(DESCUENTO3/100))
//EL_IVA:=FloatToStr(1/(1+(PIVA1_F/100)));
//EL_IVA:=1/EL_IVA;


with Sender as TMenuItem do
ReporteSIF(Caption,'CLDOC_FD','FEDOC_FD','FEDOC_FD',TablaFacturaE.FieldByName('CLDOC_F').AsString,TablaFacturaD,
           '$'+Caption+char(13)+
           '& Select CLDOC_FD,CLPRO_FD,CANTI_FD,CANTI_FD*COPRO_FD,(CANTI_FD*PREDE_FD),(CANTI_FD*PREDE_FD)-(CANTI_FD*COPRO_FD),((PREDE_FD-COPRO_FD)/PREDE_FD)*100,FEDOC_FD from "'+ruta(8)+'\'+TablaFacturad.TableName+'"'+char(13)+
           '?(TREGI_FD<>"C" OR TREGI_FD IS NULL) '+'¿'+char(13)+
           '!cldoc_fd'+char(13)+
           '%e          c            t               t              t                  t             m             c'+char(13)+
           '#DOCUMENTO  PRODUCTO     CANTIDAD        COSTO_X_CANT.  PRECIO_X_CANT.     UTILIDAD      %PROM.UTILID. FECHA     '+char(13)+
           '@'+char(13)
           ,0);

ponedatos;
end;


procedure TFormaCapturaRapida.FacturadeCierre1Click(Sender: TObject);
var
inicio,fin,ultimo:integer;
Aux,ante:string[1];
Tabla:TTable;
FacturaCreada:string[12];
begin
//UltiAux:=UltimoDocumento;
UltimoDocumento:=0;
DialogoImprimir:=TDialogoImprimir.Create(Application);
inicio:=0;
fin:=0;
RangoDocumentos:=False;
DialogoImprimir.Tag:=0;
DialogoImprimir.PrimeraPagina.Text:=DatetoStr(date);
DialogoImprimir.UltimaPagina.Text:=DatetoStr(date);
DialogoImprimir.ShowModal;

if DialogoImprimir.Tag=1 then
begin
try

Aux:=Base.Text;
Orig:=Aux+EditCLDOC_F.Text;


TablaFacturaE.Last;
fin:=TablaFacturaE.FieldByName('CLDOC_F').AsInteger;
while not TablaFacturaE.BOF do
begin
if TablaFacturaE.FieldByName('FEDOC_F').AsDateTime>=StrToDate(DialogoImprimir.PrimeraPagina.Text)then
inicio:=TablaFacturaE.FieldByName('CLDOC_F').AsInteger
else
break;;

TablaFacturaE.Prior;
end;//while
if inicio<>0 then
begin

if LeeDetallecierre(IntToStr(inicio),IntTostr(fin),DialogoImprimir.PrimeraPagina.Text)=0 then
begin
MuestraMensaje('No hay Partidas para estas Fechas, puede ser que ya se Genero la Factura de Cierre');
Base.Text:='Remisión';
BaseChange(Sender);

exit;
end;

//***************************************
PrecioNumero:=0;
Hora.Caption:=TimeToStr(Time);
{*********}
TablaFacturaE.Last;
Ultimo:=TablaFacturaE.FieldByName('CLDOC_F').AsInteger;
TablaFacturae.Insert;

{***********************}

if TablaFacturaE.State=dsInsert then
begin

TablaFacturae.FieldByName('CLDOC_F').AsInteger:=Ultimo+1;
TablaFacturae.FieldByName('CLVEN_F').AsString:=ultimovendedor;
TablaFacturae.FieldByName('FEDOC_F').AsString:=DatetoStr(date);
TablaFacturae.Post;
saldoanterior:=0;
borradatoscliente;
//borra;
BotonNuevo.Tag:=1;
BotonCambios.Tag:=0;
Caja.Enabled:=True;
local:=True;
TablaFacturae.Edit;
EditCLCLI_F.Visible:=True;
activa;
EditFEDOC_F.Text:=DateToStr(Date);
configuracion;
indice:=0;
sig:=1;
{****totales****}
SumarTotal.Caption:=convierte('##,##0.00','0','');
ImpuestoValor.Caption:=convierte('##,##0.00','0','');
TotalFact.Caption:=convierte('##,##0.00','0','');
{**************}
activabotones(False,False,True,False,False,False,True);

//EditCLDOC_F.SetFocus;
EditCLCLI_F.SetFocus;
EditCLCLI_F.Text:='1';
TablaFacturaE.FieldByName('CLCLI_F').AsString:='100';
TablaFacturaE.FieldByName('FEDOC_F').AsString:=DialogoImprimir.PrimeraPagina.Text;
TablaFacturaE.FieldByName('IMIM1_F').AsString:=EditIMIM1_F.Text;
TablaFacturaE.FieldByName('DESFI_F').AsString:=EditDESFI_F.Text;


end;//if insert

//******************************



//***********manda los datos a la factura
Base.Tag:=1;
{while not TablaFacturaD.EOF do
begin
TablaFacturaD.Edit;
TablaFacturaD.FieldByName('TREGI_FD').AsString:='F';
TablaFacturaD.Post;
TablaFacturaD.Next;
end;}

bufercambios('C');
TablaFacturaE.Delete;
generadocumento('F');
TablaFacturaD.First;
activa;
//EditCLDOC_F.SetFocus;
EditCLCLI_F.SetFocus;
local:=True;
TablaFacturaE.Edit;
end;//if iicio<>0

except
end;
//UltimoDocumento:=UltiAux;

//***********guarda la factura de cierre
//MuestraMensaje('esto lo va a guardar');
BotonGuardarClick(Sender);
//MuestraMensaje('ya guardo');
FacturaCreada:=EditCLDOC_F.Text;

TablaFacturaE.Edit;
//MuestraMensaje('CI('+IntToStr(inicio)+'-'+IntToStr(fin)+')');
TablaFacturaE.FieldByName('CLPED_F').AsString:='CI('+IntToStr(inicio)+'-'+IntToStr(fin)+')';
TablaFacturaE.Post;


Base.Text:='Remisión';
BaseChange(Sender);


//***********marca las remisiones que se utilizaron****
try
Tabla:=TTable.Create(Application);
Tabla.DatabaseName:=ruta(8);
//Tabla.TableName:='Remision.dbf';
Tabla.TableName:='Remision.dbf';
Tabla.IndexName:='INUMENC';
Tabla.Open;
Tabla.SetRange([inicio],[fin]);
While not Tabla.Eof do
begin
Tabla.Edit;

Tabla.FieldByName('REMIS_F').AsString:='F'+FacturaCreada;
Tabla.Post;
Tabla.Next;
end;//while


Tabla.Close;
Tabla.Free;
except
end;

MuestraMensaje('Genero la Factura '+FacturaCreada+' Puede Revisarla en el Módulo de Facturación de SIF');

FormaAdvertencia:=TFormaAdvertencia.Create(Application);
FormaAdvertencia.Label1.Caption:='Desea Imprimir la Factura?';
FormaAdvertencia.ShowModal;
if FormaAdvertencia.Tag=1 then
begin
ante:=nombreformato;

nombreformato:=leeruta+'\consulta\FacturaCierre.fmt';
BotonImprimirClick(Sender);

nombreformato:=ante;

end;
FormaAdvertencia.Free;
//rrr

end;//if dialogoimprimir

DialogoImprimir.Free;

end;

procedure TFormaCapturaRapida.CortedeCaja1Click(Sender: TObject);
var
dia:string[12];
desde,hastavalor:string;

begin
FormaFormatos:=TFormaFormatos.Create(Application);
FormaBarras:=TFormaBarras.Create(Application);

FormaFormatos.Rangos.Visible:=True;
FormaFormatos.Formatos.Visible:=False;
activacondiciones(true,true,False,true,False,true,true,true,true,'facturae.dbf');
TablaFacturaE.First;
desde:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
TablaFacturaE.Last;
hastavalor:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
valoresiniciales('','','','');

FormaFormatos.ShowModal;

if FormaFormatos.Tag=1 then
begin
GeneraCorteDeCaja(FormaFormatos.Inicial.Date,FormaFormatos.Final.Date,TablaFacturaE.TableName,'devoluc.dbf','FactAuxi.dbf',TablaFacturaE.IndexName);

condiciones(FormaFormatos.C1.Caption,tipooperador(FormaFormatos.Operador1.Text),FormaFormatos.Valor1.Text,FormaFormatos.T1.Caption,FormaFormatos.C2.Caption,tipooperador(FormaFormatos.Operador2.Text),FormaFormatos.Valor2.Text,FormaFormatos.T2.Caption,FormaFormatos.C3.Caption,tipooperador(FormaFormatos.Operador3.Text),FormaFormatos.Valor3.Text,FormaFormatos.T3.Caption,'Y');
{poneetiquetas('Num. Documento','Nombre','Subtotal','Iva','Total','','','','','','');}
{Concentrar(TablaFacturaE,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',FormaFormatos.Inicial.Text,FormaFormatos.Final.Text,'CLDOC_F','NOMBR_F','IMTOD_F','CTOVE_F','&%IMTOD_F&*&%CTOVE_F&*&0.01&','','','','','','','X','','D');}
dia:=DateToStr(FormaFormatos.Inicial.Date);
Concentrar(TablaAuxiliar,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date),'CLDOC_F','NOMBR_F','IMTOD_F','SUBTO_F','','','','','','','STATU_F','!','C','D');
poneetiquetas('Documento','Nombre','Total del Documento','SubTotal','','','','','','','');
Poneanchos(20,20,20,20,20,20,20,20,20,20,0);
parametrosgrafica('Gráfica de Consecutivo de Documentos','Número de Documento','Total por Documento',1);

FormaBarras.Tag:=0;
FormaBarras.Panel2.Tag:=0;
FormaBarras.botonGrafica.Tag:=2;

FormaBarras.Concentrado.Clear;
//FormaBarras.Caption:='Reporte de Documentos por Periodo ';
//FormaBarras.Caption:=AgregaTitulo2('Reporte de Corte de Caja',FormaFormatos.Titulo.Text);
//******pone el titulo
 with Sender as TMenuItem do
  begin
  desde:=Caption;
  end;
FormaBarras.Caption:=AgregaTitulo2('Reporte de '+desde,FormaFormatos.Titulo.Text);
//******termina pone el titulo

FormaBarras.ShowModal;
FormaBarras.Tag:=0;
end;
FormaFormatos.Tag:=0;
FormaFormatos.Free;
FormaBarras.Free;

end;

procedure TFormaCapturaRapida.CAMBIO_FEnter(Sender: TObject);
begin
sumatotal;
end;

procedure TFormaCapturaRapida.RangodeDocumentos1Click(Sender: TObject);
var
aux:string[1];
op:char;
begin
MovimientoBorrado:=0;
FormaRango:=TFormaRango.Create(Application);
if Base.Text='Cotización' then
begin
FormaRango.Factura.Enabled:=True;
FormaRango.Remision.Enabled:=True;
FormaRango.Pedido.Enabled:=True;
end;

if Base.Text='Pedido' then
begin
FormaRango.Factura.Enabled:=True;
FormaRango.Remision.Enabled:=True;
FormaRango.Pedido.Enabled:=False;
end;

if Base.Text='Remisión' then
begin
FormaRango.Factura.Enabled:=True;
FormaRango.Remision.Enabled:=False;
FormaRango.Pedido.Enabled:=False;
end;

FormaRango.Tag:=0;
FormaRango.ShowModal;


if FormaRango.Factura.Checked=True then
Aux:=FormaRango.Factura.Caption;

if FormaRango.Remision.Checked=True then
Aux:=FormaRango.Remision.Caption;

if FormaRango.Pedido.Checked=True then
Aux:=FormaRango.Pedido.Caption;

if FormaRango.Tag =1 then
begin
//Aux:=Base.Text;
DatoRango:=FormaRango.Edit1.Text;
Orig:=Aux+EditCLDOC_F.Text;
Orig2:=Base.Text;
RangoDocumentos:=True;
Base.Tag:=1;
bufercambios('C');
op:=Aux[1];
generadocumento(op);
activa;
EditCLDOC_F.SetFocus;
local:=True;
TablaFacturaE.Edit;
activabotones(False,False,True,False,False,False,True);
if TablaDeta.RecordCount-1<=0 then
begin
MuestraMensaje('No se puede generar una factura no hay documentos en este rango...');
CancelaMovimiento1Click(Sender);
end;
end;

FormaRango.Free;
end;

procedure TFormaCapturaRapida.ConfigurarCaja1Click(Sender: TObject);
var
arch:File of RegistroCaja;
datos:RegistroCaja;

begin
FormaCaja:=TFormaCaja.Create(Application);
FormaCaja.Tag:=0;
FormaCaja.Ruta.Caption:=leeruta;
FormaCaja.NumeroCaja.Text:='';
FormaCaja.ShowModal;
if FormaCaja.Tag=1 then
begin

Assignfile(arch,leeruta+'\caja.cnf');
if FileExists(leeruta+'\caja.cnf') then
Reset(arch)
else
ReWrite(arch);

//MuestraMensaje('seva aGuardar '+FormaCaja.ClaveVendedor.Text);
seek(arch,FormaCaja.NumeroCaja.Value-1);
datos.No_caja:=FormaCaja.NoCaja.Text;
datos.Cl_vendedor:=FormaCaja.ClaveVendedor.Text;
datos.Nom_formato:=FormaCaja.Formato.Text;

write(arch,datos);
CajaLocal:= FormaCaja.NoCaja.Text;
VendedorDefault:=FormaCaja.ClaveVendedor.Text;
if FormaCaja.Formato.Text<>'' then
nombreformato:=leeruta+'\consulta\'+FormaCaja.Formato.Text;
CloseFile(arch);
end;
FormaCaja.Free;

end;

procedure TFormaCapturaRapida.FormShow(Sender: TObject);
var
arch:File of RegistroCaja;
arch2,arch3:textFile;
datos:RegistroCaja;
linea:string;
rgn:hrgn;
begin

rgn:=CreateRoundRectRgn(0,0,Panel8.width,Panel8.height,15,15);
SetWindowRgn(Panel8.handle,rgn,True);



UsuarioActual('-1');
FormaCapturaRapida.WindowState:=wsMaximized;
ruta_21:=ruta(21);
CajaLocal:='';
VendedorDefault:='';
if FileExists(leeruta+'\caja.cnf') then
begin
AssignFile(arch,leeruta+'\caja.cnf');
Reset(arch);
Read(arch,datos);
CajaLocal:=datos.No_caja;
VendedorDefault:=datos.Cl_vendedor;
if datos.Nom_formato<>'' then
nombreformato:=leeruta+'\consulta\'+datos.Nom_formato;
CloseFile(arch);
end;//if

IntegrarMI:='S';
if ruta(6)='SI' then IntegrarMI:='S' else IntegrarMI:='N';
//ShowMessage(IntegrarMI);

if FileExists(ruta(8)+'\pagos.cnf') then
begin
Assignfile(arch2,ruta(8)+'\pagos.cnf');
Reset(arch2);
TipoPago.Clear;
while not eof(arch2) do
begin
Readln(arch2,LINEA);
TipoPago.Items.Add(linea);
end;
CloseFile(arch2);
end;//if

if caso2(StrToInt(usuario.Caption),44) then
 Reportes1.Enabled:=True
 else
Reportes1.Enabled:=False;

VerRepo:=Reportes1.Enabled;

BotonTerminaVenta.Enabled:=False;
BotonRedondo2.Enabled:=BotonTerminaVenta.Enabled;

EditClave.Enabled:=BotonTerminaVenta.Enabled;
EditCantidad.Enabled:=BotonTerminaVenta.Enabled;
Editempaque.Enabled:=BotonTerminaVenta.Enabled;
EditTARA.Enabled:=BotonTerminaVenta.Enabled;

EstadoCap(BotonTerminaVenta.Enabled);
//FormaCalculaxPrecio:=TFormaCalculaxPrecio.Create(Application);

linea:='';
try
if FileExists(leeruta+'\empaque.cnf') then
begin
AssignFile(arch3,leeruta+'\empaque.cnf');
Reset(arch3);
Readln(arch3,linea);
Closefile(arch3);

if linea='S' then
begin

LabelEmpaque.Visible:=True;
EditEmpaque.Visible:=True;
CapturaporEmpaque1.Checked:=True;
LabelFactor.Visible:=True;
end
else
begin
LabelEmpaque.Visible:=False;
EditEmpaque.Visible:=False;
CapturaporEmpaque1.Checked:=False;
LabelFactor.Visible:=False;
end;
end;
except
end;

end;

procedure TFormaCapturaRapida.DetalleDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
if Digitos>0 then
Detalle.Fields[DataCol].OnGetText:=MyOnGetTextC;
end;













procedure TFormaCapturaRapida.EditClaveKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
//var
//cade:string;
begin

case key of
13:
begin
if  VerTara then
begin
try
if TablaInventario.FindKey([EditClave.Text]) then
begin
if TablaInventario.FieldByName(CampoComparaTara).AsString=ValorComparaTara then
 EditTara.Visible:=True
 else
 EditTara.Visible:=False;
end;

except
end;//try

end;

if EditTara.Visible then
begin
EditTara.SetFocus

end
else
EntraEmpaque;

end;


112:
begin
Detalle.Tag:=3;
TablaDeta.Edit;
TablaDeta.Post;
TablaDeta.Edit;
FormaCapturaRapida.TablaDeta.FieldByName('clave').AsString:=BuscaClaveDirecto(FormaCapturaRapida.TablaDeta.FieldByName('clave').AsString,1,2);
//EditClave.SetFocus;
if IniciaenClave then
EditClave.SetFocus
else
EditCantidad.SetFocus;

end;

113:
begin
Detalle.Tag:=3;
TablaDeta.Edit;
TablaDeta.Post;
TablaDeta.Edit;
FormaCapturaRapida.TablaDeta.FieldByName('clave').AsString:=BuscaClaveDirecto(FormaCapturaRapida.TablaDeta.FieldByName('clave').AsString,1,1);
//EditClave.SetFocus;
if IniciaenClave then
EditClave.SetFocus
else
EditCantidad.SetFocus;

end;




114:
begin
try

 if (TablaDeta.State=dsEdit)or(TablaDeta.State=dsInsert) then
 begin
 TablaDeta.Post;
 TablaDeta.Edit;
 end;

Detalle.SelectedIndex:=2;

if (EditEmpaque.Visible)and(EditEmpaque.Text='') then//caso de suso de empaques
begin
try
//TablaDeta.Prior;
EditEmpaque.SetFocus;
Exit;

except
end;



end
else
begin
//caso normal sin empaques
if IniciaenClave then
EditClave.SetFocus
else
EditCantidad.SetFocus;
end;//else Editempaques


except

end;

end;

123:
begin
//TablaDeta.Append;
//if TablaDeta.FieldByName('Cantidad').AsString='' then
//TablaDeta.FieldByName('Cantidad').AsInteger:=1;
Detalle.SelectedIndex:=0;
Detalle.SetFocus;
end;

end;//case

end;



procedure TFormaCapturaRapida.EditCantidadKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin

if key=123 then
begin
Detalle.SelectedIndex:=0;
Detalle.SetFocus;
end;


if key=13 then
begin
//if IniciaenClave then
EditClave.SetFocus
//else
//EditCantidad.SetFocus;
end;

end;



procedure TFormaCapturaRapida.SaltarEncabezado1Click(Sender: TObject);
begin
SaltarEncabezado1.Checked:=not SaltarEncabezado1.Checked;
GuardarOpciones;
end;




procedure TFormaCapturaRapida.BotonAgregarPartidaClick(Sender: TObject);
begin
if ((BotonNuevo.Tag=1)or(BotonCambios.Tag=1)) then
begin
if (TablaDeta.FieldByName('Clave').AsString<>'')and
(TablaDeta.FieldByName('Producto').AsString<>'') then
begin
TablaDeta.Append;
TablaDeta.FieldByName('Cantidad').AsInteger:=1;
if IniciaenClave then
EditClave.SetFocus
else
EditCantidad.SetFocus;
end;
end;
end;

procedure TFormaCapturaRapida.IniciaenClave1Click(Sender: TObject);
begin
   IniciaenClave1.Checked:=not IniciaenClave1.Checked;
   GuardarOpciones;
end;

procedure TFormaCapturaRapida.CtrlF11Click(Sender: TObject);
begin

CtrlF11.Caption:='Ctrl+F1 '+'('+EligeFormato+')';
GuardarOpciones;
end;

procedure TFormaCapturaRapida.CtrlF21Click(Sender: TObject);
begin
CtrlF21.Caption:='Ctrl+F2 '+'('+EligeFormato+')';
GuardarOpciones;
end;

procedure TFormaCapturaRapida.CtrlF31Click(Sender: TObject);
begin
CtrlF31.Caption:='Ctrl+F3 '+'('+EligeFormato+')';
GuardarOpciones;
end;

procedure TFormaCapturaRapida.CtrlF41Click(Sender: TObject);
begin
CtrlF41.Caption:='Ctrl+F4 '+'('+EligeFormato+')';
GuardarOpciones;
end;

procedure TFormaCapturaRapida.CtrlF51Click(Sender: TObject);
begin
CtrlF51.Caption:='Ctrl+F5 '+'('+EligeFormato+')';
GuardarOpciones;
end;

procedure TFormaCapturaRapida.CtrlF61Click(Sender: TObject);
begin
CtrlF61.Caption:='Ctrl+F6 '+'('+EligeFormato+')';
GuardarOpciones;
end;


procedure TFormaCapturaRapida.VentasporCaja1Click(Sender: TObject);
var
dia:string[12];
desde,hastavalor:string;
begin
FormaFormatos:=TFormaFormatos.Create(Application);
FormaBarras:=TFormaBarras.Create(Application);

FormaFormatos.Rangos.Visible:=True;
FormaFormatos.Formatos.Visible:=False;
activacondiciones(true,true,False,true,False,true,true,true,true,'facturae.dbf');
TablaFacturaE.First;
desde:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
TablaFacturaE.Last;
hastavalor:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
//valoresiniciales('','',desde,hastavalor);

FormaFormatos.ShowModal;
if FormaFormatos.Tag=1 then
begin
condiciones(FormaFormatos.C1.Caption,tipooperador(FormaFormatos.Operador1.Text),FormaFormatos.Valor1.Text,FormaFormatos.T1.Caption,FormaFormatos.C2.Caption,tipooperador(FormaFormatos.Operador2.Text),FormaFormatos.Valor2.Text,FormaFormatos.T2.Caption,FormaFormatos.C3.Caption,tipooperador(FormaFormatos.Operador3.Text),FormaFormatos.Valor3.Text,FormaFormatos.T3.Caption,'Y');
if FormaFormatos.IncluirDevoluciones.Checked then
begin
GeneraCorteDeCaja(FormaFormatos.Inicial.Date,FormaFormatos.Final.Date,TablaFacturaE.TableName,'devoluc.dbf','FactAuxi.dbf','INUMENC');
Concentrar(TablaAuxiliar,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date),'BCLIM_F','CLDOC_F','NOMBR_F','IMTOD_F','SUBTO_F','IMIM2_F','','','','','STATU_F','!','C','DC');
end
else
Concentrar(TablaFacturaE,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date),'BCLIM_F','CLDOC_F','NOMBR_F','IMTOD_F','SUBTO_F','IMIM2_F','','','','','STATU_F','!','C','DC');

//Concentrar(TablaAuxiliar,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date),'CLCLI_F','NOMBR_F','IMTOD_F','SUBTO_F','IMIM1_F','IMIM2_F','','','','','STATU_F','!','C','D');

dia:=DateToStr(FormaFormatos.Inicial.Date);
//

poneetiquetas('Caja','Documento','-Nombre','Total del Documento','SubTotal','IVA','','','','','');
Poneanchos(20,20,20,20,20,20,20,20,20,20,0);
parametrosgrafica('Gráfica de Consecutivo de Documentos','Número de Documento','Total por Documento',1);

FormaBarras.Tag:=0;
FormaBarras.Panel2.Tag:=0;
FormaBarras.botonGrafica.Tag:=2;

FormaBarras.Concentrado.Clear;
//FormaBarras.Caption:='Reporte de Documentos Del Día '+dia;
//******pone el titulo
 with Sender as TMenuItem do
  begin
  desde:=Caption;
  end;
FormaBarras.Caption:=AgregaTitulo2('Reporte de '+desde,FormaFormatos.Titulo.Text);
//******termina pone el titulo

FormaBarras.ShowModal;
FormaBarras.Tag:=0;
end;
FormaFormatos.Tag:=0;
FormaFormatos.Free;
FormaBarras.Free;

end;

procedure TFormaCapturaRapida.FacturaeImprimir1Click(Sender: TObject);
var
Aux:string[1];
CadenaFormato:string;
RegistroActual:Integer;
begin
FormaAdvertencia:=TFormaAdvertencia.Create(Application);
FormaAdvertencia.Label1.Caption:='Esta Seguro que Desea GENERAR LA FACTURA ?';
FormaAdvertencia.ShowModal;
FormaAdvertencia.Label1.Caption:='Esta Seguro que Desea ELIMINAR este Documento ?';
if FormaAdvertencia.Tag=1 then
begin


if TablaFacturaE.FieldByName('REMIS_F').AsString='' then
begin

if (TablaCliente.FindKey([EditCLCLI_F.Text])) then
begin

Nombre.Caption:=TablaCliente.FieldByName('NOMBR_C').AsString;
Direccion.Caption:=TablaCliente.FieldByName('DIREC_C').AsString;
Direc2.Caption:=TablaCliente.FieldByName('DIRE2_C').AsString;
Poblacion.Caption:=TablaCliente.FieldByName('POBLA_C').AsString;
RFC.Caption:=TablaCliente.FieldByName('RFCXX_C').AsString;
CodigoPostal.Caption:=TablaCliente.FieldByname('CPXXX_C').AsString;

RegistroActual:=TablaFacturaE.FieldByName('CLDOC_F').AsInteger;

Aux:=Base.Text;
Orig:=Aux+EditCLDOC_F.Text;
RangoDocumentos:=False;

Base.Tag:=1;
while not TablaFacturaD.EOF do
begin
TablaFacturaD.Edit;
TablaFacturaD.FieldByName('TREGI_FD').AsString:='F';
TablaFacturaD.Post;
TablaFacturaD.Next;
end;

bufercambios('C');
generadocumento('F');
TablaFacturaD.First;
activa;
//EditCLDOC_F.SetFocus;
EditCLCLI_F.SetFocus;
local:=True;
TablaFacturaE.Edit;



BotonGuardarClick(Sender);

CadenaFormato:=nombreformato;
nombreformato:=leeruta+'\consulta\'+ruta(14);
FormaCapturaRapida.BotonImprimirClick(Sender);
nombreformato:=CadenaFormato;

Base.Text:='Remisión';
BaseChange(Sender);

if TablaFacturaE.FindKey([RegistroActual]) then
begin
//***actualiza el documento que genero
TablaFacturaE.Edit;
TablaFacturaE.FieldByName('REMIS_F').AsString:=Orig;

TablaFacturaE.Post;
end;

ponedatos;
end
else
MuestraMensaje('La Clave del Cliente no EXISTE es necesario darla de alta para Facturar');
end
else
MuestraMensaje('El Documento ya se FACTURO...');

end;

end;

procedure TFormaCapturaRapida.EditCantidadEnter(Sender: TObject);
begin
if (Detalle.ReadOnly)and((BotonNuevo.Tag=1)or(BotonCambios.Tag=1)) then
begin
Detalle.ReadOnly:=False;
EditCantidad.ReadOnly:=Detalle.ReadOnly;
EditClave.ReadOnly:=Detalle.ReadOnly;
end;

end;

procedure TFormaCapturaRapida.VentasporVendedor1Click(Sender: TObject);
var
dia:string[12];
desde,hastavalor:string;
begin
FormaFormatos:=TFormaFormatos.Create(Application);
FormaBarras:=TFormaBarras.Create(Application);

FormaFormatos.Rangos.Visible:=True;
FormaFormatos.Formatos.Visible:=False;
activacondiciones(true,true,False,true,False,true,true,true,true,'facturae.dbf');
TablaFacturaE.First;
desde:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
TablaFacturaE.Last;
hastavalor:=TablaFacturaE.FieldByName('CLDOC_F').AsString;
//valoresiniciales('','',desde,hastavalor);

FormaFormatos.ShowModal;
if FormaFormatos.Tag=1 then
begin
condiciones(FormaFormatos.C1.Caption,tipooperador(FormaFormatos.Operador1.Text),FormaFormatos.Valor1.Text,FormaFormatos.T1.Caption,FormaFormatos.C2.Caption,tipooperador(FormaFormatos.Operador2.Text),FormaFormatos.Valor2.Text,FormaFormatos.T2.Caption,FormaFormatos.C3.Caption,tipooperador(FormaFormatos.Operador3.Text),FormaFormatos.Valor3.Text,FormaFormatos.T3.Caption,'Y');
if FormaFormatos.IncluirDevoluciones.Checked then
begin
GeneraCorteDeCaja(FormaFormatos.Inicial.Date,FormaFormatos.Final.Date,TablaFacturaE.TableName,'devoluc.dbf','FactAuxi.dbf','INUMENC');
Concentrar(TablaAuxiliar,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date),'CLVEN_F','CLDOC_F','NOMBR_F','IMTOD_F','SUBTO_F','IMIM2_F','','','','','STATU_F','!','C','DC');
end
else
Concentrar(TablaFacturaE,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date),'CLVEN_F','CLDOC_F','NOMBR_F','IMTOD_F','SUBTO_F','IMIM2_F','','','','','STATU_F','!','C','DC');

//Concentrar(TablaAuxiliar,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date),'CLCLI_F','NOMBR_F','IMTOD_F','SUBTO_F','IMIM1_F','IMIM2_F','','','','','STATU_F','!','C','D');

dia:=DateToStr(FormaFormatos.Inicial.Date);
//

poneetiquetas('Vendedor','Documento','-Nombre','Total del Documento','SubTotal','IVA','','','','','');
Poneanchos(20,20,20,20,20,20,20,20,20,20,0);
parametrosgrafica('Gráfica de Consecutivo de Documentos','Número de Documento','Total por Documento',1);

FormaBarras.Tag:=0;
FormaBarras.Panel2.Tag:=0;
FormaBarras.botonGrafica.Tag:=2;

FormaBarras.Concentrado.Clear;
//FormaBarras.Caption:='Reporte de Documentos Del Día '+dia;
//******pone el titulo
 with Sender as TMenuItem do
  begin
  desde:=Caption;
  end;
FormaBarras.Caption:=AgregaTitulo2('Reporte de '+desde,FormaFormatos.Titulo.Text);
//******termina pone el titulo

FormaBarras.ShowModal;
FormaBarras.Tag:=0;
end;
FormaFormatos.Tag:=0;
FormaFormatos.Free;
FormaBarras.Free;

end;


procedure TFormaCapturaRapida.SalidasdeEfectivo1Click(Sender: TObject);
var
//dia:string[12];
for_anterior:string;

begin

FormaSalidasEfectivo:=TFormaSalidasEfectivo.Create(Application);

AbreSalidasEfectivo(TablaFacturaE.DatabaseName);
if FormaSalidasEfectivo.Tag=1 then
begin
if FileExists(leeruta+'\consulta\retiro.fmt') then
begin

for_anterior:=nombreformato;
nombreformato:=leeruta+'\consulta\retiro.fmt';
UsuarioActual(Usuario.Caption);
LeeEtiquetasMoneda(valordivisaetiqueta('M.N.',1),valordivisaetiqueta('M.N.',2),valordivisaetiqueta('M.N.',3),valordivisaetiqueta('M.N.',4));
forma(FormaSalidasEfectivo.TablaRetiros,FormaSalidasEfectivo.TablaRetiros,nombreformato,'i');
nombreformato:=for_anterior;

end
else
MuestraMensaje('El Formato '+leeruta+'\consulta\retiro.fmt'+' No Existe');
end;

FormaSalidasEfectivo.Free;

{if FormaSalidasEfectivo.Tag=1 then
begin
FormaFormatos:=TFormaFormatos.Create(Application);

FormaBarras:=TFormaBarras.Create(Application);

FormaFormatos.Rangos.Visible:=True;
FormaFormatos.Formatos.Visible:=False;
activacondiciones(true,true,False,true,False,true,true,true,true,'facturae.dbf');

FormaSalidasEfectivo.TablaRetiros.First;

desde:=FormaSalidasEfectivo.TablaRetiros.FieldByName('CLDOC_F').AsString;
FormaSalidasEfectivo.TablaRetiros.Last;
hastavalor:=FormaSalidasEfectivo.TablaRetiros.FieldByName('CLDOC_F').AsString;
//valoresiniciales('','',desde,hastavalor);

FormaFormatos.ShowModal;
if FormaFormatos.Tag=1 then
begin
condiciones(FormaFormatos.C1.Caption,tipooperador(FormaFormatos.Operador1.Text),FormaFormatos.Valor1.Text,FormaFormatos.T1.Caption,FormaFormatos.C2.Caption,tipooperador(FormaFormatos.Operador2.Text),FormaFormatos.Valor2.Text,FormaFormatos.T2.Caption,FormaFormatos.C3.Caption,tipooperador(FormaFormatos.Operador3.Text),FormaFormatos.Valor3.Text,FormaFormatos.T3.Caption,'Y');
//GeneraCorteDeCaja(FormaFormatos.Inicial.Date,FormaFormatos.Final.Date,TablaFacturaE.TableName,'devoluc.dbf','FactAuxi.dbf','INUMENC');
Concentrar(FormaSalidasEfectivo.TablaRetiros,Formaformatos.De.Text,FormaFormatos.Hasta.Text,'FEDOC_F',DateToStr(FormaFormatos.Inicial.Date),DateToStr(FormaFormatos.Final.Date),'CLDOC_F','CONCEPTO','CANTIDAD','FEDOC_F','','','','','','','','X','','D');

dia:=DateToStr(FormaFormatos.Inicial.Date);

poneetiquetas('Retiro','Concepto','Cantidad','-Fecha','','','','','','','');
Poneanchos(20,20,20,20,20,20,20,20,20,20,0);
parametrosgrafica('Gráfica de Retiros','Retiro','Cantidad',1);

FormaBarras.Tag:=0;
FormaBarras.Panel2.Tag:=0;
FormaBarras.botonGrafica.Tag:=2;

FormaBarras.Concentrado.Clear;
//FormaBarras.Caption:='Reporte de Documentos Del Día '+dia;
//******pone el titulo

with Sender as TMenuItem do
begin
  desde:=Caption;
end;

FormaBarras.Caption:=AgregaTitulo2('Reporte de '+desde,FormaFormatos.Titulo.Text);
//******termina pone el titulo

FormaBarras.ShowModal;
FormaBarras.Tag:=0;
end;
FormaFormatos.Tag:=0;
FormaFormatos.Free;
FormaBarras.Free;

end;}


end;

procedure TFormaCapturaRapida.CortedeCajayRetiros1Click(Sender: TObject);
begin

FormaConsulta:=TFormaConsulta.Create(Application);
AbreConsulta(0);
FormaConsulta.Archivo.Text:=leeruta+'\report\CorteCajaSIF';
FormaConsulta.UsarFecha.Checked:=True;
FormaConsulta.FechaReporte.Visible:=True;

FormaConsulta.FechaReporte.Text:='FEDOC_F';
FormaConsulta.Inicial.Date:=Date;
FormaConsulta.Final.Date:=Date;

FormaConsulta.EjecutarClick(Sender);

FormaConsulta.Free;

end;


procedure TFormaCapturaRapida.FormResize(Sender: TObject);
var
factor:integer;
begin

Panel5.Left:=Trunc(Detalle.Width+(((Panel2.Width-Detalle.Width)/2)-(Panel5.width/2)));
//PanelSuma.Height:=Trunc(Navegador.Top-Impresa.Top)-40;

//ante:=SumarTotal.Height;
factor:= Trunc((PanelSuma.Height/3)-10);


if PanelSuma.Font.Name<>'Digital Readout Thick Upright' then
begin
//PanelSuma.Font.Name:='Arial';
//PanelSuma.Height:=Trunc(Navegador.Top-Impresa.Top)-40;
factor:= factor-4;
SumarTotal.Font.Name:=PanelSuma.Font.Name;
ImpuestoValor.Font.Name:=PanelSuma.Font.Name;
TotalFact.Font.Name:=PanelSuma.Font.Name;


PanelSuma.Align:=alBottom;


SumarTotal.Font.Size:=factor-1;
SumarTotal.Top:=1;

Label22.Top:=SumarTotal.Top+factor+14;
ImpuestoValor.Font.Size:=factor-1;

ImpuestoValor.Top:=SumarTotal.Top+factor+9;

Label24.Top:=SumarTotal.Top+2*factor+22;
TotalFact.Font.Size:=factor-1;
TotalFact.Top:=SumarTotal.Top+2*factor+18;

SumarTotal.Left:=15;
ImpuestoValor.Left:=15;
TotalFact.Left:=15;


Label12.Left:=PanelSuma.Width- Label12.Width-5;
Label22.Left:=PanelSuma.Width- Label12.Width-5;
Label24.Left:=PanelSuma.Width- Label12.Width-5;



end
else
begin

PanelSuma.Align:=alBottom;

SumarTotal.Font.Size:=factor-1;
SumarTotal.Top:=1;

Label22.Top:=SumarTotal.Top+factor+14;
ImpuestoValor.Font.Size:=factor-1;

ImpuestoValor.Top:=SumarTotal.Top+factor+9;

Label24.Top:=SumarTotal.Top+2*factor+22;
TotalFact.Font.Size:=factor-1;

TotalFact.Top:=SumarTotal.Top+2*factor+18;

SumarTotal.Left:=15;
ImpuestoValor.Left:=15;
TotalFact.Left:=15;

Label12.Left:=PanelSuma.Width- Label12.Width-5;
Label22.Left:=PanelSuma.Width- Label12.Width-5;
Label24.Left:=PanelSuma.Width- Label12.Width-5;

end;

end;

procedure TFormaCapturaRapida.CambioPrecio1Click(Sender: TObject);
var
clave:string;
begin

if Usuario.Caption<>'0' then
begin
FormaAdministrador:=TFormaAdministrador.Create(Application);
FormaAdministrador.ShowModal;

if FormaAdministrador.Tag=1 then
clave:='admon'
else
clave:='xxxx';

FormaAdministrador.Free;
end;

//showMessage(clave);
//if (caso(StrToInt(usuario.Caption),22)) then
//clave:=admon;

if (clave='admon')or(Usuario.Caption='0') then
begin
PermiteCambioPrecio:=True;
//******

if (BotonNuevo.Tag=1)or(BotonCambios.Tag=1) then
begin
Detalle.SelectedIndex:=4;
Detalle.SetFocus;

keybd_event(32,0,0,0);//telea un ESPACIIO en la pantalla activa
//keybd_event(18,0,0,0);//telea un ALT en la pantalla activa
//keybd_event(40,0,0,0);//telea un FECHA ABAJO la pantalla activa
//keybd_event(18,0,0,0);
//keybd_event(40,0,0,0);//telea un FECHA ABAJO la pantalla activa
//keybd_event(18,0,0,0);//telea un ALT en la pantalla activa
//keybd_event(40,0,0,0);//telea un FECHA ABAJO la pantalla activa
//keybd_event(40,0,0,0);//telea un FECHA ABAJO la pantalla activa

end
else
PermiteCambioPrecio:=False;




end;

end;


procedure TFormaCapturaRapida.EditEmpaqueExit(Sender: TObject);
begin
//if TablaDeta.FieldByName('factor').AsFloat>0 then
try
if StrToFloat(LabelFactor.Caption)>0 then
begin
if (EditEmpaque.Text<>'')and(StrToFloat(EditEmpaque.Text)>0) then
begin
//****calcula el empaque
  TablaDeta.Edit;
  TablaDeta.FieldByName('CANTIDAD').AsFloat:=StrToFloat(LabelFactor.Caption)*StrToFloat(EditEmpaque.Text);

end;//if
end
else
MuestraMensaje('Falta la Unidad de Empaque');

//AgregaPartidaDetalle;

except
end;

end;

procedure TFormaCapturaRapida.EditEmpaqueKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
try

if key=13 then
begin
try
if LabelFactor.Caption='' then
Detalle.SelectedIndex:=2;

if (EditEmpaque.Text<>'')and(StrToFloat(EditEmpaque.Text)>0) then
begin
  TablaDeta.Edit;
  TablaDeta.FieldByName('CANTIDAD').AsFloat:=StrToFloat(LabelFactor.Caption)*StrToFloat(EditEmpaque.Text);
//  sumatotal;

end;//if

LabelFactor.Caption:='1';
Detalle.SelectedIndex:=2;

//******
TablaDeta.Last;

EditClave.SetFocus;
except
end;
AgregaPartidaDetalle;
end;
except

end;


case key of
113:
begin
Detalle.Tag:=3;
TablaDeta.Edit;
TablaDeta.Post;
TablaDeta.Edit;
FormaCapturaRapida.TablaDeta.FieldByName('clave').AsString:=BuscaClaveDirecto(FormaCapturaRapida.TablaDeta.FieldByName('clave').AsString,1,1);
//EditClave.SetFocus;
if IniciaenClave then
EditClave.SetFocus
else
EditCantidad.SetFocus;

end;


114:begin
try
  LabelFactor.Caption:=TablaDeta.FieldByName('Factor').AsString;
EditEmpaque.SetFocus;

except
end;


end;


115:begin
try
EditCantidad.SetFocus;
except
end;


end;


123:
begin
Detalle.SelectedIndex:=0;
Detalle.SetFocus;
end;

end;//case


end;

procedure TFormaCapturaRapida.CapturaporEmpaque1Click(Sender: TObject);
var
arch:TextFile;
begin
if usuario.Caption='0' then
begin

CapturaporEmpaque1.Checked:=not CapturaporEmpaque1.Checked;
if CapturaporEmpaque1.Checked then
begin
Assignfile(arch,leeruta+'\empaque.cnf');
ReWrite(arch);
Writeln(arch,'S');
Closefile(arch);


LabelEmpaque.Visible:=True;
LabelFactor.Visible:=True;
EditEmpaque.Visible:=True;
end
else
begin
Assignfile(arch,leeruta+'\empaque.cnf');
ReWrite(arch);
Writeln(arch,'N');
Closefile(arch);
LabelEmpaque.Visible:=False;
LabelFactor.Visible:=False;
EditEmpaque.Visible:=False;
end;

end;
end;

procedure TFormaCapturaRapida.DetalleKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
case key of
38:begin
 LabelFactor.Caption:=TablaDeta.FieldByName('Factor').AsString;
end;

40:begin
LabelFactor.Caption:=TablaDeta.FieldByName('Factor').AsString;
end;
end;
end;


procedure TFormaCapturaRapida.VerTotalesenformatoDigital1Click(
  Sender: TObject);


  begin

 VerTotalesenformatoDigital1.Checked:=not VerTotalesenformatoDigital1.Checked;
 GuardarOpciones;

{if FileExists(leeruta+'\encabeza.cnf') then
begin
Assignfile(arch,leeruta+'\encabeza.cnf');

Append(arch);
if VerTotalesenformatoDigital1.Checked then
Writeln(arch,'S')
else
Writeln(arch,'N');
Closefile(arch);
end;}

end;

procedure TFormaCapturaRapida.TablaDetaAfterDelete(DataSet: TDataSet);
begin
if not BotonNuevaVenta.Enabled then
begin
SumaTotal;
end;


end;



procedure TFormaCapturaRapida.VentaenEspera1Click(Sender: TObject);
begin
{actualizafactura('C');
TablaFacturaE.Edit;
TablaFacturaE.FieldByName('STATU_F').AsString:='E';
TablaFacturaE.Post;
  Estado.Caption:='En Espera...';
BotonNuevaVenta.Enabled:=True;
BotonTerminaVenta.Enabled:=False;
BotonRedondo2.Enabled:=BotonTerminaVenta.Enabled;

BotonNuevo.Tag:=0;
BotonGuardar.tag:=0;}
//****************
FormaCapturaRapida:=TFormaCapturaRapida.Create(Application);
FormaCapturaRapida.Usuario.Caption:=Usuario.Caption;
if caso(StrToInt(usuario.Caption),4) then
begin
FormaCapturaRapida.Caption:=FormaCapturaRapida.Caption+'   '+UpperCase(NombreUsuario(usuario.Caption,leeruta))+'           '+DateToStr(Date);
// FormaCapturaRapida.Panel2Click(Sender);
FormaCapturaRapida.ShowModal;
//FormaCapturaRapida.Show;
end;
try
FormaCapturaRapida.Free;
except
end;
//*************

end;

procedure TFormaCapturaRapida.CorteZ1Click(Sender: TObject);
begin
//*******

with Sender as TMenuItem do
ReporteSIF(Caption+' VENTAS REMISION ','CLDOC_F','FEDOC_F','FEDOC_F',TablaFacturaE.FieldByName('CLDOC_F').AsString,TablaFacturaE,
           '$'+Caption+' REMISIONES '+UpperCase(NombreUsuario(usuario.Caption,leeruta))+' HORA : '+TimeToStr(Now)+char(13)+
           '& Select cldoc_f,CLCLI_F,imtod_f,SUBTO_F,IMIM2_F,FEDOC_F from "'+RUTA(8)+'\remision.dbf"'+char(13)+
           '?((STATU_F<>"C" OR STATU_F IS NULL)AND REMIS_F IS NULL ) '+'¿'+char(13)+
           '!cldoc_f'+char(13)+
           '%e           c        t           t           t           c'+char(13)+
           '#DOCUMENTOS  CLAVE        IMPORTE       SUBTOTAL      IMPUESTO      FECHA     '+char(13)+
           '@'+char(13)+

           '$'+Caption+' FACTURADAS '+char(13)+
           '& Select cldoc_f,CLCLI_F,imtod_f,SUBTO_F,IMIM2_F,FEDOC_F from "'+RUTA(8)+'\remision.dbf"'+char(13)+
           '?((STATU_F<>"C" OR STATU_F IS NULL)AND REMIS_F>" ") '+'¿'+char(13)+
           '!cldoc_f'+char(13)+
           '%e           c        t           t           t           c'+char(13)+
           '#DOCUMENTOS  CLAVE        IMPORTE       SUBTOTAL      IMPUESTO      FECHA     '+char(13)+
           '@'+char(13)+


           '$'+Caption+' CANCELADAS '+char(13)+
           '& Select cldoc_f,CLCLI_F,imtod_f,SUBTO_F,IMIM2_F,FEDOC_F from "'+RUTA(8)+'\remision.dbf"'+char(13)+
           '?(STATU_F="C") '+'¿'+char(13)+
           '!cldoc_f'+char(13)+
           '%e           c        t           t           t           c'+char(13)+
           '#DOCUMENTOS  CLAVE        IMPORTE       SUBTOTAL      IMPUESTO      FECHA     '+char(13)+
           '@'+char(13)+

           '$'+Caption+' DEVOLUCIONES '+char(13)+
           '& Select cldoc_f,CLCLI_F,imtod_f,SUBTO_F,IMIM2_F,FEDOC_F from "'+RUTA(8)+'\devoluc.dbf"'+char(13)+
           '?(STATU_F<>"C" OR STATU_F IS NULL) '+'¿'+char(13)+
           '!cldoc_f'+char(13)+
           '%e           c        t           t           t           c'+char(13)+
           '#DOCUMENTOS  CLAVE        IMPORTE       SUBTOTAL      IMPUESTO      FECHA     '+char(13)+
           '@'+char(13)+


           '$'+Caption+' RETIROS '+char(13)+
           '& Select CLDOC_F,CONCEPTO,CANTIDAD,CANTIDAD,CANTIDAD,FEDOC_F from "'+RUTA(8)+'\retiros.dbf"'+char(13)+
           '? (CLDOC_F=CLDOC_F)'+'¿'+char(13)+
           '!CLDOC_F'+char(13)+
           '%e           c            t           t           t           c'+char(13)+
           '#DOCUMENTOS  CLAVE        IMPORTE       SUBTOTAL      IMPUESTO      FECHA     '+char(13)+
           '@'+char(13)+


           '<14-24'+char(13)+

           '@'+char(13)
           ,1);

ponedatos;

end;

procedure TFormaCapturaRapida.VerCampoTara1Click(Sender: TObject);
//var
//arch:TextFile;
begin

if FileExists(leeruta+'\especial.cnf') then
WinExec(PChar('notepad.exe  '+ leeruta+'\especial.cnf'),SW_SHOWNORMAL)
else
WinExec(PChar('notepad.exe  '+leeruta+'\especial.cnf'),SW_SHOWNORMAL);

{VerCampoTara1.Checked:=not VerCampoTara1.Checked;

if VerCampoTara1.Checked then
begin
 EditTARA.Visible:=True;
 EditClave.Width:=EditClave.Width-EditTARA.Width-5;

end; }

MuestraMensaje('Para que este cambio se lleve a cabo reinicie el sistema...');

end;


procedure TFormaCapturaRapida.EditTARAKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
case key of
13:
begin
EntraEmpaque;
end;

end;//case

end;

procedure TFormaCapturaRapida.FormPaint(Sender: TObject);
begin
//AngleTextOut(Panel5.Canvas,'PAGADO',250,120,45);
end;






procedure TFormaCapturaRapida.CopiadeDocumento1Click(Sender: TObject);
var
Aux:string[1];
begin
//*hace una coipia del documento
FormaAdvertencia:=TFormaAdvertencia.Create(Application);
FormaAdvertencia.Label1.Caption:='Esta Seguro que Desea UNA COPIA EXACTA DEL DOCUMENTO '+EditCLDOC_F.Text+' ?' ;
FormaAdvertencia.ShowModal;
//FormaAdvertencia.Label1.Caption:='Esta Seguro que Desea ELIMINAR este Documento ?';
if FormaAdvertencia.Tag=1 then
begin

MovimientoBorrado:=0;
RangoDocumentos:=False;
Aux:=Base.Text;
Orig:=Aux+EditCLDOC_F.Text;

bufercambios('C');
generadocumento('R');
activa;
EditCLDOC_F.SetFocus;
local:=True;
TablaFacturaE.Edit;
activabotones(False,False,True,False,False,False,True);
BotonTerminaVenta.Enabled:=BotonGuardar.Enabled;
BotonNuevaVenta.Enabled:=BotonNuevo.Enabled;

BotonRedondo1.Enabled:=BotonNuevaVenta.Enabled;
BotonRedondo2.Enabled:=BotonTerminaVenta.Enabled;

end;
end;

procedure TFormaCapturaRapida.Tabulador1Click(Sender: TObject);
begin
WinExec('Tabulador.exe',SW_SHOWNORMAL);
end;

procedure TFormaCapturaRapida.EditIMIM1_FKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
if (key=13) or (key=40) then
begin

if EditDESFI_F.Enabled then
begin
indices:=indices+1;
cursor1;
end
else
begin
Detalle.SetFocus;
end;


end;
if key=38 then
begin
indices:=indices-1;
cursor1;
end;

end;

procedure TFormaCapturaRapida.CorteDetallado1Click(Sender: TObject);
//var
//desde,hastavalor:string;
//ExisteReporte:integer;
//EL_IVA:string;
begin

with Sender as TMenuItem do
ReporteSIF(Caption,'CLDOC_FD','FEDOC_FD','FEDOC_FD',TablaFacturaE.FieldByName('CLDOC_F').AsString,TablaFacturaD,
           '$'+Caption+char(13)+
//         '& Select CLDOC_FD,CLPRO_FD,CANTI_FD,CANTI_FD*COPRO_FD,CANTI_FD*(PUNPR_FD*(1-(PDES1_FD/100))*(1-(PDES2_FD/100))),(CANTI_FD*(PUNPR_FD*(1-(PDES1_FD/100))*(1-(PDES2_FD/100))*(1-(PDES3_FD/100))))-(CANTI_FD*COPRO_FD),FEDOC_FD from "'+ruta(8)+'\'+TablaFacturad.TableName+'"'+char(13)+
           '& Select CLDOC_FD,CLPRO_FD,DEPRO_FD,CANTI_FD,PUNPR_FD,IMPOR_FD,FEDOC_FD from "'+ruta(8)+'\'+TablaFacturad.TableName+'"'+char(13)+
           '?(TREGI_FD<>"C" OR TREGI_FD IS NULL) '+'¿'+char(13)+
           '!cldoc_fd'+char(13)+
            '>cldoc_fd'+char(13)+
           '%e          c               c                    t               f              t               c'+char(13)+
           '#DOCUMENTO  PRODUCTO        DESCRIPCIÓN          CANTIDAD        PRECIO         IMPORTE         FECHA     '+char(13)+
           '@'+char(13)
           ,0);

ponedatos;
end;

procedure TFormaCapturaRapida.CorteComparativo1Click(Sender: TObject);
//var
//desde,hastavalor:string;
//ExisteReporte:integer;
//EL_IVA:string;
begin

with Sender as TMenuItem do
ReporteSIF(Caption,'CLDOC_FD','FEDOC_FD','FEDOC_FD',TablaFacturaE.FieldByName('CLDOC_F').AsString,TablaFacturaD,
           '$'+Caption+char(13)+
//         '& Select CLDOC_FD,CLPRO_FD,CANTI_FD,CANTI_FD*COPRO_FD,CANTI_FD*(PUNPR_FD*(1-(PDES1_FD/100))*(1-(PDES2_FD/100))),(CANTI_FD*(PUNPR_FD*(1-(PDES1_FD/100))*(1-(PDES2_FD/100))*(1-(PDES3_FD/100))))-(CANTI_FD*COPRO_FD),FEDOC_FD from "'+ruta(8)+'\'+TablaFacturad.TableName+'"'+char(13)+
//& Select CLDOC_FD,CLPRO_FD,CANTI_FD,PUNPR_FD,IMPOR_FD,FEDOC_FD from  "'+ruta(8)+'\'+TablaMovInve.TableName+'" WHERE (TIMOV_MI>50) ¿  UNION '+'Select CLDOC_MI,CLPRO_MI,DESCR_MI,CANTI_MI*(-1),COSUN_MI,FEDOC_MI,TIMOV_MI from "'+ruta(8)+'\'+TablaMovInve.TableName+'"'+char(13)+

           '& Select CLDOC_FD,CLPRO_FD,CANTI_FD,PUNPR_FD,IMPOR_FD,FEDOC_FD from "'+ruta(8)+'\'+TablaFacturad.TableName+'" WHERE (TREGI_FD<>"C" OR TREGI_FD IS NULL) ¿  UNION '+'Select CLDOC_FD,CLPRO_FD,CANTI_FD,PUNPR_FD,IMPOR_FD,FEDOC_FD from "'+ruta(8)+'\'+TablaFacturaE.TableName+'"'+char(13)+
           '?(STATU_F<>"C" OR STATU_F IS NULL) '+'¿'+char(13)+
           '!cldoc_fd'+char(13)+
           '%e          c            t               f              t               c'+char(13)+
           '#DOCUMENTO  PRODUCTO     CANTIDAD        PRECIO         IMPORTE         FECHA     '+char(13)+
           '@'+char(13)
           ,0);

ponedatos;
end;

procedure TFormaCapturaRapida.UtilidadporProductoLinea1Click(
  Sender: TObject);
begin
with Sender as TMenuItem do
ReporteSIF(Caption,'CLDOC_FD','FEDOC_FD','FEDOC_FD',TablaFacturaE.FieldByName('CLDOC_F').AsString,TablaFacturaD,
           '$'+Caption+char(13)+
//         '& Select CLDOC_FD,CLPRO_FD,CANTI_FD,CANTI_FD*COPRO_FD,CANTI_FD*(PUNPR_FD*(1-(PDES1_FD/100))*(1-(PDES2_FD/100))),(CANTI_FD*(PUNPR_FD*(1-(PDES1_FD/100))*(1-(PDES2_FD/100))*(1-(PDES3_FD/100))))-(CANTI_FD*COPRO_FD),FEDOC_FD from "'+ruta(8)+'\'+TablaFacturad.TableName+'"'+char(13)+
           '& Select I.LIPRO_I,F.CLDOC_FD,F.CLPRO_FD,F.CANTI_FD,F.CANTI_FD*F.COPRO_FD,(F.CANTI_FD*F.PREDE_FD),(F.CANTI_FD*F.PREDE_FD)-(F.CANTI_FD*F.COPRO_FD),((PREDE_FD-COPRO_FD)/PREDE_FD)*100,F.FEDOC_FD,I.CLPRO_I from "'+ruta(8)+'\'+TablaFacturad.TableName+'" AS F,'+'"'+ruta(8)+'\'+TablaInventario.TableName+'" as I '+char(13)+
           '?(TREGI_FD<>"C" OR TREGI_FD IS NULL) and (F.CLPRO_FD=I.CLPRO_I) '+'¿'+char(13)+
           '!LIPRO_I'+char(13)+
           '>LIPRO_I'+char(13)+
           '%c         e          c            t               t              t                  t             m                 c'+char(13)+
           '#LINEA     DOCUMENTO  PRODUCTO     CANTIDAD        COSTO_X_CANT.  PRECIO_X_CANT.     UTILIDAD      %PROM.UTILID.     FECHA     '+char(13)+
           '@'+char(13)
           ,0);

ponedatos;

end;


procedure TFormaCapturaRapida.CorteZRESUMEN1Click(Sender: TObject);
begin
//*******

with Sender as TMenuItem do
ReporteSIF(Caption+' VENTAS REMISION ','CLDOC_F','FEDOC_F','FEDOC_F',TablaFacturaE.FieldByName('CLDOC_F').AsString,TablaFacturaE,
           '$'+Caption+' REMISIONES '+UpperCase(NombreUsuario(usuario.Caption,leeruta))+' HORA : '+TimeToStr(Now)+char(13)+
           '& Select cldoc_f,CLCLI_F,imtod_f,SUBTO_F,IMIM2_F,FEDOC_F from "'+RUTA(8)+'\remision.dbf"'+char(13)+
           '?((STATU_F<>"C" OR STATU_F IS NULL)AND REMIS_F IS NULL ) '+'¿'+char(13)+
           '!cldoc_f'+char(13)+
           '%e           c        t           t           t           c'+char(13)+
           '#DOCUMENTOS  CLAVE        IMPORTE       SUBTOTAL      IMPUESTO      FECHA     '+char(13)+
           '@'+char(13)+

           '$'+Caption+' FACTURADAS '+char(13)+
           '& Select cldoc_f,CLCLI_F,imtod_f,SUBTO_F,IMIM2_F,FEDOC_F from "'+RUTA(8)+'\remision.dbf"'+char(13)+
           '?((STATU_F<>"C" OR STATU_F IS NULL)AND REMIS_F>" ") '+'¿'+char(13)+
           '!cldoc_f'+char(13)+
           '%e           c        t           t           t           c'+char(13)+
           '#DOCUMENTOS  CLAVE        IMPORTE       SUBTOTAL      IMPUESTO      FECHA     '+char(13)+
           '@'+char(13)+


           '$'+Caption+' CANCELADAS '+char(13)+
           '& Select cldoc_f,CLCLI_F,imtod_f,SUBTO_F,IMIM2_F,FEDOC_F from "'+RUTA(8)+'\remision.dbf"'+char(13)+
           '?(STATU_F="C") '+'¿'+char(13)+
           '!cldoc_f'+char(13)+
           '%e           c        t           t           t           c'+char(13)+
           '#DOCUMENTOS  CLAVE        IMPORTE       SUBTOTAL      IMPUESTO      FECHA     '+char(13)+
           '@'+char(13)+

           '$'+Caption+' DEVOLUCIONES '+char(13)+
           '& Select cldoc_f,CLCLI_F,imtod_f,SUBTO_F,IMIM2_F,FEDOC_F from "'+RUTA(8)+'\devoluc.dbf"'+char(13)+
           '?(STATU_F<>"C" OR STATU_F IS NULL) '+'¿'+char(13)+
           '!cldoc_f'+char(13)+
           '%e           c        t           t           t           c'+char(13)+
           '#DOCUMENTOS  CLAVE        IMPORTE       SUBTOTAL      IMPUESTO      FECHA     '+char(13)+
           '@'+char(13)+


           '$'+Caption+' RETIROS '+char(13)+
           '& Select CLDOC_F,CONCEPTO,CANTIDAD,CANTIDAD,CANTIDAD,FEDOC_F from "'+RUTA(8)+'\retiros.dbf"'+char(13)+
           '? (CLDOC_F=CLDOC_F)'+'¿'+char(13)+
           '!CLDOC_F'+char(13)+
           '%e           c            t           t           t           c'+char(13)+
           '#DOCUMENTOS  CLAVE        IMPORTE       SUBTOTAL      IMPUESTO      FECHA     '+char(13)+
           '@'+char(13)+


           '<14-24'+char(13)+

           '@'+char(13)
           ,2);

ponedatos;






end;

procedure TFormaCapturaRapida.CursorenCliente1Click(Sender: TObject);
begin

try
//ShowMessage(IntToStr(BotonGuardar.Tag));
if (BotonRedondo2.Enabled) then
EditCLCLI_F.SetFocus;

except
end;

end;

procedure TFormaCapturaRapida.ReporteFPGC1Click(Sender: TObject);
begin

with Sender as TMenuItem do
ReporteSIF(Caption,'CLDOC_FD','FEDOC_FD','FEDOC_FD',TablaFacturaE.FieldByName('CLDOC_F').AsString,TablaFacturaD,
           '$'+Caption+char(13)+
           '& Select CLDOC_FD,CLPRO_FD,CANTI_FD,DEPRO_FD,FPGCX_FD,FEDOC_FD from "'+ruta(8)+'\'+TablaFacturad.TableName+'"'+char(13)+
           '?(TREGI_FD<>"C" OR TREGI_FD IS NULL) AND (FPGCX_FD>0) '+'¿'+char(13)+
           '!cldoc_fd'+char(13)+
           '%e          c            t               c                         t             c'+char(13)+
           '#DOCUMENTO  PRODUCTO     CANTIDAD        DESCRIPCION               FPGC          FECHA     '+char(13)+
           '@'+char(13)
           ,0);

ponedatos;

end;

end.


