mostrightfuture
26th November 2004, 19:11
Hi friends

I have created a function in library to block a sales order, but its not blocking SOR. The code is as follows

domain tcyesno order.blocked
domain tcdate dtbl

order.blocked = tcyesno.no
dtbl = utc.num()

db.retry.point()
select *
from tdsls400 for update
where tdsls400.orno between (:orno.f) and (:orno.t)
selectdo
|Insert record in table Order (Lines) Blocking
select *
from tdsls420
where tdsls420.orno = (:tdsls400.orno)
selectdo
selectempty
tdsls420.orno = tdsls400.orno
tdsls420.pono = 0
tdsls420.sqnb = 0
tdsls420.hrea = "001"
tdsls420.opon = 0

if credit.check.hrea(tdsls420.hrea) then
tdsls420.bpid = tdsls400.itbp
tdsls420.bprt = tccom.bprt.invoice.to
else
tdsls420.bpid = tdsls400.ofbp
tdsls420.bprt = tccom.bprt.sold.to
endif

dal.start.business.method("tdsls420",
"calculate.expected.release.date", ret,
tdsls420.bpid, tdsls420.bprt, tdsls420.hrea,
tdsls420.erdt)
if ret then
tdsls420.erdt = dtbl
endif

tdsls420.lobl = logname$
|tdsls420.cran not defined
|tdsls420.cbtp not defined
|tdsls420.pstc not defined

order.blocked = tcyesno.yes
endselect


if(order.blocked = tcyesno.yes) then
|Insert in table Order (Line) block history
select *
from tdsls421
where tdsls421.orno = ""
selectdo
selectempty
tdsls421.orno = tdsls400.orno
tdsls421.pono = 0
tdsls421.sqnb = 0
tdsls421.hrea = "001"
tdsls421.opon = 0
tdsls421.dtbl = dtbl
tdsls421.lobl = logname$
|tdsls421.dtrl
|tdsls421.lorl
tdsls421.bpid = tdsls420.bpid
tdsls421.bprt = tdsls420.bprt
|tdsls421.rlty
|tdsls421.rlam
tdsls421.erdt = tdsls420.erdt
|tdsls420.pstc

endselect

|Block sales order line
select *
from tdsls401 for update
where tdsls401.orno = (:tdsls400.orno)
selectdo
tdsls401.bkyn = tcyesno.yes
selectempty
endselect


|Block sales order
tdsls400.bkyn = tcyesno.yes
endif
selectempty
endselect

if(order.blocked = tcyesno.yes)then
commit.transaction()
Endif

what I have missing.

thanks in advance
Mahmood

bdittmar
26th November 2004, 20:56
{
db.retry.point()

select Tablefields
from Table for update
where .......
selectdo

.........................

db.update(Table, db.retry)
commit.transaction()
endselect
}

mostrightfuture
29th November 2004, 11:22
Hi,

I updated the code by writting

db.update(Table, db.retry)

Now I am getting error: Error 206 (record is not locked)


Mahmood

bdittmar
29th November 2004, 11:43
Try this:

{
db.retry.point()

select Tablefields
from Table for update
where .......
selectdo

.........................

db.update(Table, db.retry)
commit.transaction()
endselect

commit.transaction()

}