Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
30 Days
Message
From
23/05/2019 03:31:34
 
 
To
21/05/2019 10:50:34
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Title:
Miscellaneous
Thread ID:
01668763
Message ID:
01668813
Views:
57
These code work fine for me.
Thanks to all participants
* Invoice Table
SET DATE BRITISH

CREATE CURSOR invoice(no n(4),date d(8),amount n(5),due d(8),discount n(5),pdate d, PAID I)
INSERT INTO invoice values(1,CTOD('01/04/2019'),1500,CTOD('01/05/2019'),0, CTOD('//'),0)
INSERT INTO invoice values(1,CTOD('15/04/2019'),2500,CTOD('15/05/2019'),0, CTOD('//'),0)
INSERT INTO invoice values(1,CTOD('28/04/2019'),1800,CTOD('28/05/2019'),0, CTOD('//'),0)

* recovery Table
CREATE CURSOR recovery(no n(4),date d(8),amount n(5), BALANCE I)
INSERT INTO recovery VALUES (1,	CTOD('03/04/2019'),	300,0)
INSERT INTO recovery VALUES (2,	CTOD('05/04/2019'),	800,0)
INSERT INTO recovery VALUES (3,	CTOD('30/04/2019'),	400,0)
INSERT INTO recovery VALUES (4,	CTOD('01/05/2019'),	400,0)
INSERT INTO recovery VALUES (5,	CTOD('08/05/2019'),	300,0)
INSERT INTO recovery VALUES (6,	CTOD('10/05/2019'),	500,0)
INSERT INTO recovery VALUES (7,	CTOD('12/05/2019'),	100,0)
INSERT INTO recovery VALUES (8,	CTOD('15/05/2019'),	600,0)
INSERT INTO recovery VALUES (9,	CTOD('17/05/2019'),	800,0) 
INSERT INTO recovery VALUES (10,CTOD('18/05/2019'),	100,0)
INSERT INTO recovery VALUES (11,CTOD('19/05/2019'),	300,0)
INSERT INTO recovery VALUES (12,CTOD('22/05/2019'),	400,0)

REPLACE ALL BALANCE WITH AMOUNT


SELECT INVOICE

SCAN
lnAmt = INVOICE.AMOUNT
	
		SELECT RECOVERY
		SCAN  FOR BALANCE > 0
		
			DO CASE
			
			CASE lnAmt > RECOVERY.BALANCE
				lnAmt = lnAmt - (RECOVERY.BALANCE)
				
				REPLACE INVOICE.PAID WITH INVOICE.PAID +RECOVERY.BALANCE
				replace RECOVERY.BALANCE WITH 0
				REPLACE INVOICE.PDATE WITH RECOVERY.DATE

				
			CASE lnAmt =< RECOVERY.BALANCE
				
				REPLACE INVOICE.PAID WITH INVOICE.PAID + lnAmt
				REPLACE RECOVERY.BALANCE WITH RECOVERY.BALANCE - lnAmt
				REPLACE INVOICE.PDATE WITH RECOVERY.DATE
				lnAmt = 0			
			ENDCASE
			
			IF lnAmt = 0
			EXIT
			ENDIF
			
		ENDSCAN
		
ENDSCAN

SELECT INVOICE
REPLACE discount WITH amount*5/100 FOR pdate =<DUE AND amount = paid
BROWSE
Previous
Reply
Map
View

Click here to load this message in the networking platform