Para establecer una secuencia númerica de forma manual podemos utilizar el siguiente código:
NumberSeq numberSeq,NumberSeqVoucher;
NumberSequenceReference _NumberSequenceReference;
Num Number;
Voucher voucher;
NumberSequenceReference _voucherSequenceReference
;
numberSeq = new NumberSeq();
//Realizar las busquedas de las secuencias numéricas configuradas para utilizar como número de asiento
_voucherSequenceReference = NumberSeqReference::findReference(extendedTypeNum(SalesInvoiceVoucher));
// mejor utilizar SalesParameters::numRefSalesInvoiceVoucher()
//Realizar las busquedas de las secuencias numéricas configuradas para utilizar como número del documento
_NumberSequenceReference = NumberSequenceReference::findByDatatypeAndScope(extendedTypeNum(SalesCreditNoteId));
//Instanciar la clase de secuencias numéricas para establecer el número de factura (documento)que se va utilizar
NumberSeq = numberSeq::newGetNumFromCode(NumberSequenceTable::find(_NumberSequenceReference.NumberSequenceId).NumberSequence);
//Instanciar la clase de secuencias numéricas para establecer el número de asiento que se va utilizar
NumberSeqVoucher= numberSeq::newGetNumFromCode(NumberSequenceTable::find(_voucherSequenceReference.NumberSequenceId).NumberSequence);
Number = numberSeq.num();
//Es necesario establecer un nivel de transacción mayor a 1 para que se pueda generar una secuencia numerica
ttsbegin;
if (_voucherSequenceReference && !_voucherSequenceReference.AllowSameAs)
{
voucher=NumberSeqVoucher.num();
}
else
{
voucher = Number;
}
ttscommit;
//Establecer el numero de documento y asiento
numberSeq.setNumVoucherLec(Number,voucher);
EL código especificado anteriormente puede ser utilizado dentro de la clase NumberSeq como un método publico estatico para que pueda ser invocado desde cualquier parte del desarrollo.
No hay comentarios:
Publicar un comentario