Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
I don't like this Code, I call on the UT brain power
Message
De
30/12/1999 10:46:52
 
 
À
Tous
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Titre:
I don't like this Code, I call on the UT brain power
Divers
Thread ID:
00310399
Message ID:
00310399
Vues:
38
Hi all,

I have a little problem and would like some insight. The following Code is for a payroll system. I have a table (TIMESCHL) with the fields MON1STRT, MON1END etc. which I use, to find the amount of hours scheduled. As you can tell, I was heading down the DO CASE road when I decided that probably isn't the best way to go, Primarily for maintenance reasons. So I guess my question would be how would some of you go about doing something like this.
SET DELETED ON  &&So Views won't select deleted records


USE WK1DTL IN 0
	SELECT WK1DTL
	INDEX ON EMPID TAG EMPID ADDITIVE
	INDEX ON DATE TAG DATE ADDITIVE

USE ACTVEEMP IN 0
	SELECT ACTVEEMP
	BROWSE LAST NOWAIT
	INDEX ON EMPID TAG EMPID ADDITIVE

USE EMPLOYEE IN 0
	SELECT EMPLOYEE
	SET ORDER TO EMPID

USE TIMESCHL IN 0
	SELECT TIMESCHL
	SET ORDER TO DATE

USE PYHRSSMRY IN 0
	SELECT  PYHRSSMRY
	BROWSE LAST NOWAIT
	SET ORDER TO EMPID_CKDT

SELECT ACTVEEMP
SET RELATION TO empid INTO Employee ADDITIVE
GO TOP IN ACTVEEMP

*SET TALK OFF

FOR R = 1 TO RECCOUNT("ACTVEEMP")
	SELECT ACTVEEMP
	GO RECORD R
	m.nEmpid = ACTVEEMP.EMPID
*Insert a record into the Payroll summary table if a
*record for the employee does not exist for that checkdate
	m.cCurEmpChkDate = PADL(ALLTRIM(STR(m.nEmpid)),2,"0")+NEXTCHKDATE1
	? m.cCurEmpChkDate
	IF !SEEK(ALLTRIM(m.cCurEmpChkDate),"PYHRSSMRY","EMPID_CKDT")
		EMPID = m.nEmpid
		CHKDATE = NEXTCHKDATE
		INSERT INTO "PYHRSSMRY" FROM MEMVAR
		RELEASE EMPID, CHKDATE
	ENDIF
	IF SEEK(m.nEmpid,"EMPLOYEE","EMPID")
		IF EMPLOYEE.Ft_Pt = "P"
			? "PartTime no Vacation or Bonus"
		ENDIF
	ENDIF
*Open the EmpInfoVW Parameterized
*View for Hourly pay rate info
*If its open requery to retreive
*the current Employees pay info
	IF !USED("EMPINFOVW")
		USE EMPINFOVW IN 0
	ELSE
		REQUERY("EMPINFOVW")
	ENDIF

		FOR I = 18 TO 5 STEP -1
WAIT WINDOW "" TIMEOUT .1
CLEAR
			SELECT wk1dtl.empid, wk1dtl.date, wk1dtl.jobno,;
			   wk1dtl.timeout, wk1dtl.timein;
			  FROM  PREWEL!wk1dtl ;
			  WHERE wk1dtl.date = CTOD(NEXTCHKDATE1)-I;
			    AND wk1dtl.empid = m.nEmpid;
			  ORDER BY wk1dtl.timeout;
			  INTO CURSOR TEST1

			SELECT TEST1
			BROWSE LAST NOWAIT
			GO TOP
<b>*!*				DO CASE
*!*					CASE I = 18</b>
					IF (<b>TIMESCHL.MON1END - TIMESCHL.MON1STRT</b>) > 0.0
						m.nSchlHours = ((TIMESCHL.MON1END - TIMESCHL.MON1STRT)-.5)
						? "Scheduled hours  "+STR(m.nSchlHours,6,3)
						m.cSearchCriteria = ALLTRIM(STR(m.nEmpid))+ALLTRIM(DTOC(CTOD(NEXTCHKDATE1)-I))
						IF !SEEK(m.cSearchCriteria,"TIMEHD","EMPID_DATE")
							? "Timecard not found for this scheduled day"
						ENDIF
						SUM TEST1.TIMEOUT-TEST1.TIMEIN FOR TEST1.JOBNO != "LUNCH";
							AND TEST1.JOBNO != "VAC" TO m.nHoursWorked
							? "Hours Worked  "+STR(m.nHoursWorked,6,3)
						IF m.nHoursWorked < m.nSchlHours
							? "Scheduled Hours not worked"
							m.cSearchCriteria = ALLTRIM(STR(m.nEmpid))+ALLTRIM(DTOC(CTOD(NEXTCHKDATE1)-I))
							? m.cSearchCriteria
							? SEEK(m.cSearchCriteria,"TIMEHD","EMPID_DATE")
							IF SEEK(m.cSearchCriteria,"TIMEHD","EMPID_DATE")
								? "REPLACE TIMEHD.hours_not_worked WITH .T."
							ENDIF
						ENDIF
					ENDIF
<b>*!*					CASE I = 17</b>
					IF(<b>TIMESCHL.TUE1END - TIMESCHL.TUE1STRT</b>) > 0.0
						m.nSchlHours = ((TIMESCHL.TUE1END - TIMESCHL.TUE1STRT)-.5)
						? ""
					ENDIF
*!*				ENDCASE
		ENDFOR
ENDFOR


CLOSE TABLES ALL
Thanks
Jon
Non-MVP Non-MCP Non-MCSE

Visual FoxPro, What else is there?
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform