Update of /cvsroot/icpac/personalCentral/cenInventario
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27367/cenInventario
Added Files:
AlmaProd.cpp AlmaProd.h Almacen.cpp Almacen.h ConceptoMI.cpp
ConceptoMI.h Equivalencia.cpp Linea.cpp Linea.h Marca.cpp
Marca.h MovimientoI.cpp MovimientoI.h Presentacion.cpp
Presentacion.h Producto.cpp Producto.h cenInventario.bpf
cenInventario.bpr cenInventario.cpp cenInventario.res
Log Message:
Inventarios
--- NEW FILE: Marca.cpp ---
/***************************************************************************
Marca.cpp - description
-------------------
begin : Mon Jan 5 2004
copyright : (C) 2000-2005 by carlos javier lopez cruz
email : ic...@co...
***************************************************************************/
// ------------------------------------------------------------------
#include "Bd.h"
#include "Marca.h"
#include <memory>
// ------------------------------------------------------------------
// Clasificacion de compañias
//
Marca::Marca()
:PObject()
{
//
TipoFind = FINDCVE;
}
// ------------------------------------------------------------------
_override Cadena* Marca::SQL(int cual)
{
Sql = " SELECT cvemarca";
Sql += " FROM marcas";
Sql += " ORDER BY cvemarca";
return &Sql;
}
// ------------------------------------------------------------------
_override int Marca::Save(int Opc)
{
int ok;
try
{
baseD->QValClear();
if ( Opc == ABC_ALTA )
{
baseD->QValAdd (" INSERT INTO marcas (cvemarca, cveusuario)");
baseD->QValAdd (" VALUES (:cve, :usu)");
}
//
baseD->QValPmAsS ("cve", CveMarca.c_str());
baseD->QValPmAsS ("usu", CveUsuario.c_str());
ok = baseD->QValExec();
}
catch ( EDatabaseError &e )
{
ok = 0;
}
return ok;
}
// ------------------------------------------------------------------
//
_override int Marca::Delete ()
{
int ok;
Cadena aux;
try
{
// Borramos la clasificacion
//
baseD->QValClear();
baseD->QValAdd ("DELETE FROM marcas WHERE cvemarca = :cve");
baseD->QValPmAsS ("cve", CveMarca.c_str());
ok = baseD->QValExec();
}
catch ( EDatabaseError &e )
{
ok = 0;
}
return ok;
}
// ------------------------------------------------------------------
_override void Marca::AsigCmpos()
{
CveMarca = baseD->QValFByNameAsS("cvemarca");
}
// ------------------------------------------------------------------
//
_override int Marca::FindFirst()
{
int ok;
try
{
if ( TipoFind != FINDCVE || !CveMarca.IsEmpty() )
{
baseD->QValClear();
baseD->QValAdd (" SELECT cvemarca FROM marcas");
if ( TipoFind == FINDCVE )
{
baseD->QValAdd (" WHERE cvemarca = :cve");
baseD->QValPmAsS ("cve", CveMarca.c_str());
}
ok = baseD->QValOpen();
ok = ok && baseD->QValFirst();
if ( ok )
AsigCmpos ();
}
}
catch ( EDatabaseError &e )
{
ok = 0;
}
return ok;
}
// ------------------------------------------------------------------
//
_override int Marca::FindNext ()
{
int ok;
try
{
ok = baseD->QValNext ();
if ( ok )
AsigCmpos ();
}
catch ( EDatabaseError &e )
{
ok = 0;
}
return ok;
}
// ------------------------------------------------------------------
// Creamos la tabla de marcas
// Retorna 1 si se pudo crear
// 0 si no se pudo crear
// -1 si hubo error en la bd
//
_override int Marca::CreaTabla()
{
int ok;
try
{
baseD->QValClear();
baseD->QValAdd (" CREATE TABLE marcas");
baseD->QValAdd (" ( cvemarca char(30),");
baseD->QValAdd (" cveusuario char(10),");
baseD->QValAdd (" CONSTRAINT z PRIMARY KEY (cvemarca))");
ok = baseD->CreaTabla ("marcas");
if ( ok )
ok = RegsDefault ();
else
ActTabla ();
}
catch ( EDatabaseError &e )
{
ok = -1;
}
return ok;
}
// ******************************************************************
__declspec( dllexport ) int creaTMarcas(void);
int creaTMarcas(void)
{
std::auto_ptr<Marca> marc(new Marca());
return marc->CreaTabla ();
}
--- NEW FILE: Equivalencia.cpp ---
/***************************************************************************
Equivalencia.cpp - description
-------------------
begin : Sab Jul 9 2005
copyright : (C) 2005-2005 by carlos javier lopez cruz
email : ic...@co...
***************************************************************************/
--- NEW FILE: AlmaProd.cpp ---
/***************************************************************************
lAlmaProd.cpp - description
-------------------
begin : Dom Oct 14 2001
copyright : (C) 2001-2005 by Javier Cruz
email : ic...@co...
***************************************************************************/
/*
Última revision: Jun 2005
*/
// ------------------------------------------------------------------
#include "AlmaProd.h"
#include "Bd.h"
#include <math.h> // fabs
#include <memory>
// ------------------------------------------------------------------
//
AlmaProd::AlmaProd()
:PObject()
{
TiempoEntrega = 0.0;
Pasillo = "";
Anaquel = "";
Estante = "";
// -------
FAlm = 0;
FCual = REP_NORMAL;
FLin = "";
FProd = "";
}
// ------------------------------------------------------------------
int AlmaProd::ValExiCan ()
{
int ok;
double val;
val = Exist;
ok = FindFirst ();
if ( ok )
ok = !MAYORQ (val, Exist);
return ok;
}
// ------------------------------------------------------------------
// May 2003, hay que subir esta logica a Admin
int AlmaProd::ActdeMovI ()
{
int ok;
try {
// Actualiza existencias en Productos de almacen
//
baseD->QValClear();
baseD->QValAdd(" SELECT exist, ctoult, ctoprom FROM aalmaprod");
baseD->QValAdd(" WHERE numero = :num and clave = :cve");
baseD->QValPmAsSi("num", Numero);
baseD->QValPmAsS ("cve", Clave.c_str());
ok = baseD->QValOpen ();
ok = ok && baseD->QValFirst();
if ( ok )
{
double existe;
double costo;
double cstProm;
existe = baseD->QValFByNameAsF("exist");
costo = baseD->QValFByNameAsF("ctoult");
cstProm = baseD->QValFByNameAsF("ctoprom");
baseD->QValClear();
baseD->QValAdd(" UPDATE aalmaprod SET");
baseD->QValAdd(" exist = :exi, ctoult = :cst, ctoprom = :cp");
baseD->QValAdd(" WHERE numero = :num and clave = :cve");
baseD->QValPmAsSi("num", Numero);
baseD->QValPmAsS ("cve", Clave.c_str());
baseD->QValPmAsF ("exi", Exist+existe);
baseD->QValPmAsF ("cst", IGUALQ(CtoUlt, 0.0) ? costo : CtoUlt);
if ( !MAYORQ (Exist, 0.0) )
baseD->QValPmAsF ("cp", cstProm);
else
{
if ( !IGUALQ (Exist+existe, 0.0) )
baseD->QValPmAsF ("cp", ((existe*cstProm)+(Exist*CtoUlt))/(Exist+existe));
else
baseD->QValPmAsF ("cp", 0.0);
}
ok = baseD->QValExec();
}
}
catch ( EDatabaseError &e )
{
ok = 0;
}
return ok;
}
// ------------------------------------------------------------------
//
int AlmaProd::Save(int Opc)
{
int ok;
try {
// Inserta datos de los productos en almacen
//
baseD->QValClear();
if ( Opc == ABC_ALTA )
{
// Insertar datos a la tabla de almacenes
//
baseD->QValAdd(" INSERT INTO aalmaprod (numero, clave, exist, minimo,");
baseD->QValAdd(" maximo, xrecibir, xsurtir, ctoprom,");
baseD->QValAdd(" ctoult, precpub, precmin, unient, moneda, porcutil,");
baseD->QValAdd(" tiempoent, pasillo, anaquel, estante)");
baseD->QValAdd(" VALUES (:num, :cve, :exi, :min, :max,");
baseD->QValAdd(" :xrec, :xsur, :cpr, :cul, :pp, :pm, :unie,");
baseD->QValAdd(" :mone, :pu, :tim, :pa, :an, :es)");
}
else
{
baseD->QValAdd(" UPDATE aalmaprod SET");
baseD->QValAdd(" exist = :exi, minimo = :min,");
baseD->QValAdd(" maximo = :max, xrecibir = :xrec,");
baseD->QValAdd(" xsurtir = :xsur, ctoprom = :cpr,");
baseD->QValAdd(" ctoult = :cul, precpub = :pp,");
baseD->QValAdd(" precmin = :pm, unient = :unie, moneda = :mone,");
baseD->QValAdd(" porcutil = :pu, tiempoent = :tim, pasillo = :pa, anaquel = :an, estante = :es");
baseD->QValAdd(" WHERE numero = :num and clave = :cve");
}
baseD->QValPmAsSi("num", Numero);
baseD->QValPmAsS ("cve", Clave.c_str());
baseD->QValPmAsF ("exi", Exist);
baseD->QValPmAsF ("min", Minimo);
baseD->QValPmAsF ("max", Maximo);
baseD->QValPmAsF ("xrec", XRecibir);
baseD->QValPmAsF ("xsur", XSurtir);
baseD->QValPmAsF ("cpr", CtoProm);
baseD->QValPmAsF ("cul", CtoUlt);
baseD->QValPmAsF ("pp", PrecPub);
baseD->QValPmAsF ("pm", PrecMin);
baseD->QValPmAsS ("unie", UniEnt.c_str());
baseD->QValPmAsS ("mone", Moneda.c_str());
baseD->QValPmAsF ("pu", PorcU);
baseD->QValPmAsF ("tim", TiempoEntrega);
baseD->QValPmAsS ("pa", Pasillo.c_str());
baseD->QValPmAsS ("an", Anaquel.c_str());
baseD->QValPmAsS ("es", Estante.c_str());
ok = baseD->QValExec();
}
catch ( EDatabaseError &e )
{
ok = 0;
}
return ok;
}
// ------------------------------------------------------------------
// Delete el producto en el almacén
// Oct 2002, si Numero == 0, suponemos que se quiere borrar de todos
// los almacenes
//
int AlmaProd::Delete ()
{
int ok;
try
{
//
baseD->QValClear();
baseD->QValAdd(" DELETE FROM aalmaprod");
if ( Numero == 0 )
baseD->QValAdd(" WHERE clave = :cve");
else
{
baseD->QValAdd(" WHERE numero = :num and clave = :cve");
baseD->QValPmAsSi("num", Numero);
}
baseD->QValPmAsS ("cve", Clave.c_str());
ok = baseD->QValExec();
}
catch ( EDatabaseError &e )
{
ok = 0;
}
return ok;
}
// ------------------------------------------------------------------
//
int AlmaProd::iAsigCmpos (TQuery* Q)
{
Numero = baseD->QValFByNameAsI("numero");
Clave = baseD->QValFByNameAsS("clave");
Exist = baseD->QValFByNameAsF("exist");
Minimo = baseD->QValFByNameAsF("minimo");
Maximo = baseD->QValFByNameAsF("maximo");
XRecibir = baseD->QValFByNameAsF("xrecibir");
XSurtir = baseD->QValFByNameAsF("xsurtir");
CtoProm = baseD->QValFByNameAsF("ctoprom");
CtoUlt = baseD->QValFByNameAsF("ctoult");
PrecPub = baseD->QValFByNameAsF("precpub");
PrecMin = baseD->QValFByNameAsF("precmin");
UniEnt = baseD->QValFByNameAsS("unient");
Moneda = baseD->QValFByNameAsS("moneda");
PorcU = baseD->QValFByNameAsF("porcutil");
TiempoEntrega = baseD->QValFByNameAsF("tiempoent");
Pasillo = baseD->QValFByNameAsS("pasillo");
Anaquel = baseD->QValFByNameAsS("anaquel");
Estante = baseD->QValFByNameAsS("estante");
return 1;
}
// ------------------------------------------------------------------
//
int AlmaProd::FindFirst()
{
int ok;
ok = Numero > 0 && Numero < 100;
ok = ok && Clave != "" && !Clave.EsBlancos();
if ( !ok )
return 0;
try {
// Buscamos el almacen
//
baseD->QValClear();
baseD->QValAdd(" SELECT numero, clave, exist, minimo,");
baseD->QValAdd(" maximo, xrecibir, xsurtir, ctoprom,");
baseD->QValAdd(" ctoult, precpub, precmin, unient, moneda,");
baseD->QValAdd(" porcutil, tiempoent, pasillo, anaquel, estante");
baseD->QValAdd(" FROM aalmaprod");
baseD->QValAdd(" WHERE numero = :num and clave = :cve");
baseD->QValPmAsSi("num", Numero);
baseD->QValPmAsS ("cve", Clave.c_str());
ok = baseD->QValOpen ();
ok = ok && baseD->QValFirst();
if ( ok )
iAsigCmpos ();
}
catch ( EDatabaseError &e )
{
ok = 0;
}
return ok;
}
// ------------------------------------------------------------------
// Para indicar la sentencia para las consultas
//
Cadena* AlmaProd::SQL(int cual)
{
// filtrado
if ( cual == 0 )
{
Sql = " SELECT al.numero, al.clave, al.exist, p.descrip";
Sql += " FROM aalmaprod as al, productos as p";
Sql += " WHERE al.clave = p.clave";
if ( Numero != 0 )
Sql += " AND numero = :num";
}
else if ( cual == S_PORPROD )
{
Sql = " SELECT al.clave, p.descrip, al.exist, al.numero";
Sql += " FROM aalmaprod as al, productos as p";
Sql += " WHERE al.clave = p.clave";
Sql += " ORDER BY al.clave";
}
return &Sql;
}
// --------------------------------------------------------------------------
Cadena* AlmaProd::SQL_T(int cual, TQuery* Q)
{
if ( cual == REP_VALSTC )
{
Q->SQL->Add (" SELECT numero, clave, descrip, exist, ctoult,");
Q->SQL->Add (" p.linea");
}
else if ( cual == REP_LSTP )
Q->SQL->Add (" SELECT numero, clave, descrip, precpub, precmin");
else
{
Q->SQL->Add (" SELECT numero, clave, descrip, exist, minimo, maximo,");
Q->SQL->Add (" p.linea");
}
Q->SQL->Add (" FROM aalmaprod as a, productos as p" );
Q->SQL->Add (" WHERE a.clave = p.clave");
Q->SQL->Add (" AND numero = :alm");
if ( FCual == REP_MAX )
{
Q->SQL->Add (" AND maximo <> 0");
Q->SQL->Add (" AND exist > maximo");
}
else if ( FCual == REP_MIN )
{
Q->SQL->Add (" AND minimo <> 0");
Q->SQL->Add (" AND exist < minimo");
}
FLin.Trim();
if ( !FLin.IsEmpty() )
{
Q->SQL->Add (" AND p.linea = :lin");
Q->Params->ParamByName ("lin")->AsString = FLin.c_str();
}
FProd.Trim();
if ( !FProd.IsEmpty() )
{
Cadena aux;
Q->SQL->Add (" AND a.clave LIKE :cve");
aux = FProd;
aux += "%";
Q->Params->ParamByName ("cve")->AsString = aux.c_str();
}
Q->Params->ParamByName ("alm")->AsSmallInt = FAlm;
return NULL;
}
// ------------------------------------------------------------------
// Ene 2003, para poder borrar un almacen hay que verificar que no
// haya productos en el
//
int AlmaProd::hayProdAlm ()
{
int ok;
try
{
baseD->QValClear();
baseD->QValAdd (" SELECT COUNT(*)");
baseD->QValAdd (" FROM aalmaprod");
baseD->QValAdd (" WHERE numero = :alm");
baseD->QValPmAsSi("alm", Numero);
ok = baseD->QValOpen();
ok = ok && baseD->QValFByPosAsI (0) > 0;
}
catch ( EDatabaseError &e )
{
ok = 1;
}
return ok;
}
// ------------------------------------------------------------------
// Oct 2001
// Creamos la tabla de productos en almacén
// Retorna 1 si se pudo crear
// 0 si no se pudo crear, porque tal vez existe
// -1 si hubo error en la bd
//
int AlmaProd::CreaTabla ()
{
int ok;
ok = 0;
try
{
// productos en almacen
baseD->QValClear();
baseD->QValAdd (" CREATE TABLE aalmaprod");
baseD->QValAdd (" ( numero smallint ,");
baseD->QValAdd (" clave character (20),");
baseD->QValAdd (" exist numeric ,");
baseD->QValAdd (" minimo numeric ,");
baseD->QValAdd (" maximo numeric ,");
baseD->QValAdd (" xrecibir numeric ,");
baseD->QValAdd (" xsurtir numeric ,");
baseD->QValAdd (" fultcmp date ,");
baseD->QValAdd (" fultvta date ,");
baseD->QValAdd (" unient character (10),");
baseD->QValAdd (" unisal character (10),");
baseD->QValAdd (" ctoprom numeric ,");
baseD->QValAdd (" ctoult numeric ,");
baseD->QValAdd (" costeo character ( 5),");
baseD->QValAdd (" precpub numeric ,");
baseD->QValAdd (" precmin numeric ,");
baseD->QValAdd (" moneda character (10),");
baseD->QValAdd (" porcutil float ,");
baseD->QValAdd (" tiempoent float ,"); // tiempo promedio de entrega
baseD->QValAdd (" pasillo character (10),");
baseD->QValAdd (" anaquel character (10),");
baseD->QValAdd (" estante character (10),");
baseD->QValAdd (" CONSTRAINT z PRIMARY KEY (numero,clave) )");
ok = baseD->CreaTabla ("aalmaprod");
}
catch ( EDatabaseError &e )
{
ok = -1;
}
return ok;
}
// ------------------------------------------------------------------
// Sep 2002
// Retorna 0, si no fue necesario actualizar
// -1, si ocurrio algun error
// 1, si se hizo la conversion exitosamente
//
int AlmaProd::ActTabla ()
{
int ok;
bool alteraMon, alteraUni;
bool alteraCve; // 0.2.4 , alteraUtil*/;
bool alteraTime; // 0.3.2
ok = 0;
try
{
baseD->Destino->TableName = "aalmaprod";
if ( baseD->Destino->Exists )
{
TField* campo;
baseD->Destino->Active = true;
alteraMon = baseD->Destino->FindField("moneda") == NULL;
alteraUni = (campo = baseD->Destino->FindField("unient")) != NULL
&& campo->Size == 5;
alteraCve = (campo = baseD->Destino->FindField("clave")) != NULL
&& campo->Size == 16;
alteraTime = (campo = baseD->Destino->FindField("tiempoent")) == NULL;
baseD->Destino->Active = false;
}
if ( alteraMon )
{
// ---------------------------------------------------------
// Actualizamos la tabla
//
baseD->QValClear();
baseD->QValAdd (" ALTER TABLE aalmaprod ADD moneda CHAR(10), ADD porcutil float, ");
baseD->QValAdd (" ADD pasillo character (10),");
baseD->QValAdd (" ADD anaquel character (10),");
baseD->QValAdd (" ADD estante character (10) ");
baseD->QValExec();
baseD->QValClear();
baseD->QValAdd (" UPDATE aalmaprod SET moneda = 'PM', porcutil = 0.0");
baseD->QValExec();
ok = 1;
}
if ( alteraUni )
{
baseD->Destino->RenameTable ("aalmaprodBak");
CreaTabla();
std::auto_ptr<TBatchMove> Batch(new TBatchMove(0));
baseD->QValClear();
baseD->QValAdd ("SELECT * FROM aalmaprodBak");
baseD->QValOpen ();
baseD->Destino->TableName = "aalmaprod";
Batch->Source = (TBDEDataSet*)baseD->QVal;
Batch->Destination = (TTable*)baseD->Destino;
Batch->Execute();
ok = 1;
// ------------------------------------------------------
// Eliminamos la antigua tabla
baseD->Destino->Active = false;
baseD->Destino->TableName = "aalmaprodBak";
baseD->Destino->Active = false;
baseD->Destino->DeleteTable();
}
if ( alteraCve )
{
baseD->Destino->RenameTable ("aalmaprodBak");
CreaTabla();
std::auto_ptr<TBatchMove> Batch(new TBatchMove(0));
baseD->QValClear();
baseD->QValAdd ("SELECT * FROM aalmaprodBak");
baseD->QValOpen ();
baseD->Destino->TableName = "aalmaprod";
Batch->Source = (TBDEDataSet*)baseD->QVal;
Batch->Destination = (TTable*)baseD->Destino;
Batch->Execute();
ok = 1;
// ------------------------------------------------------
// Eliminamos la antigua tabla
baseD->Destino->Active = false;
baseD->Destino->TableName = "aalmaprodBak";
baseD->Destino->Active = false;
baseD->Destino->DeleteTable();
}
if ( alteraTime )
{
// ---------------------------------------------------------
// Actualizamos la tabla
//
baseD->QValClear();
baseD->QValAdd (" ALTER TABLE aalmaprod ADD tiempoent float");
ok = baseD->QValExec();
baseD->QValClear();
baseD->QValAdd (" UPDATE aalmaprod SET tiempoent = 0");
ok = baseD->QValExec();
}
}
catch ( _DATAERROR )
{
ok = -1;
}
return ok;
}
// ******************************************************************
__declspec( dllexport ) int creaTAlmaProd (void);
int creaTAlmaProd(void)
{
int ok;
std::auto_ptr<AlmaProd> pAlmaProd(new AlmaProd());
ok = pAlmaProd->CreaTabla ();
if ( ok == 0 )
pAlmaProd->ActTabla ();
return ok;
}
--- NEW FILE: cenInventario.bpf ---
This file is used by the project manager only and should be treated like the project file
DllEntryPoint
--- NEW FILE: Almacen.h ---
/***************************************************************************
Almacen.h - description
-------------------
begin : Dom Oct 14 2001
copyright : (C) 2001-2005 by carlos javier lopez cruz
email : ic...@co...
***************************************************************************/
/*
Ultima revision: Jul 2005
www.prodigyweb.net.mx/icpac
www.icpac.org
*/
#ifndef ALMACEN_H
#define ALMACEN_H
// ---------------------------------------------------------------
#include "PObject.h"
// ---------------------------------------------------------------
class _export Almacen : public PObject
{
private :
protected:
int Numero;
public :
// ---------------------------------------------------------
Cadena Descrip;
// ---------------------------------------------------------
Almacen ();
typedef enum TIPFIND { FINDALMA, FINDALL } TIPOSFIND;
short TipoFind;
virtual void AsigCmpos();
virtual int FindFirst();
virtual int FindNext ();
// ---------------------------------------------------------
// Oct 2001
// Creamos la tabla
// Retorna 1 si se pudo crear
// 0 si no se pudo crear
// -1 si hubo error en la bd
//
virtual int CreaTabla ();
virtual int RegsDefault ();
// Oct 2001
// Para indicar la sentencia para las consultas
virtual Cadena* SQL(int);
// Oct 2001
virtual int Save(int Opc);
virtual int Delete ();
// ---------------------------------------------------------
// Para saber el siguiente almacén disponible para el abc
int NextAlma ();
// ---------------------------------------------------------
int getNumero (void) { return Numero; };
void setNumero (int val) { Numero = val; };
};
#endif
--- NEW FILE: Linea.cpp ---
/***************************************************************************
Linea.cpp - description
-------------------
begin : Tur Aug 27 2002
copyright : (C) 2002-2005 by carlos javier lopez cruz
email : ic...@co...
***************************************************************************/
#include "Linea.h"
#include "Bd.h"
#include <memory>
// ------------------------------------------------------------------
Linea::Linea()
:PObject()
{
}
// ------------------------------------------------------------------
// Ago 2002
// Actualizaciones
// Supone que los datos vienen en;
// 'Clave' y 'Descrip'
// Opc debe traer false o true
// Si trae false se ejecuta un Insert
// en otro caso hace un Update
//
// Retorna 1 si fue exitoso
// 0 en otro caso
//
int Linea::Save(int Opc)
{
int ok;
ok = 0;
try
{
baseD->QValClear();
if ( Opc == ABC_ALTA )
{
baseD->QValAdd (" INSERT INTO lineasProd (clave, descrip, lineaProv)");
baseD->QValAdd (" VALUES (:cve, :des, :prv)");
}
else
{
baseD->QValAdd (" UPDATE lineasProd SET");
baseD->QValAdd (" descrip = :des, lineaProv = :prv WHERE clave = :cve");
}
// Cptos
//
baseD->QValPmAsS ("cve", Clave.c_str());
baseD->QValPmAsS ("des", Descrip.c_str());
baseD->QValPmAsS ("prv", LineaProv.c_str());
ok = baseD->QValExec();
}
catch ( EDatabaseError &e )
{
ok = 0;
}
return ok;
}
// ------------------------------------------------------------------
// Mar 2002
//
int Linea::FindFirst()
{
int ok;
try
{
baseD->QValClear();
baseD->QValAdd (" SELECT clave, descrip, lineaProv FROM lineasProd WHERE clave = :cve");
baseD->QValPmAsS ("cve", Clave.c_str());
ok = baseD->QValOpen();
ok = ok && baseD->QValFirst();
if ( ok )
{
// Conceptos
//
Clave = baseD->QValFByNameAsS("clave");
Descrip = baseD->QValFByNameAsS("descrip");
LineaProv = baseD->QValFByNameAsS("lineaProv");
}
else
{
Descrip = "";
LineaProv = "";
}
}
catch ( EDatabaseError &e )
{
ok = 0;
}
return ok;
}
// ------------------------------------------------------------------
// Se borra la línea del catalogo, falta resolver
// en qué afecta esto a el archivo de productos.
// Retorna 1 si se pudo borrar
// 0 en otro caso
//
int Linea::Delete ()
{
int ok;
Cadena aux;
ok = 0;
try
{
// Verificamos que no tenga 'hijos' esta clasificación
baseD->QValClear();
baseD->QValAdd ("SELECT Count (*) FROM lineasProd");
baseD->QValAdd ("WHERE clave LIKE :cve");
aux = Clave;
aux += "%";
baseD->QValPmAsS ("cve", aux.c_str());
ok = baseD->QValOpen();
if ( ok && baseD->QValFByPosAsI (0) == 1 )
{
// Borramos la línea
//
baseD->QValClear();
baseD->QValAdd (" DELETE FROM lineasProd WHERE clave = :cve");
baseD->QValPmAsS ("cve", Clave.c_str());
ok = baseD->QValExec ();
}
else
ok = 0;
}
catch ( _DATAERROR )
{
ok = 0;
}
return ok;
}
// ------------------------------------------------------------------
//
int Linea::CreaTabla ()
{
int ok;
try
{
// Lineas
baseD->QValClear();
baseD->QValAdd (" CREATE TABLE lineasProd");
baseD->QValAdd (" ( clave char (16),");
baseD->QValAdd (" descrip char (50),");
baseD->QValAdd (" lineaProv char (16),");
baseD->QValAdd (" CONSTRAINT z PRIMARY KEY (clave) )");
ok = baseD->CreaTabla ("lineasProd");
if ( ok )
RegsDefault ();
else
ActTabla ();
}
catch ( EDatabaseError &e )
{
ok = -1;
}
return ok;
}
// ------------------------------------------------------------------
// Para indicar la sentencia para las consultas
//
Cadena* Linea::SQL(int cual)
{
if ( cual == SQLS_CNS )
{
Sql = " SELECT clave, descrip";
Sql += " FROM lineasProd";
Sql += " ORDER BY clave";
}
return &Sql;
}
// ******************************************************************
__declspec( dllexport ) int creaTLineas (void);
int creaTLineas (void)
{
std::auto_ptr<Linea> pLin(new Linea());
return pLin->CreaTabla ();
}
--- NEW FILE: Producto.h ---
/***************************************************************************
Producto.h - description
-------------------
begin : Thu Oct 3 2000
copyright : (C) 2000-2005 by carlos javier lopez cruz
email : ic...@co...
***************************************************************************/
/*
Ultima revision: Jul 2005
*/
#ifndef PRODUCTO_H
#define PRODUCTO_H
// ---------------------------------------------------------------
#include "PObject.h"
// ---------------------------------------------------------------
//
// Para validaciones de campos
//
#define VCVE_NEXI_PROD 1
// ---------------------------------------------------------------
class _export Producto : public PObject
{
protected:
Cadena Clave;
Cadena Alias;
Cadena Linea;
Cadena Descrip;
Cadena DescripL;
Cadena Lotes;
Cadena Pedimen;
bool Impst;
Cadena Marca;
public :
// ---------------------------------------------------------
Cadena Observa;
Cadena Imagen;
// ---------------------------------------------------------
Producto ();
// ---------------------------------------------------------
// Validaciones
//
virtual int iValida (char *pDato, unsigned int iCual);
// ---------------------------------------------------------
// Oct 2001
// Creamos la tabla de productos
// Retorna 1 si se pudo crear
// 0 si no se pudo crear
// -1 si hubo error en la bd
//
int CreaTabla ();
// ------------------------------------------------------------------
// Ene 2002
// Retorna 0, si no fue necesario actualizar
// -1, si ocurrio algun error
// 1, si se hizo la conversion exitosamente
//
virtual int ActTabla ();
// Oct 2001
virtual int Save(int Opc);
typedef enum TIPFIND { FINDALIA, FINDCVE, FINDALL } TIPOSFIND;
short TipoFind;
virtual void AsigCmpos ();
virtual int FindFirst ();
virtual int FindNext ();
int FindLin (); // Mar 2003
virtual int Delete ();
// Oct 2001
// Para indicar la sentencia para las consultas
virtual Cadena* SQL(int);
//
void setLinea (char* val) { Linea = val; Linea.Trim(); };
char* getLinea (void) { return Linea.c_str(); };
void setClave (char* val) { Clave = val; Clave.Trim(); };
char* getClave (void) { return Clave.c_str(); };
void setAlias (char* val) { Alias = val; Alias.Trim(); };
char* getAlias (void) { return Alias.c_str(); };
void setDescrip (String val) { Descrip = val; Descrip.Trim(); };
String getDescrip (void) { return Descrip.c_str(); };
void setDescripL(char* val) { DescripL = val; DescripL.Trim(); };
char* getDescripL(void) { return DescripL.c_str(); };
void setLotes (bool val) { Lotes = val ? "S" : "N"; };
void setPedimen (bool val) { Pedimen = val ? "S" : "N"; };
bool conLotes (void) { return Lotes == "S"; };
bool conPedimen (void) { return Pedimen == "S"; };
void setImpst (bool val) { Impst = val; };
bool getImpst (void) { return Impst; };
void setMarca (char* val) { Marca = val; };
char* getMarca (void) { return Marca.c_str(); };
};
#endif
--- NEW FILE: cenInventario.cpp ---
//---------------------------------------------------------------------------
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
//---------------------------------------------------------------------------
// Important note about DLL memory management when your DLL uses the
// static version of the RunTime Library:
//
// If your DLL exports any functions that pass String objects (or structs/
// classes containing nested Strings) as parameter or function results,
// you will need to add the library MEMMGR.LIB to both the DLL project and
// any other projects that use the DLL. You will also need to use MEMMGR.LIB
// if any other projects which use the DLL will be performing new or delete
// operations on any non-TObject-derived classes which are exported from the
// DLL. Adding MEMMGR.LIB to your project will change the DLL and its calling
// EXE's to use the BORLNDMM.DLL as their memory manager. In these cases,
// the file BORLNDMM.DLL should be deployed along with your DLL.
//
// To avoid using BORLNDMM.DLL, pass string information using "char *" or
// ShortString parameters.
//
// If your DLL uses the dynamic version of the RTL, you do not need to
// explicitly add MEMMGR.LIB as this will be done implicitly for you
//---------------------------------------------------------------------------
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------
--- NEW FILE: Marca.h ---
/***************************************************************************
Marca.h - description
-------------------
begin : Mon Jan 05 2004
copyright : (C) 2000-2005 by carlos javier lopez cruz
email : ic...@co...
***************************************************************************/
/*
Ultima revision: Jul 2005
*/
#ifndef MARCA_H
#define MARCA_H
// ---------------------------------------------------------------
#include "PObject.h"
// ---------------------------------------------------------------
//
class _export Marca : public PObject
{
protected:
Cadena CveMarca;
Cadena CveUsuario;
public :
Marca();
//----------------------------------------------------------
//----------------------------------------------------------
// Creamos la tabla de marcas
// Retorna 1 si se pudo crear
// 0 si no se pudo crear
// -1 si hubo error en la bd
//
virtual _override int CreaTabla ();
// Tal vez se pueden agregar marcas por omisión
virtual _override int RegsDefault () { return 1; };
virtual _override int Save(int Opc);
virtual _override int Delete ();
typedef enum TIPFIND { FINDCVE, FINDFIRST } TIPOSFIND;
short TipoFind;
virtual _override int FindFirst();
virtual _override int FindNext();
virtual _override void AsigCmpos();
// Para indicar la sentencia para las consultas
virtual _override Cadena* SQL(int);
// ---------------------------------------------------------
void setCveMarca (char* val) { CveMarca = val; CveMarca.Trim(); };
char* getCveMarca (void) { return CveMarca.c_str(); };
void setCveUsuario(char* val) { CveUsuario = val; CveUsuario.Trim(); };
};
__declspec( dllexport ) int creaTMarcas(void);
#endif
--- NEW FILE: ConceptoMI.cpp ---
/***************************************************************************
lCptoMovInve.cpp - description
-------------------
begin : Thu Sep 7 2000
copyright : (C) 2000-2005 by carlos javier lopez cruz
email : ic...@co...
***************************************************************************/
/*
Ultima revision: Jul 2005
*/
#include "ConceptoMI.h"
#include "Bd.h"
#include <memory>
// ------------------------------------------------------------------
//
ConceptoMI::ConceptoMI()
:Concepto()
{
}
// ------------------------------------------------------------------
int ConceptoMI::Save(int Opc)
{
int ok;
try
{
baseD->QValClear();
if ( Opc == ABC_ALTA )
{
baseD->QValAdd (" INSERT INTO acptominv (clave, descrip, cia, tipo)");
baseD->QValAdd (" VALUES (:cpto, :des, :cp, :tip)");
}
else
{
baseD->QValAdd (" UPDATE acptominv SET");
baseD->QValAdd (" descrip = :des, cia = :cp, tipo = :tip WHERE clave = :cpto");
}
// Clasificacion
//
baseD->QValPmAsS ("cpto", Clave.c_str());
baseD->QValPmAsS ("des" , Descrip.c_str());
baseD->QValPmAsS ("cp" , Cia.c_str());
baseD->QValPmAsS ("tip" , Tipo.c_str());
ok = baseD->QValExec();
}
catch ( EDatabaseError &e )
{
ok = 0;
}
return ok;
}
// ------------------------------------------------------------------
//
int ConceptoMI::Delete ()
{
int ok;
Cadena aux;
try
{
// Verificamos que no tenga 'hijos' este concepto
baseD->QValClear();
baseD->QValAdd ("SELECT Count (*) FROM acptominv");
baseD->QValAdd ("WHERE clave LIKE :cve");
aux = Clave;
aux += "%";
baseD->QValPmAsS ("cve", aux.c_str());
ok = baseD->QValOpen();
if ( ok && baseD->QValFByPosAsI (0) == 1 )
{
// Borramos el concepto
//
baseD->QValClear();
baseD->QValAdd (" DELETE FROM acptominv WHERE clave = :cve");
baseD->QValPmAsS ("cve", Clave.c_str());
ok = baseD->QValExec();
}
else
ok = 0;
}
catch ( EDatabaseError &e )
{
ok = 0;
}
return ok;
}
// ------------------------------------------------------------------
int ConceptoMI::FindFirst()
{
int ok;
try
{
// Buscamos el concepto
//
baseD->QValClear();
baseD->QValAdd (" SELECT clave, descrip, tipo, cia");
baseD->QValAdd (" FROM acptominv");
baseD->QValAdd (" WHERE clave = :cve");
baseD->QValPmAsS ("cve", Clave.c_str());
ok = baseD->QValOpen ();
ok = ok && baseD->QValFirst();
if ( ok )
{
Descrip = baseD->QValFByNameAsS("descrip");
Tipo = baseD->QValFByNameAsS("tipo");
Cia = baseD->QValFByNameAsS("cia");
}
}
catch ( EDatabaseError &e )
{
ok = 0;
}
return ok;
}
// ------------------------------------------------------------------
// Retorna 1 si es cliente
// 0 si no lo es
// Se presupone que ya se leyó el registro.
//
int ConceptoMI::EsCliente ()
{
int ok;
ok = Cia == ESCLIENTE;
return ok;
}
// ------------------------------------------------------------------
// Retorna 1 si es proveedor
// 0 si no lo es
// Se presupone que ya se leyó el registro.
//
int ConceptoMI::EsProveedor ()
{
int ok;
ok = Cia == ESPROVEED;
return ok;
}
// ------------------------------------------------------------------
Cadena* ConceptoMI::SQL(int cual)
{
Sql = "SELECT clave, descrip, tipo FROM acptominv";
Sql += " ORDER BY clave";
return &Sql;
}
// ------------------------------------------------------------------
// Oct 2001
// Creamos la tabla de conceptos de movimientos al inventario
// Retorna 1 si se pudo crear
// 0 si no se pudo crear
// -1 si hubo error en la bd
//
int ConceptoMI::CreaTabla ()
{
int ok;
ok = 0;
try
{
baseD->QValClear();
baseD->QValAdd (" CREATE TABLE acptominv");
baseD->QValAdd (" ( clave character (16),");
baseD->QValAdd (" descrip character (50),");
baseD->QValAdd (" tipo character (1),");
baseD->QValAdd (" cia character (1),");
baseD->QValAdd (" CONSTRAINT z PRIMARY KEY (clave) )");
ok = baseD->CreaTabla ("acptominv");
if ( ok )
RegsDefault ();
else
ActTabla ();
}
catch ( EDatabaseError &e )
{
ok = -1;
}
return ok;
}
// ------------------------------------------------------------------
// Algunos conceptos básicos
//
int ConceptoMI::RegsDefault ()
{
baseD->QValClear();
baseD->QValAdd (" INSERT INTO acptominv(clave, descrip, tipo, cia)");
baseD->QValAdd (" VALUES ('E', 'Entradas', 'N', 'N')");
baseD->QValExec();
baseD->QValClear();
baseD->QValAdd (" INSERT INTO acptominv(clave, descrip, tipo, cia)");
baseD->QValAdd (" VALUES ('E.1', 'Compras', 'E', 'P')");
baseD->QValExec();
baseD->QValClear();
baseD->QValAdd (" INSERT INTO acptominv(clave, descrip, tipo, cia)");
baseD->QValAdd (" VALUES ('E.2', 'Traspaso entrada', 'E', 'N')");
baseD->QValExec();
baseD->QValClear();
baseD->QValAdd (" INSERT INTO acptominv(clave, descrip, tipo, cia)");
baseD->QValAdd (" VALUES ('E.3', 'Devolución de venta', 'E', 'C')");
baseD->QValExec();
baseD->QValClear();
baseD->QValAdd (" INSERT INTO acptominv(clave, descrip, tipo, cia)");
baseD->QValAdd (" VALUES ('E.4', 'Entradas de fabricación', 'E', 'N')");
baseD->QValExec();
// ---------------------------------------------------------------
// Salidas
baseD->QValClear();
baseD->QValAdd (" INSERT INTO acptominv(clave, descrip, tipo, cia)");
baseD->QValAdd (" VALUES ('S', 'Salidas', 'N', 'N')");
baseD->QValExec();
baseD->QValClear();
baseD->QValAdd (" INSERT INTO acptominv(clave, descrip, tipo, cia)");
baseD->QValAdd (" VALUES ('S.51', 'Ventas', 'S', 'C')");
baseD->QValExec();
baseD->QValClear();
baseD->QValAdd (" INSERT INTO acptominv(clave, descrip, tipo, cia)");
baseD->QValAdd (" VALUES ('S.52', 'Traspaso salida', 'S', 'N')");
baseD->QValExec();
baseD->QValClear();
baseD->QValAdd (" INSERT INTO acptominv(clave, descrip, tipo, cia)");
baseD->QValAdd (" VALUES ('S.53', 'Mermas', 'S', 'N')");
baseD->QValExec();
baseD->QValClear();
baseD->QValAdd (" INSERT INTO acptominv(clave, descrip, tipo, cia)");
baseD->QValAdd (" VALUES ('S.54', 'Ventas mostrador', 'S', 'N')");
baseD->QValExec();
return 1;
}
// ******************************************************************
__declspec( dllexport ) int creaTCptoMInv (void);
int creaTCptoMInv (void)
{
std::auto_ptr<ConceptoMI> pCptoMInv(new ConceptoMI());
return pCptoMInv->CreaTabla ();
}
--- NEW FILE: MovimientoI.h ---
/***************************************************************************
MovimientoI.h - description
-------------------
begin : Thu Sep 7 2000
copyright : (C) 2000-2005 by Javier Cruz
email : ic...@co...
***************************************************************************/
/*
Ultima revision: Jul 2005
*/
#ifndef MOVIMIENTOI_H
#define MOVIMIENTOI_H
// ---------------------------------------------------------------
#include "PObject.h"
// ---------------------------------------------------------------
#define ESCLIENTE "C"
#define ESPROVEED "P"
// ---------------------------------------------------------------
class _export MovimientoI : public PObject
{
protected:
Cadena Docs;
Cadena Producto;
Cadena Concepto;
int Orin;
Cadena Usu;
public :
// ---------------------------------------------------------
int Secuencia;
Fecha FAlta;
int Almacen;
Cadena Cia;
double Cantidad;
double Costo;
double Precio;
// ---------------------------------------------------------
Cadena NombreCP;
MovimientoI ();
// ---------------------------------------------------------
// ---------------------------------------------------------
typedef enum TIPFIND { FINDPROD, FINDDOC, FINDDOCSEC } TIPOSFIND;
short TipoFind;
virtual int FindFirst(TQuery* = NULL);
// Mar 2003, para saber si puedo borrar un producto,
int FindProd ();
// Mar 2003, para saber si puedo borrar un concepto
int FindCpto ();
virtual int Save(int Opc);
// ---------------------------------------------------------
// Mar 2003, estadisticas
int Ctos;
double MontoTotal;
Cadena ProdDesc;
// Jun 2002 se usa en para recorrer la estadisticas.
bool primeraVez;
int GetENumMv () { return Ctos; };
double GetEMonto () { return MontoTotal; };
int iniAcumuladoProd(Fecha &fec, Cadena cpto);
int AcumuladoProd(int tntos);
int iniAcumuladoUtil(Fecha &fec, Cadena cpto);
int AcumuladoUtil(int tntos);
// ---------------------------------------------------------
// Oct 2001
// Creamos la tabla de movimientos a almacenes
// Retorna 1 si se pudo crear
// 0 si no se pudo crear
// -1 si hubo error en la bd
//
int CreaTabla ();
virtual int ActTabla ();
virtual int Delete ();
// Oct 2001
// Para indicar la sentencia para las consultas
virtual Cadena* SQL(int);
// ---------------------------------------------------------
// Para saber el siguiente documento disponible
char* NextDocu ();
//
void setDocs (char* val) { Docs = val;
Docs.Trim();
Docs.Llena ('0', LEFT_LCAD, 16); };
char* getDocs (void) { return Docs.c_str (); };
void setProducto (char* val) { Producto = val; Producto.Trim (); };
char* getProducto (void) { return Producto.c_str (); };
void setConcepto (char* val) { Concepto = val; Concepto.Trim (); };
char* getConcepto (void) { return Concepto.c_str(); };
void setUsu(char* val) { Usu = val; Usu.Trim(); };
char* getUsu(void) { return Usu.c_str(); };
//
typedef enum TIP_ORIGEN { DE_DOC, DE_MOV } TIPOS_ORIGEN;
void setOrin(int val)
{
if ( val != DE_DOC && val != DE_MOV )
Orin = DE_MOV;
else
Orin = val;
};
int getOrin(void) { return Orin; };
bool Borrar(void) { return Orin == DE_MOV; };
};
#endif
--- NEW FILE: cenInventario.bpr ---
<?xml version='1.0' encoding='utf-8' ?>
<!-- C++Builder XML Project -->
<PROJECT>
<MACROS>
<VERSION value="BCB.06.00"/>
<PROJECT value="..\capCentral\cenInventario.dll"/>
<OBJFILES value="objs\cenInventario.obj objs\Producto.obj objs\Equivalencia.obj
objs\Linea.obj objs\Marca.obj objs\Presentacion.obj objs\Almacen.obj
objs\AlmaProd.obj objs\ConceptoMI.obj objs\MovimientoI.obj"/>
<RESFILES value="cenInventario.res"/>
<DEFFILE value=""/>
<RESDEPEN value="$(RESFILES)"/>
<LIBFILES value="..\capCentral\cenBd.lib ..\capCentral\cenClass.lib ..\capCentral\cenPO.lib
..\capCentral\cenAdministracion.lib"/>
<LIBRARIES value=""/>
<SPARELIBS value="rtl.lib"/>
<PACKAGES value="vcl.bpi rtl.bpi vclx.bpi bcbsmp.bpi dbrtl.bpi adortl.bpi vcldb.bpi
qrpt.bpi bdertl.bpi vcldbx.bpi dsnap.bpi cds.bpi bdecds.bpi teeui.bpi
teedb.bpi tee.bpi teeqr.bpi ibxpress.bpi visualclx.bpi visualdbclx.bpi
vclie.bpi xmlrtl.bpi inet.bpi inetdbbde.bpi inetdbxpress.bpi inetdb.bpi
nmfast.bpi bcbie.bpi soaprtl.bpi dclocx.bpi dbexpress.bpi dbxcds.bpi
indy.bpi bcb2kaxserver.bpi capPack.bpi TaskPanelPack.bpi"/>
<PATHCPP value=".;"/>
<PATHPAS value=".;"/>
<PATHRC value=".;"/>
<PATHASM value=".;"/>
<DEBUGLIBPATH value="$(BCB)\lib\debug"/>
<RELEASELIBPATH value="$(BCB)\lib\release"/>
<LINKER value="ilink32"/>
<USERDEFINES value="_DEBUG;WIN_D"/>
<SYSDEFINES value="NO_STRICT;_RTLDLL;USEPACKAGES"/>
<MAINSOURCE value="cenInventario.bpf"/>
<INCLUDEPATH value="$(BCB)\include;$(BCB)\include\vcl;..\cenPO;..\cenClass;..\cenBd;..\cenAdministracion"/>
<LIBPATH value="$(BCB)\Projects\Lib;"C:\Documents and Settings\Javier Cruz\Mis documentos\Icpac\personalCentral\cenInventario";$(BCB)\lib\obj;$(BCB)\lib"/>
<WARNINGS value="-w-par"/>
<OTHERFILES value=""/>
</MACROS>
<OPTIONS>
<CFLAG1 value="-WD -Od -H=$(BCB)\lib\vcl60.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi-
-tWD -tWM -c"/>
<PFLAGS value="-N2objs -N0objs -$YD -$W -$O- -$A8 -v -JPHNE -M"/>
<RFLAGS value=""/>
<AFLAGS value="/mx /w2 /zd"/>
<LFLAGS value="-Iobjs -D"" -aa -Tpd -x -Gn -Gi -v"/>
<OTHERFILES value=""/>
</OPTIONS>
<LINKER>
<ALLOBJ value="c0d32.obj $(PACKAGES) Memmgr.Lib sysinit.obj $(OBJFILES)"/>
<ALLRES value="$(RESFILES)"/>
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mti.lib"/>
<OTHERFILES value=""/>
</LINKER>
<FILELIST>
<FILE FILENAME="cenInventario.res" FORMNAME="" UNITNAME="cenInventario.res" CONTAINERID="ResTool" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="cenInventario.bpf" FORMNAME="" UNITNAME="cenInventario" CONTAINERID="BPF" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="cenInventario.cpp" FORMNAME="" UNITNAME="cenInventario" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="Producto.cpp" FORMNAME="" UNITNAME="Producto.cpp" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="Equivalencia.cpp" FORMNAME="" UNITNAME="Equivalencia.cpp" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="Linea.cpp" FORMNAME="" UNITNAME="Linea.cpp" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="Marca.cpp" FORMNAME="" UNITNAME="Marca.cpp" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="Presentacion.cpp" FORMNAME="" UNITNAME="Presentacion.cpp" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="Almacen.cpp" FORMNAME="" UNITNAME="Almacen.cpp" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="AlmaProd.cpp" FORMNAME="" UNITNAME="AlmaProd.cpp" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="ConceptoMI.cpp" FORMNAME="" UNITNAME="ConceptoMI.cpp" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="MovimientoI.cpp" FORMNAME="" UNITNAME="MovimientoI.cpp" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="..\capCentral\cenBd.lib" FORMNAME="" UNITNAME="cenBd.lib" CONTAINERID="LibTool" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="..\capCentral\cenClass.lib" FORMNAME="" UNITNAME="cenClass.lib" CONTAINERID="LibTool" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="..\capCentral\cenPO.lib" FORMNAME="" UNITNAME="cenPO.lib" CONTAINERID="LibTool" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="..\capCentral\cenAdministracion.lib" FORMNAME="" UNITNAME="cenAdministracion.lib" CONTAINERID="LibTool" DESIGNCLASS="" LOCALCOMMAND=""/>
</FILELIST>
<BUILDTOOLS>
</BUILDTOOLS>
<IDEOPTIONS>
[Version Info]
IncludeVerInfo=0
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
Locale=2058
CodePage=1252
[Version Info Keys]
CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
[HistoryLists\hlIncludePath]
Count=5
Item0=$(BCB)\include;$(BCB)\include\vcl;..\cenPO;..\cenClass;..\cenBd;..\cenAdministracion
Item1=$(BCB)\include;$(BCB)\include\vcl;..\cenPO;..\cenClass;..\cenBd
Item2=$(BCB)\include;$(BCB)\include\vcl;..\cenPO;..\cenClass
Item3=$(BCB)\include;$(BCB)\include\vcl;..\cenPO
Item4=C:\Documents and Settings\Javier Cruz\Mis documentos\Icpac\personalCentral\cenInventario;$(BCB)\include;$(BCB)\include\vcl
[HistoryLists\hlLibraryPath]
Count=2
Item0=$(BCB)\Projects\Lib;C:\Documents and Settings\Javier Cruz\Mis documentos\Icpac\personalCentral\cenInventario;$(BCB)\lib\obj;$(BCB)\lib
Item1=C:\Documents and Settings\Javier Cruz\Mis documentos\Icpac\personalCentral\cenInventario;$(BCB)\lib\obj;$(BCB)\lib
[HistoryLists\hlDebugSourcePath]
Count=1
Item0=$(BCB)\source\vcl
[HistoryLists\hlConditionals]
Count=2
Item0=_DEBUG;WIN_D
Item1=_DEBUG
[HistoryLists\hlIntOutputDir]
Count=1
Item0=objs
[HistoryLists\hlFinalOutputDir]
Count=1
Item0=..\capCentral\
[Debugging]
DebugSourceDirs=$(BCB)\source\vcl
[Parameters]
RunParams=
Launcher=
UseLauncher=0
DebugCWD=
HostApplication=
RemoteHost=
RemotePath=
RemoteLauncher=
RemoteCWD=
RemoteDebug=0
[Compiler]
ShowInfoMsgs=0
LinkDebugVcl=0
LinkCGLIB=0
[Language]
ActiveLang=
ProjectLang=
RootDir=
[Linker]
LibPrefix=
LibSuffix=
LibVersion=
</IDEOPTIONS>
</PROJECT>
--- NEW FILE: Presentacion.h ---
/***************************************************************************
Presentacion.h - description
-------------------
begin : Tus Sep 16 2003
copyright : (C) 2000-2005 by carlos javier lopez cruz
email : ic...@co...
***************************************************************************/
/*
Ultima modificación: Jul 2005
*/
#ifndef PRESENTACION_H
#define PRESENTACION_H
// ---------------------------------------------------------------
//
#include "PObject.h"
// ---------------------------------------------------------------
//
class _export Presentacion : public PObject
{
protected :
public :
Presentacion ();
// ---------------------------------------------------------
// Agregar o cambiar informacion: Opc
//
virtual int Save(int Opc) { return 0; };
virtual int Delete ();
virtual int FindFirst();
//
virtual int CreaTabla ();
virtual int iAsigCmpos();
// ------------------------------------------------------------------
// Ene 2002
// Retorna 0, si no fue necesario actualizar
// -1, si ocurrio algun error
// 1, si se hizo la conversion exitosamente
//
virtual int ActTabla ();
};
#endif
--- NEW FILE: Linea.h ---
/***************************************************************************
Linea.h - description
-------------------
begin : Tur Aug 27 2002
copyright : (C) 2002-2005 by carlos javier lopez cruz
email : ic...@co...
***************************************************************************/
/*
Ultima revision: Jul 2005
*/
#ifndef LINEA_H
#define LINEA_H
// ---------------------------------------------------------------
#include "PObject.h"
// ---------------------------------------------------------------
class _export Linea : public PObject
{
protected:
Cadena Clave;
public :
// ---------------------------------------------------------
Cadena Descrip;
Cadena LineaProv;
// ---------------------------------------------------------
Linea ();
typedef
enum tagSQLS
{
SQLS_CNS = 0 // Filtrar todos los registros
} SQLS;
// ---------------------------------------------------------
// Actualizaciones
// Opc debe traer false o true
// Si trae false se ejecuta un Insert
// en otro caso hace un Update
//
// Retorna 1 si fue exitoso
// 0 en otro caso
//
virtual int Save(int Opc);
virtual int FindFirst();
// ------------------------------------------------------------------
// Se borra la línea del catalogo, falta resolver
// en qué afecta esto a el archivo de productos
// Retorna 1 si se pudo borrar
// 0 en otro caso
//
virtual int Delete ();
// ---------------------------------------------------------
// Ago 2002
// Creamos la tabla de lineas de productos
// Retorna 1 si se pudo crear
// 0 si no se pudo crear
// -1 si hubo error en la bd
//
int CreaTabla ();
// ---------------------------------------------------------
virtual Cadena* SQL(int);
//
void setClave (char* val) { Clave = val; Clave.Trim(); };
char* getClave (void) { return Clave.c_str(); };
};
#endif
--- NEW FILE: ConceptoMI.h ---
/***************************************************************************
ConceptoMI.h - description
-------------------
begin : Thu Sep 7 2000
copyright : (C) 2000-2005 by carlos javier lopez cruz
email : ic...@co...
***************************************************************************/
/*
www.icpac.org
Ultima revision: Jul 2005
*/
#ifndef CONCEPTOMI_H
#define CONCEPTOMI_H
// ---------------------------------------------------------------
#include "Concepto.h"
// ---------------------------------------------------------------
#define ESCLIENTE "C"
#define ESPROVEED "P"
// ---------------------------------------------------------------
class _export ConceptoMI : public Concepto
{
protected:
/*
Cadena Clave;*/
public :
// ---------------------------------------------------------
Cadena Descrip;
Cadena Tipo;
Cadena Cia;
// ---------------------------------------------------------
ConceptoMI ();
int EsCliente ();
int EsProveedor();
// ---------------------------------------------------------
virtual int Save(int Opc);
virtual int Delete ();
// ---------------------------------------------------------
virtual int FindFirst();
// ---------------------------------------------------------
// Creamos la tabla
// Retorna 1 si se pudo crear
// 0 si no se pudo crear
// -1 si hubo error en la bd
//
int CreaTabla ();
virtual int RegsDefault ();
// Para indicar la sentencia para las consultas
virtual Cadena* SQL(int);
bool EsSalida (void) { return Tipo == "S"; };
bool EsEntrada(void) { return Tipo == "E"; };
// ---------------------------------------------------------
/*
void setClave (String val) { Clave = val; Clave.Trim(); };
String getClave (void) { return Clave.c_str(); };*/
};
#endif
--- NEW FILE: MovimientoI.cpp ---
/***************************************************************************
MovimientoI.cpp - description
-------------------
begin : Thu Sep 7 2000
copyright : (C) 2000-2005 by Javier Cruz
email : ic...@co...
***************************************************************************/
/*
Administracion personal.
www.icpac.org
Ultima revision: Jul 2005
*/
#include "MovimientoI.h"
#include "Bd.h"
#include <memory>
// ------------------------------------------------------------------
MovimientoI::MovimientoI()
:PObject()
{
Orin = 0;
Usu = "root";
//
TipoFind = FINDDOC;
}
// ------------------------------------------------------------------
int MovimientoI::FindFirst(TQuery* Q)
{
int ok;
try
{
// Buscamos los datos del movimiento
//
baseD->QValClear();
baseD->QValAdd (" SELECT documento, secuencia, fecha, cia, almacen,");
baseD->QValAdd (" cepto, cantidad, producto, costo, precio, origen, usu");
baseD->QValAdd (" FROM amovalma");
if ( TipoFind == FINDDOCSEC )
{
baseD->QValAdd (" WHERE documento = :doc AND secuencia = :sec");
baseD->QValPmAsS("doc", Docs.c_str ());
baseD->QValPmAsI("sec", Secuencia);
}
else if ( TipoFind == FINDDOC )
{
baseD->QValAdd (" WHERE documento = :doc");
baseD->QValPmAsS("doc", Docs.c_str ());
}
else if ( TipoFind == FINDPROD )
{
baseD->QValAdd (" WHERE almacen = :alm AND producto = :prd");
baseD->QValPmAsSi("alm", Almacen);
baseD->QValPmAsS ("prd", Producto.c_str());
}
ok = baseD->QValOpen();
ok = ok && baseD->QValFirst();
if ( ok )
{
Secuencia = baseD->QValFByNameAsI("secuencia");
FAlta = baseD->QValFByNameAsD("fecha");
Almacen = baseD->QValFByNameAsI("almacen");
Concepto = baseD->QValFByNameAsS("cepto");
Cia = baseD->QValFByNameAsS("cia");
Cantidad = baseD->QValFByNameAsF("cantidad");
Producto = baseD->QValFByNameAsS("producto")...
[truncated message content] |