/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.m16e.mpbiz;
import com.m16e.mpbiz.common.MpBizAppConfig;
import com.m16e.mpbiz.common.MpBizAppContext;
import com.m16e.mpbiz.common.bizclasses.MpBizException;
import com.m16e.mpbiz.common.MpBizUser;
import com.m16e.mpbiz.docs.MpBizDoc;
import com.m16e.mpbiz.docs.MpBizDocLin;
import com.m16e.mpbiz.docs.MpDocException;
import com.m16e.mpbiz.docs.MpDocFactory;
import com.m16e.mpbiz.docs.manipulators.ProdDocLinData;
import com.m16e.mpbiz.prods.MpBizProd;
import com.m16e.mpbiz.tables.DbDoc;
import com.m16e.mpbiz.tables.DbDocLin;
import com.m16e.mpbiz.tables.DbProd;
import com.m16e.mpbiz.tables.DbProdArm;
import com.m16e.mpbiz.tables.DbProdLot;
import com.m16e.mpbiz.tables.DbProdLotArm;
import com.m16e.tools.Barcode;
import com.m16e.tools.KnownBarcodes;
import com.m16e.tools.MpAppContext;
import com.m16e.tools.MpDay;
import com.m16e.tools.MpTimestamp;
import com.m16e.tools.MpToolsException;
import com.m16e.tools.Tools;
import com.m16e.tools.db.Database;
import com.m16e.tools.db.DatabaseException;
import java.io.BufferedReader;
import java.io.Console;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.ArrayList;
import org.apache.log4j.Logger;
/**
*
* @author carlos
*/
///////////////////////////////////////////////////////////////
public class MpBizInventory
{
static Logger logger = Logger.getLogger( MpBizInventory.class );
private static int consoleColumns = 40;
Integer docId = null;
int lastDocLinId = 0;
boolean printLabelsByDefault = false;
int warehouseId = 0;
Console console = null;
BufferedReader consoleReader = null;
///////////////////////////////////////////////////////////////
public MpBizInventory()
{
// console = System.console();
if( console == null )
{
InputStreamReader isr = new InputStreamReader( System.in );
consoleReader = new BufferedReader( isr );
}
}
///////////////////////////////////////////////////////////////
public MpBizInventory( int warehouseId )
{
this();
this.warehouseId = warehouseId;
}
///////////////////////////////////////////////////////////////
private String getUserInput() throws IOException
{
String input = null;
if( console != null )
{
input = new String( console.readLine() );
}
else
{
input = new String( consoleReader.readLine() );
}
return input;
}
///////////////////////////////////////////////////////////////
private String getPasswordInput() throws IOException
{
String input = null;
if( console != null )
{
input = new String( console.readPassword() );
}
else
{
input = new String( System.console().readPassword() );
}
return input;
}
///////////////////////////////////////////////////////////////
private void listLots( int warehouseId, int prodId )
throws SQLException, DatabaseException
{
String query =
"select " +
DbProdLot.FN_SUPPLIER_LOT_ID + ", " +
DbProdLotArm.T_NAME + "." + DbProdLotArm.FN_QUANT +
" from " +
DbProdLotArm.T_NAME + " join " +
DbProdLot.T_NAME + " using ( " +
DbProdLot.FN_PROD_ID + ", " + DbProdLot.FN_PROD_LOT_ID + " )" +
" where " +
DbProdLotArm.FN_ARM_ID + " = ? and " +
DbProdLotArm.FN_PROD_ID + " = ? " +
" order by " +
DbProdLot.FN_SUPPLIER_LOT_ID;
printLine( "Lote\t\tQuant." );
PreparedStatement ps =
MpAppContext.getInstance().getDatabase().getPreparedStatement( query );
ps.setInt( 1, warehouseId );
ps.setInt( 2, prodId );
ResultSet rs = ps.executeQuery();
while( rs.next() )
{
String supLotId = rs.getString( 1 );
System.out.print( supLotId );
int len = supLotId.length();
if( len < 8 )
System.out.print( "\t\t" );
else
System.out.print( "\t" );
System.out.print( String.format( "%4.0f", rs.getDouble( 2 ) ) + "\n" );
}
}
///////////////////////////////////////////////////////////////
private void removeProdLot(
int warehouseId, ProdDocLinData dld )
throws IOException, SQLException, DatabaseException, MpDocException, MpToolsException
{
MpBizProd bizProd = dld.getBizProd();
System.out.print( "Lote a remover: " );
String supplierLotId = getUserInput();
printLine( "Confirma remover lote [" + supplierLotId + "] (s/N)?" );
String s = getUserInput();
if( s.length() == 0 || s.toLowerCase().startsWith( "s" ) )
{
DbProdLot prodLot =
MpBizProd.getProdLot( bizProd.getProd().getProdId(), supplierLotId );
if( prodLot == null )
{
printLine( "lote desconhecido: " + supplierLotId + "!" );
}
else
{
dld.setProdLot( prodLot );
Database database = null;
try
{
database = MpAppContext.getInstance().getDatabase();
database.beginTransaction();
delProdFromDoc( dld );
if( prodLot.getById() )
{
if( prodLot.getQuant() == 0 )
{
DbProdLotArm prodLotArm =
DbProdLotArm.getById(
bizProd.getProd().getProdId(), prodLot.getProdLotId(), warehouseId );
if( prodLotArm != null )
{
prodLotArm.delete();
}
prodLot.delete();
}
}
database.commitTransaction();
printLine( "\n>>> Lote removido!\n\n" );
}
catch( Exception e )
{
logger.error( e.getMessage(), e );
}
finally
{
if( database != null && database.inTransaction() )
database.rollbackTransaction();
}
}
}
}
///////////////////////////////////////////////////////////////
private MpDay getValidDay( MpDay prev )
throws IOException
{
print( "Val.(" );
if( prev == null )
{
print( "AAAA-MM-DD" );
}
else
{
print( prev.getDateYYYYMMDD() );
}
print( "): " );
String sValidUntill = getUserInput();
if( prev != null && sValidUntill.length() == 0 )
{
sValidUntill = prev.getDateYYYYMMDD();
}
MpDay validUntill = null;
for( ; validUntill == null; )
{
try
{
validUntill = new MpDay( sValidUntill );
}
catch( ParseException ex )
{
printLine( "Data INVALIDA!" );
printLine( "O formato da data deve ser: AAAA-MM-DD (Ex. 2008-01-31)" );
System.out.print( "Val.: " );
sValidUntill = getUserInput();
if( sValidUntill.length() == 0 )
return null;
}
}
return validUntill;
}
///////////////////////////////////////////////////////////////
private void countProdLot( int warehouseId, ProdDocLinData dld )
throws IOException, SQLException, DatabaseException, MpToolsException, MpBizException
{
MpBizProd bizProd = dld.getBizProd();
DbProd prod = bizProd.getProd();
Integer prodId = prod.getProdId();
printLine( "Lote: " );
String supplierLotId = getUserInput();
MpDay day = null;
DbProdLot prodLot =
MpBizProd.getProdLot( prodId, supplierLotId );
boolean newProdLot = (prodLot == null);
if( prodLot != null )
{
day = new MpDay( prodLot.getValidUntill() );
}
else
{
prodLot = new DbProdLot();
prodLot.setProdId( prodId );
prodLot.setSupplierLotId( supplierLotId );
}
MpDay validUntill = getValidDay( day );
if( validUntill == null )
{
return;
}
prodLot.setValidUntill( validUntill.getSqlDate() );
Double qtCounted = new Double( 0 );
if( !newProdLot )
{
DbProdLotArm prodLotArm = new DbProdLotArm();
prodLotArm.setArmId( warehouseId );
prodLotArm.setProdId( prodId );
prodLotArm.setProdLotId( prodLot.getProdLotId() );
if( prodLotArm.getById() )
{
qtCounted = prodLotArm.getQuant();
}
}
printLine( "Quant. (" + qtCounted + "): " );
dld.setProdLot( prodLot );
String s = getUserInput();
if( s == null || s.trim().length() == 0 )
{
return;
}
qtCounted = new Double( s );
Database database = null;
try
{
database = MpAppContext.getInstance().getDatabase();
database.beginTransaction();
DbDocLin dl = getDocLine( dld );
if( dl == null )
{
if( newProdLot )
{
prodLot = MpBizProd.insertProdLot( prodLot );
String prefix =
MpBizAppConfig.getInstance().getBarcodeGeneratedPrefix();
final KnownBarcodes[] barcodes =
MpBizAppConfig.getInstance().getBarcodeTypeOrder();
String barcode =
Barcode.validateBarcode(
barcodes[0], prodLot.getProdId().toString(), prefix, null );
bizProd.setUseBarcode( barcode );
bizProd.refreshMainProdPrices();
bizProd.update();
bizProd.refreshBarcodes();
}
System.out.println( "Lote criado!" );
dld.setProdLot( prodLot );
dld.setQt( qtCounted );
addProdToDoc( dld );
}
else
{
System.out.println( "Lote alterado!" );
prodLot.update( DbProdLot.VALID_UNTILL );
dld.setQt( qtCounted );
updProdInDoc( dld );
}
database.commitTransaction();
printLine( "\n>>> Actualizada existencia!\n\n" );
printLabels( dld );
}
catch( Exception e )
{
logger.error( e.getMessage(), e );
}
finally
{
if( database != null && database.inTransaction() )
database.rollbackTransaction();
}
}
///////////////////////////////////////////////////////////////
private String getDefaultPrintOption()
{
if( printLabelsByDefault )
return "S/n";
else
return "s/N";
}
///////////////////////////////////////////////////////////////
private void countProd( int warehouseId, String prodCode )
throws SQLException, MpBizException, DatabaseException, IOException, MpToolsException
{
ProdDocLinData dld = MpBizProd.getProdFromItemCode( null, null, prodCode );
MpBizProd bizProd = dld.getBizProd();
if( bizProd == null )
{ // 0123456789 123456789
printLine( "produto desconhecido!" );
return;
}
printLine( "Nome: " + bizProd.getProd().getName() );
int prodId = bizProd.getProd().getProdId();
DbProdArm prodArm = new DbProdArm();
prodArm.setProdId( prodId );
prodArm.setArmId( warehouseId );
prodArm.persist();
DbProd prod = bizProd.getProd();
printLine( prod.getName() );
if( bizProd.hasLotsControl() )
{ // 0123456789 123456789
printLine( "(controle de lotes)\n" );
listLots( warehouseId, prod.getProdId() );
printLine( "Exist.: " + prod.getQuant() );
for( ; ; )
{
printLine( "--\nContar / Listar / Remover / Voltar (C/l/r/v)" );
String s = getUserInput();
if( s.length() == 0 || s.toLowerCase().startsWith( "c" ) )
{
countProdLot( warehouseId, dld );
break;
}
if( s.toLowerCase().startsWith( "l" ) )
{
listLots( warehouseId, prod.getProdId() );
}
else if( s.toLowerCase().startsWith( "r" ) )
{
removeProdLot( warehouseId, dld );
}
else if( s.toLowerCase().startsWith( "v" ) )
{
return;
}
else
break;
}
}
else
{
String s = null;
Double qt = null;
for( ; ; )
{
printLine( "Exist. (" + prodArm.getExistencia() + "): " );
try
{
s = getUserInput();
if( s.length() > 0 )
qt = Double.parseDouble( s );
}
catch( NumberFormatException e )
{
printLine( "Dados invalidos!" );
continue;
}
break;
}
if( s.length() > 0 )
{
DbDocLin dl = getDocLine( dld );
Database database = null;
try
{
database = MpAppContext.getInstance().getDatabase();
database.beginTransaction();
dld.setQt( qt );
if( dl == null )
{
System.out.println( "Lote criado!" );
addProdToDoc( dld );
}
else
{
updProdInDoc( dld );
}
database.commitTransaction();
printLine( "\n>>> Actualizada existencia!\n\n" );
printLabels( dld );
}
catch( Exception e )
{
logger.error( e.getMessage(), e );
}
finally
{
if( database != null && database.inTransaction() )
database.rollbackTransaction();
}
}
}
}
///////////////////////////////////////////////////////////////
private void printLabels( ProdDocLinData dld )
throws IOException, DatabaseException, SQLException, MpToolsException, MpBizException
{
MpBizProd bizProd = dld.getBizProd();
boolean print = printLabelsByDefault;
printLine( "Imprimir etiqueta(s)? (" + getDefaultPrintOption() + ")?" );
String s = getUserInput();
if( s.toLowerCase().startsWith( "s" ) )
{
print = true;
}
else if( s.toLowerCase().startsWith( "n" ) )
{
print = false;
}
if( print )
{
if( bizProd.hasLotsControl() )
bizProd.printLabel( dld.getProdLot().getProdLotId(), dld.getQt().intValue() );
else
bizProd.printLabel( dld.getQt().intValue() );
}
}
///////////////////////////////////////////////////////////////
private int listDocs()
throws SQLException, DatabaseException
{
MpDay day = new MpDay();
for( int f = 0; f < 7; f++ )
day.prevDay();
java.util.List<DbDoc> docs =
DbDoc.getList(
false,
DbDoc.FN_TIPO_ENT_ID + " = ? and " +
DbDoc.FN_TIPO_DOC_ID + " = ? and " +
DbDoc.FN_USER_ID + " = ? and " +
DbDoc.FN_DATA_DOC + " >= ?",
DbDoc.FN_DOC_ID,
MpDocFactory.TENT_INTERNAL,
MpDocFactory.TDOC_ACERTO_INVENTARIO,
MpBizUser.getInstance().getUserId(),
day.getSqlDate() );
if( docs.size() > 0 )
{
printLine( "Doc.\t\tData" );
printLine( "=====================" );
for( DbDoc doc: docs )
{
String sDocId = String.format( "%10d", doc.getDocId() );
printLine( sDocId + "\t" + new MpDay( doc.getDataDoc() ).getDateYYYYMMDD() );
}
}
return docs.size();
}
///////////////////////////////////////////////////////////////
/**
*
* @param warehouseId
* @throws java.sql.SQLException
* @throws IOException
* @throws DatabaseException
*/
public void countProds()
throws SQLException, IOException, DatabaseException, MpDocException
{
if( !login() )
return;
printLine( "\f" );
int nDocs = listDocs();
if( nDocs > 0 )
{
for( ; ; )
{
printLine( "Retomar documento: " );
String s = getUserInput();
if( s.length() == 0 )
break;
docId = new Integer( s );
MpBizDoc bizDoc =
MpBizDoc.getBizDoc(
MpDocFactory.TENT_INTERNAL,
MpDocFactory.TDOC_ACERTO_INVENTARIO,
docId );
if( bizDoc != null )
{
java.util.List<MpBizDocLin> docLines = bizDoc.getDocLines();
if( docLines.size() > 0)
{
lastDocLinId =
docLines.get( docLines.size() - 1 ).getDocLin().getDocLinId();
}
break;
}
printLine( "documento desconhecido (" + docId + ")\n" );
docId = null;
}
}
for( ; ; )
{
try
{
// println( "--\nContar / Listar / Remover (C/l/r)" );
// String s = getUserInput();
// if( s.length() == 0 || s.toLowerCase().startsWith( "c" ) )
// {
// countProdLot( warehouseId, bizProd );
// break;
// }
printLine( "--\n(x-termina; l-lista)" );
print( "Codigo: " );
String s = getUserInput().trim();
if( s.equalsIgnoreCase( "x" ) )
{
printLine( "\nFim!" );
break;
}
if( s.equalsIgnoreCase( "l" ) )
{
printDoc();
}
else if( s.length() > 0 )
{
countProd( warehouseId, s );
}
}
catch( Exception e )
{
logger.error( e.getMessage(), e );
return;
}
}
}
///////////////////////////////////////////////////////////////
private void printDoc()
throws SQLException, DatabaseException, MpDocException
{
printLine( "====== ACERTO INVENTARIO ======" );
if( docId != null )
{
MpBizDoc bizDoc =
MpBizDoc.getBizDoc(
MpDocFactory.TENT_INTERNAL,
MpDocFactory.TDOC_ACERTO_INVENTARIO,
docId );
if( bizDoc != null )
{
printLine( "Cd. Doc.: " + docId );
printLine( "-----------------------------" );
printLine( "Prod ID Cod.Barras Designao Quant. Lote" );
for( MpBizDocLin mdl : bizDoc.getDocLines() )
{
printDocLine( mdl );
}
}
}
}
///////////////////////////////////////////////////////////////
private void printDocLine( MpBizDocLin bizDocLin )
{
int prodPriceDecimals =
MpBizAppContext.getInstance().getProdPriceDecimals();
DbDocLin dl = bizDocLin.getDocLin();
String format =
"%8d %-13s %-18s %5." + prodPriceDecimals + "f %-8s";
String s =
String.format(
format,
dl.getItemId(), dl.getBarcode(), dl.getDescricao(), dl.getQuant(),
(dl.getSupplierLotId() == null ? "" : dl.getSupplierLotId()) );
printLine( s );
}
///////////////////////////////////////////////////////////////
private void printLine( String text )
{
for( String line : Tools.splitLine( text, consoleColumns, false ) )
{
// if( console != null )
// console.printf( line );
// else
System.out.println( line );
}
}
///////////////////////////////////////////////////////////////
private void print( String text )
{
System.out.print( text );
}
///////////////////////////////////////////////////////////////
public static int getConsoleColumns() { return consoleColumns; }
public static void setConsoleColumns( int aConsoleColumns ) { consoleColumns = aConsoleColumns; }
public boolean isPrintLabelsByDefault() { return printLabelsByDefault; }
public void setPrintLabelsByDefault( boolean printLabelsByDefault ) { this.printLabelsByDefault = printLabelsByDefault; }
///////////////////////////////////////////////////////////////
private boolean login()
throws IOException, SQLException, DatabaseException
{
boolean logged = false;
printLine( "Utilizador: " );
String user = getUserInput();
if( user.length() > 0 )
{
printLine( "Password: " );
String password = getPasswordInput();
MpBizUser mbu = MpBizUser.getInstance();
logged = mbu.login( user, password );
}
return logged;
}
///////////////////////////////////////////////////////////////
private void initDoc()
throws
SQLException, DatabaseException, MpDocException, MpToolsException, MpBizException
{
DbDoc doc = new DbDoc();
doc.setTipoEntId( MpDocFactory.TENT_INTERNAL );
doc.setTipoDocId( MpDocFactory.TDOC_ACERTO_INVENTARIO );
MpDay day = new MpDay();
doc.setDataDoc( day.getSqlDate() );
doc.setEntId( MpDocFactory.INTERNAL_ENT );
doc.setUserId( MpBizUser.getInstance().getUserId() );
docId = new Integer(
MpDocFactory.getInstance().getLastDocNumber(
day,
MpDocFactory.TENT_INTERNAL, MpDocFactory.TDOC_ACERTO_INVENTARIO ) + 1 );
doc.setDocId( docId );
int i = 0;
boolean done = false;
while( i++ < MpBizDoc.MAX_TRIES )
{
try
{
doc.insert();
done = true;
}
catch( SQLException e )
{
logger.error( e.getMessage(), e );
doc.setDocId( ++docId );
}
if( done )
break;
}
if( !done )
throw new MpDocException( "Erro a criar documento: ", docId );
}
///////////////////////////////////////////////////////////////
private DbDocLin getDocLine( ProdDocLinData dld )
throws SQLException, DatabaseException, MpDocException, MpToolsException
{
MpBizProd bizProd = dld.getBizProd();
DbProd prod = bizProd.getProd();
DbProdLot prodLot = dld.getProdLot();
DbDocLin dl = null;
if( prodLot != null )
{
dl =
DbDocLin.getSingleRecord(
DbDocLin.FN_TIPO_ENT_ID + " = ? and " +
DbDocLin.FN_TIPO_DOC_ID + " = ? and " +
DbDocLin.FN_DOC_ID + " = ? and " +
DbDocLin.FN_ITEM_ID + " = ? and " +
DbDocLin.FN_PROD_LOT_ID + " = ?",
MpDocFactory.TENT_INTERNAL,
MpDocFactory.TDOC_ACERTO_INVENTARIO,
docId,
prod.getProdId(),
prodLot.getProdLotId() );
}
else
{
dl =
DbDocLin.getSingleRecord(
DbDocLin.FN_TIPO_ENT_ID + " = ? and " +
DbDocLin.FN_TIPO_DOC_ID + " = ? and " +
DbDocLin.FN_DOC_ID + " = ? and " +
DbDocLin.FN_ITEM_ID + " = ?",
MpDocFactory.TENT_INTERNAL,
MpDocFactory.TDOC_ACERTO_INVENTARIO,
docId,
prod.getProdId() );
}
return dl;
}
///////////////////////////////////////////////////////////////
private void addProdToDoc( ProdDocLinData dld )
throws
SQLException, DatabaseException, MpDocException, MpToolsException, MpBizException
{
MpBizProd bizProd = dld.getBizProd();
if( !MpAppContext.getInstance().getDatabase().inTransaction() )
{
throw new DatabaseException( "TRANSACTION HASD't STARED!" );
}
if( docId == null )
initDoc();
DbDocLin dl = new DbDocLin();
dl.setTipoEntId( MpDocFactory.TENT_INTERNAL );
dl.setTipoDocId( MpDocFactory.TDOC_ACERTO_INVENTARIO );
dl.setDocId( docId );
dl.setDocLinId( ++lastDocLinId );
DbProd prod = bizProd.getProd();
dl.setItemId( prod.getProdId() );
dl.setAuxItemId( warehouseId );
dl.setDescricao( prod.getName() );
DbProdArm prodArm = DbProdArm.getById( warehouseId, prod.getProdId() );
double exist = 0.0;
if( prodArm != null )
{
exist = prodArm.getExistencia();
}
dl.setQuant( dld.getQt() - exist );
dl.setBarcode( bizProd.getUseBarcode() );
DbProdLot prodLot = dld.getProdLot();
if( prodLot != null )
{
exist = 0.0;
DbProdLotArm prodLotArm =
DbProdLotArm.getById(
prod.getProdId(), prodLot.getProdLotId(), warehouseId );
if( prodLotArm != null )
{
exist = prodLotArm.getQuant();
}
dl.setQuant( dld.getQt() - exist );
dl.setProdLotId( prodLot.getProdLotId() );
dl.setSupplierLotId( prodLot.getSupplierLotId() );
dl.setTs1( new MpTimestamp( prodLot.getValidUntill() ).getSqlTimestamp() );
}
dl.insert();
}
///////////////////////////////////////////////////////////////
private void updProdInDoc( ProdDocLinData dld )
throws SQLException, DatabaseException, MpDocException, MpToolsException
{
MpBizProd bizProd = dld.getBizProd();
if( !MpAppContext.getInstance().getDatabase().inTransaction() )
{
throw new DatabaseException( "TRANSACTION HASD't STARED!" );
}
DbProd prod = bizProd.getProd();
DbProdLot prodLot = dld.getProdLot();
DbDocLin dl = getDocLine( dld );
dl.setDescricao( prod.getName() );
DbProdArm prodArm = DbProdArm.getById( warehouseId, prod.getProdId() );
double exist = 0.0;
if( prodArm != null )
{
exist = prodArm.getExistencia();
}
// dl.setQuant( dl.getQuant() + count - prod.getQuant() );
dl.setBarcode( bizProd.getUseBarcode() );
ArrayList<Integer> alChangedFields = new ArrayList<Integer>();
alChangedFields.add( DbDocLin.DESCRICAO );
alChangedFields.add( DbDocLin.QUANT );
alChangedFields.add( DbDocLin.BARCODE );
if( prodLot == null )
{
dl.setQuant( dl.getQuant() + dld.getQt() - exist );
}
else
{
exist = 0.0;
DbProdLotArm prodLotArm =
DbProdLotArm.getById(
prod.getProdId(), prodLot.getProdLotId(), warehouseId );
if( prodLotArm != null )
{
exist = prodLotArm.getQuant();
}
dl.setQuant( dl.getQuant() + dld.getQt() - exist );
dl.setProdLotId( prodLot.getProdLotId() );
dl.setSupplierLotId( prodLot.getSupplierLotId() );
dl.setTs1( new MpTimestamp( prodLot.getValidUntill() ).getSqlTimestamp() );
alChangedFields.add( DbDocLin.PROD_LOT_ID );
alChangedFields.add( DbDocLin.SUPPLIER_LOT_ID );
alChangedFields.add( DbDocLin.TS1 );
}
dl.update( alChangedFields );
}
///////////////////////////////////////////////////////////////
private void delProdFromDoc( ProdDocLinData dld )
throws SQLException, DatabaseException, MpDocException, MpToolsException
{
MpBizProd bizProd = dld.getBizProd();
if( !MpAppContext.getInstance().getDatabase().inTransaction() )
{
throw new DatabaseException( "TRANSACTION HASD't STARED!" );
}
DbProd prod = bizProd.getProd();
DbProdLot prodLot = dld.getProdLot();
DbDocLin dl = null;
if( prodLot != null )
{
dl =
DbDocLin.getSingleRecord(
DbDocLin.FN_TIPO_ENT_ID + " = ? and " +
DbDocLin.FN_TIPO_DOC_ID + " = ? and " +
DbDocLin.FN_DOC_ID + " = ? and " +
DbDocLin.FN_ITEM_ID + " = ? and " +
DbDocLin.FN_PROD_LOT_ID + " = ?",
MpDocFactory.TENT_INTERNAL,
MpDocFactory.TDOC_ACERTO_INVENTARIO,
docId,
prod.getProdId(),
prodLot.getProdLotId() );
}
else
{
dl =
DbDocLin.getSingleRecord(
DbDocLin.FN_TIPO_ENT_ID + " = ? and " +
DbDocLin.FN_TIPO_DOC_ID + " = ? and " +
DbDocLin.FN_DOC_ID + " = ? and " +
DbDocLin.FN_ITEM_ID + " = ?",
MpDocFactory.TENT_INTERNAL,
MpDocFactory.TDOC_ACERTO_INVENTARIO,
docId,
prod.getProdId() );
}
if( dl != null )
{
dl.delete();
}
else
{
printLine( "Lote nao consta do documento presente!" );
}
}
///////////////////////////////////////////////////////////////
static public void main( String[] args )
{
try
{
System.out.println( String.format( "val: %5d", 4 ));
// countProds();
}
catch( Exception e )
{
logger.error( e.getMessage(), e );
}
System.exit( 0 );
}
}
|