First commit 25/01/2002
This commit is contained in:
381
Main.cpp
Normal file
381
Main.cpp
Normal file
@ -0,0 +1,381 @@
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#include <vcl.h>
|
||||
#include <io.h>
|
||||
#include <stdio.h>
|
||||
#include <inifiles.hpp>
|
||||
#pragma hdrstop
|
||||
|
||||
#include "Main.h"
|
||||
//---------------------------------------------------------------------------
|
||||
#pragma package(smart_init)
|
||||
#pragma resource "*.dfm"
|
||||
TForm1 *Form1;
|
||||
//---------------------------------------------------------------------------
|
||||
__fastcall TForm1::TForm1(TComponent* Owner)
|
||||
: TForm(Owner)
|
||||
{
|
||||
ImpName = "datos-imp\\default";
|
||||
LoadDataBase( ImpName );
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TForm1::LoadDataBase( AnsiString DB )
|
||||
{
|
||||
TbImp->Active = false;
|
||||
try {
|
||||
TbImp->TableName = DB+".db";
|
||||
TbImp->Active = true;
|
||||
|
||||
// Cargamos la configuraci<63>n de esta asociaci<63>n...
|
||||
TIniFile *pIniFile = new TIniFile(DB+".ini");
|
||||
ComboBox1->ItemIndex = pIniFile->ReadInteger("columnas", "cantidad", 1);
|
||||
ComboBox2->ItemIndex = pIniFile->ReadInteger("columnas", "posID", 1);
|
||||
ComboBox3->ItemIndex = pIniFile->ReadInteger("columnas", "posDESCR", 2);
|
||||
ComboBox4->ItemIndex = pIniFile->ReadInteger("columnas", "posPVD", 3);
|
||||
viudos->Checked = pIniFile->ReadBool("opciones", "comprobarViudos", true);
|
||||
anuevos->Checked = pIniFile->ReadBool("opciones", "anadirNuevos", false);
|
||||
FileToImport->Text = pIniFile->ReadString("opciones", "origen", "");
|
||||
delete pIniFile;
|
||||
} catch(...) {
|
||||
// nothing
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TForm1::SaveCFG( AnsiString DB )
|
||||
{
|
||||
// Guardamos la configuraci<63>n de esta asociaci<63>n...
|
||||
TIniFile *pIniFile = new TIniFile(DB+".ini");
|
||||
pIniFile->WriteInteger("columnas", "cantidad", ComboBox1->ItemIndex);
|
||||
pIniFile->WriteInteger("columnas", "posID", ComboBox2->ItemIndex);
|
||||
pIniFile->WriteInteger("columnas", "posDESCR", ComboBox3->ItemIndex);
|
||||
pIniFile->WriteInteger("columnas", "posPVD", ComboBox4->ItemIndex);
|
||||
pIniFile->WriteBool("opciones", "comprobarViudos", viudos->Checked);
|
||||
pIniFile->WriteBool("opciones", "anadirNuevos", anuevos->Checked);
|
||||
pIniFile->WriteString("opciones", "origen", FileToImport->Text);
|
||||
delete pIniFile;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TForm1::TbImpBeforeOpen(TDataSet *DataSet)
|
||||
{
|
||||
if ( access( (TbImp -> TableName).c_str(), 0 ) != 0 )
|
||||
{
|
||||
// Usamos la propiedad FielDefs para definir
|
||||
// las columnas que contendr<64> la tabla
|
||||
TbImp -> FieldDefs -> Clear();
|
||||
|
||||
/********************\
|
||||
|* Datos B<>sicos *|
|
||||
\********************/
|
||||
TbImp -> FieldDefs -> Add("idS", ftString, 15, false );
|
||||
TbImp -> FieldDefs -> Add("DescS", ftString, 50, false );
|
||||
TbImp -> FieldDefs -> Add("PVD", ftCurrency, 0, false );
|
||||
TbImp -> FieldDefs -> Add("status", ftInteger, 0, false );
|
||||
// 0 -- OK
|
||||
// 1 -- Origen sin destino ( EN LOS PRODUCTOS A IMPORTAR no esta este )
|
||||
// 2 -- Destino sin origen ( PRODUCTO a IMPORTAR no lo tenemos en lista )
|
||||
|
||||
TbImp -> FieldDefs -> Add("idT", ftInteger, 0, false );
|
||||
TbImp -> FieldDefs -> Add("DescT", ftInteger, 0, false );
|
||||
|
||||
TbImp -> IndexDefs-> Clear();
|
||||
|
||||
TbImp->IndexDefs->Add("Primary", "idS", TIndexOptions() << ixPrimary << ixUnique);
|
||||
|
||||
// Creamos la base...
|
||||
TbImp -> CreateTable();
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TForm1::MergeImport( AnsiString Fich )
|
||||
{
|
||||
FILE *iFich;
|
||||
char buff[500];
|
||||
try {
|
||||
if ( viudos->Checked )
|
||||
{
|
||||
// Ponemos a estado 2(Viudos) TODOS los registros
|
||||
TbImp->First();
|
||||
while( !TbImp->Eof )
|
||||
{
|
||||
TbImp->Edit();
|
||||
TbImp->FieldByName("status")->AsInteger = 2;
|
||||
TbImp->Post();
|
||||
TbImp->Next();
|
||||
}
|
||||
}
|
||||
|
||||
AnsiString IDs, Desc; Currency PVD;
|
||||
// Abrimos el fichero
|
||||
iFich = fopen(Fich.c_str(), "r" );
|
||||
while( !feof(iFich) )
|
||||
{
|
||||
fgets( buff, 500, iFich );
|
||||
// Decodificamos la cadena...
|
||||
if ( DecoCampos( buff,
|
||||
ComboBox2->ItemIndex, IDs,
|
||||
ComboBox3->ItemIndex, Desc,
|
||||
ComboBox4->ItemIndex, PVD ) )
|
||||
{
|
||||
// Buscamos si el IDs existe dentro de las asociaciones
|
||||
if ( ! (TbImp -> Locate( "idS", IDs, TLocateOptions() ) ) )
|
||||
{
|
||||
if ( anuevos->Checked )
|
||||
{
|
||||
// Si no esta, lo agregamos...
|
||||
TbImp -> Insert();
|
||||
TbImp -> FieldByName( "idS" ) -> AsString = IDs;
|
||||
TbImp -> FieldByName( "DescS" ) -> AsString = Desc;
|
||||
TbImp -> FieldByName( "status" ) -> AsInteger = 1;
|
||||
TbImp -> FieldByName( "PVD" ) -> AsCurrency = PVD;
|
||||
TbImp -> Post();
|
||||
}
|
||||
} else {
|
||||
TbImp -> Edit();
|
||||
TbImp -> FieldByName( "PVD" ) -> AsCurrency = PVD;
|
||||
TbImp -> FieldByName( "status" ) -> AsInteger = (TbImp->FieldByName("idT")->AsInteger)?0:2;
|
||||
TbImp -> Post();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fclose(iFich);
|
||||
|
||||
}catch(...){
|
||||
ShowMessage("No fue posible importar los datos" );
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool __fastcall TForm1::DecoCampos( char *datos,
|
||||
int posID, AnsiString &ID,
|
||||
int posDesc, AnsiString &Desc,
|
||||
int posPVD, Currency &PVD )
|
||||
{
|
||||
bool dev = false; char buff[500];
|
||||
if ( ObtenCampo( datos, posID, buff ) )
|
||||
{
|
||||
ID = AnsiString(buff).Trim();
|
||||
if ( ObtenCampo( datos, posDesc, buff ) )
|
||||
{
|
||||
Desc = AnsiString(buff).Trim();
|
||||
if ( ObtenCampo( datos, posPVD, buff ) )
|
||||
{
|
||||
EliminaCaracter( buff, '.' );
|
||||
AnsiString sPVD = AnsiString(buff).Trim();
|
||||
try
|
||||
{
|
||||
PVD = sPVD.ToDouble();
|
||||
dev = true;
|
||||
} catch(...) {
|
||||
PVD = 0;
|
||||
dev = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return dev;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool __fastcall TForm1::EliminaCaracter( char *datos, char c )
|
||||
{
|
||||
char *ini, *cdatos;
|
||||
ini = datos;
|
||||
cdatos = datos;
|
||||
while ( *ini != '\0' )
|
||||
if ( *ini != c ) *(cdatos++)= *(ini++); else ini++;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool __fastcall TForm1::ObtenCampo( char *datos, int pos, char *dest )
|
||||
{
|
||||
char *inicio, *cdest;
|
||||
|
||||
inicio = datos;
|
||||
cdest = dest;
|
||||
|
||||
// ATENCION DEBE SER TEXTO - - T A B U L A D O - -
|
||||
// Nos saltamos todos los campos iniciales...
|
||||
while ( *inicio != '\0' && pos > 0 )
|
||||
if ( *(inicio++) == '\t' ) pos--;
|
||||
|
||||
if ( *inicio == '\0' )
|
||||
return false;
|
||||
|
||||
while ( *inicio != '\0' && *inicio != '\t' )
|
||||
*(cdest++) = *(inicio++);
|
||||
|
||||
*cdest = '\0';
|
||||
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TForm1::TbImpCalcFields(TDataSet *DataSet)
|
||||
{
|
||||
// Atencion: Los incrementos que aplicamos son LINEALES
|
||||
TbImp->FieldByName("inc")->AsCurrency = TbImp->FieldByName("PVD")->AsCurrency - TbImp->FieldByName("PVDa")->AsCurrency;
|
||||
TbImp->FieldByName("newPVP")->AsCurrency = TbImp->FieldByName("PVP")->AsCurrency + TbImp->FieldByName("inc")->AsCurrency;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TForm1::Salir1Click(TObject *Sender)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TForm1::Acercade1Click(TObject *Sender)
|
||||
{
|
||||
ShowMessage( "www . infdj .com\n\tImportador De Datos Externos\n\tImporta las listas de precio de tus fabricantes hacia tus tarifas actualizando estas de forma totalmente autom<6F>tica.\nhttp://jd.infdj.com" );
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TForm1::BarradeEstado1Click(TObject *Sender)
|
||||
{
|
||||
StatusBar1->Visible = !StatusBar1->Visible;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TForm1::BarradeHerramientas1Click(TObject *Sender)
|
||||
{
|
||||
CoolBar1->Visible = !CoolBar1->Visible;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TForm1::ToolButton1Click(TObject *Sender)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TForm1::ConfigurarImportacin1Click(TObject *Sender)
|
||||
{
|
||||
PageControl1->ActivePage = TabSheet1;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TForm1::CargarDatosacotejar1Click(TObject *Sender)
|
||||
{
|
||||
OpenDialog1->Title = "Datos a importar";
|
||||
OpenDialog1->InitialDir = GetCurrentDir();
|
||||
OpenDialog1->Filter = "Datos Tabulados (*.txt)|*.TXT";
|
||||
if (OpenDialog1->Execute())
|
||||
{
|
||||
if (FileExists(OpenDialog1->FileName))
|
||||
{
|
||||
FileToImport->Text = OpenDialog1->FileName;
|
||||
SaveCFG( ImpName );
|
||||
MergeImport(OpenDialog1->FileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TForm1::NuevaAsociacion1Click(TObject *Sender)
|
||||
{
|
||||
SaveDialog1->Options.Clear();
|
||||
SaveDialog1->InitialDir = GetCurrentDir();
|
||||
SaveDialog1->Filter = "Asociaciones (*.ini)|*.INI";
|
||||
SaveDialog1->FilterIndex = 0;
|
||||
if (SaveDialog1->Execute())
|
||||
{
|
||||
ImpName = SaveDialog1->FileName;
|
||||
AsociacionActual->Caption = ExtractFileName( ImpName );
|
||||
LoadDataBase( ImpName );
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TForm1::Cargarasociaciones1Click(TObject *Sender)
|
||||
{
|
||||
OpenDialog1->Options.Clear();
|
||||
OpenDialog1->InitialDir = GetCurrentDir();
|
||||
OpenDialog1->Filter = "Asociaciones (*.ini)|*.INI";
|
||||
OpenDialog1->FilterIndex = 0;
|
||||
if (OpenDialog1->Execute())
|
||||
{
|
||||
ImpName = OpenDialog1->FileName.SubString(1,OpenDialog1->FileName.Length()-4) ;
|
||||
AsociacionActual->Caption = ExtractFileName( ImpName );
|
||||
LoadDataBase( ImpName );
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender,
|
||||
const TRect &Rect, int DataCol, TColumn *Column,
|
||||
TGridDrawState State)
|
||||
{
|
||||
if ( TbImp->FieldByName("status")->AsInteger == 0 )
|
||||
{
|
||||
if ( TbImp->FieldByName("PVD")->AsCurrency > TbImp->FieldByName("PVDa")->AsCurrency )
|
||||
{
|
||||
DBGrid1 -> Canvas -> Font -> Color = clMaroon;
|
||||
} else {
|
||||
if ( TbImp->FieldByName("PVD")->AsCurrency < TbImp->FieldByName("PVDa")->AsCurrency )
|
||||
DBGrid1 -> Canvas -> Font -> Color = clGreen;
|
||||
}
|
||||
DBGrid1 -> DefaultDrawColumnCell( Rect, DataCol, Column, State );
|
||||
} else {
|
||||
DBGrid1 -> Canvas -> Font -> Color = clWindowText;
|
||||
}
|
||||
|
||||
if ( Column -> ID == 2 )
|
||||
{
|
||||
switch( TbImp->FieldByName("status")->AsInteger )
|
||||
{
|
||||
case 1: // Origen sin destino
|
||||
DBGrid1 -> Canvas -> Draw( Rect.Left,Rect.Top, OsD->Picture->Graphic );
|
||||
break;
|
||||
case 2: // Destino sin origen
|
||||
DBGrid1 -> Canvas -> Draw( Rect.Left,Rect.Top, DsO->Picture->Graphic );
|
||||
break;
|
||||
default: // OK!
|
||||
DBGrid1 -> Canvas -> Brush -> Color = clWindow;
|
||||
DBGrid1 -> Canvas -> FillRect( Rect );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TForm1::FusionarNuevosdatos1Click(TObject *Sender)
|
||||
{
|
||||
int pid;
|
||||
if (MessageDlg("Se actualizar<61>n todos los productos cazados de la lista. <20>Desea continuar?", mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0) == mrYes)
|
||||
{
|
||||
TbImp->First(); // Recorremos toda la lista de asociaciones
|
||||
while( !TbImp->Eof )
|
||||
{
|
||||
// Por cada pareja CAZADA
|
||||
pid = TbImp->FieldByName("idT")->AsInteger;
|
||||
if ( pid > 0 && TbDatosT->Locate( "ForcedIndex", pid, TLocateOptions() ) )
|
||||
{
|
||||
// Actualizamos los nuevos precios
|
||||
TbDatosT->Edit();
|
||||
TbDatosT->FieldByName("Precio Venta 1")->AsCurrency = TbImp->FieldByName("newPVP")->AsCurrency;
|
||||
TbDatosT->FieldByName("Precio Costo")->AsCurrency = TbImp->FieldByName("PVD")->AsCurrency;
|
||||
TbDatosT->Post();
|
||||
}
|
||||
TbImp->Next();
|
||||
}
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
void __fastcall TForm1::VersoloNOAsociados1Click(TObject *Sender)
|
||||
{
|
||||
((TMenuItem*)Sender)->Checked = true;
|
||||
TbImp->Filter = "[idT] <= 0";
|
||||
TbImp->Filtered = true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TForm1::FiltrarporNoAsociados1Click(TObject *Sender)
|
||||
{
|
||||
((TMenuItem*)Sender)->Checked = true;
|
||||
TbImp->Filtered = false;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TForm1::FiltrarporAsociados1Click(TObject *Sender)
|
||||
{
|
||||
((TMenuItem*)Sender)->Checked = true;
|
||||
TbImp->Filter = "[idT] > 0";
|
||||
TbImp->Filtered = true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user