menu * {
Observer : dialog $iif(!$dialog(Observer),-md,-ev) Observer Observer
}
dialog Observer {
title Observer
size -1 -1 755 385
option pixels
text "Route", 3, 124 4 60 16, center
combo 4, 124 20 60 100, edit drop sort
text "Account", 1, 4 4 120 16, center
combo 2, 4 20 120 100, edit drop sort
text "Name", 5, 190 6 50 15
edit "", 6, 240 5 300 20
text "Address", 7, 240 25 335 16, center
edit "", 8, 240 42 40 20, center
edit "", 50, 280 42 225 20
edit "", 52, 505 42 70 20
text "Apt", 9, 575 25 45 15, center
edit "", 10, 575 42 45 20, right
edit "", 48, 620 42 60 20
text "Phone", 11, 545 6 30 15
edit "", 12, 575 5 84 20
text "Special Directions", 13, 190 64 50 40, center
edit "", 14, 240 64 505 40, multi
box "Deliveries", 15, 4 120 70 90
check "Daily", 16, 6 134 50 16
check "MP/LL", 17, 6 150 50 16
check "Sat. Only", 18, 6 166 64 16
check "Vacation", 19, 6 182 64 16
box "Billing", 20, 72 120 60 90
radio "PIO", 21, 74 134 40 16, group
radio "CMP", 22, 74 150 40 16
radio "Mthly", 23, 74 166 44 16
radio "Bi-Wkly", 24, 74 182 54 16
text "Start", 25, 190 124 100 14, center
list 26, 190 140 100 240, size
text "Stop", 27, 290 124 100 14, center
list 28, 290 140 100 240, size
text "Deliveries", 29, 390 124 54 14, center
list 30, 390 140 54 240, size
text "Billing", 31, 444 124 50 14, center
list 32, 444 140 50 240, size
text "Payment Amount && Date", 33, 598 124 150 14, center
list 34, 598 140 50 240, size
list 35, 648 140 100 240, size
edit "", 37, 598 104 50 20
text "Balance", 38, 648 106 50 16, center
edit "", 39, 698 104 50 20, read
button "OK", 40, 134 124 50 18, ok
button "Save", 41, 134 144 50 18
button "Apply", 42, 134 164 50 18, default
text "Paid To", 43, 4 44 100 16, center
edit "", 44, 4 60 100 20, right
text "Expiry", 45, 4 80 100 16, center
edit "", 46, 4 94 100 20, read right
button "Cancel", 36, 134 184 50 18, cancel
text "Postal", 47, 620 25 60 15, center
edit "", 53, 190 104 100 20, read
edit "", 54, 290 104 100 20, read
edit "", 55, 390 104 54 20, read
edit "", 56, 444 104 50 20, read
edit "", 57, 494 104 54 20, read
text "Days", 58, 494 124 54 14, center
list 59, 494 140 54 240, size
edit "", 60, 548 104 50 20, read
list 61, 548 140 50 240, size
text "Charge", 62, 548 124 50 15, center
}
on *:dialog:Observer:close:*:{
.hsave -o Observer Observer.hsh
.timerexpiry off
}
on *:dialog:Observer:init:*:{
unset %saved
if !$hget(Observer) { .hmake Observer 100 }
if $exists(Observer.hsh) { .hload Observer Observer.hsh }
did -ra $dname 44 $adate
.timerexpiry -m 0 500 expiry $dname
didtok $dname 4 32 $hget(Observer,Rtes)
did -c $dname 16,21
}
on *:dialog:Observer:edit:44:{
unset %saved
.timerexpiry -m 0 500 expiry $dname
}
alias expiry {
var %date = $ctime($+($gettok($did($1,44),2,47),/,$gettok($did($1,44),1,47),/,$gettok($did($1,44),3,47)))
$iif(%date,did -ra $1 46 $asctime($calc(1814400 + %date),mm/dd/yyyy))
}
alias error {
dialog -t $1-
.timer -d 1 10 dialog -t $1 Observer
}
on *:dialog:Observer:sclick:40-42:{
if !%saved {
$iif($did(4) isnum,set %rte $did(4),error $dname Rte # error)
.hadd -m Observer Rtes $addtok($hget(Observer,Rtes),%rte,32)
$iif($did(2) isnum,set %acct $did(2),error $dname Account # error)
set %name $replace($did(6),$chr(44),$chr(32))
set %lname $gettok(%name,$iif(%name == $did(6),-1,1),32)
if !%lname { error $dname Name Missing }
set %fname $iif($remove(%name,%lname),$v1,-)
set %phone $iif(!$did(12),(000)000-0000,$v1)
set %street.num $did(8)
set %street.name $did(50)
set %street.dir $iif(!$did(52),-,$v1)
if %street.num !isnum || !%street.name { error $dname Address Incomplete }
set %apt $iif(!$did(10),-,$v1)
set %postal $iif(!$did(48),-,$v1)
set %special.directions $iif(!$did(14),-,$v1)
set %paid.to $did(44)
set %start.date $iif($did(26).lines > 1,$did(26,$calc($did(26).lines - 1)),$adate)
set %end.date $iif(!$did(26).lines,-,$iif($did(28).lines > 1,$did(28,$calc($did(28).lines - 1)),$adate))
did -ra $dname 53 %start.date
did -a $dname 26 $did(53)
did -ra $dname 54 %end.date
did -i $dname 28 1 $did(54)
did -ra $dname 55 %deliveries
did -a $dname 30 $did(55)
did -ra $dname 56 %billing
did -a $dname 32 $did(56)
did -ra $dname 57 $days(%start.date,%end.date)
did -a $dname 59 $did(57)
did -ra $dname 60 $charge($days)
did -a $dname 61 $did(60)
did -a $dname 34 $iif($did(37),$v1,-)
did -a $dname 35 $iif($did(37),$adate,-)
did -ra $dname 39 $dollar($calc($did(39) + $did(61) - $did(37)))
.hadd -m Observer $+(%rte,.,Accounts) $addtok($hget(Observer,$+(%rte,.,Accounts)),%acct,32)
.hadd -m Observer $+(%acct,.,Name) %fname %lname
.hadd -m Observer $+(%acct,.,Phone) %phone
.hadd -m Observer $+(%acct,.,Address) %street.num %street.name %street.dir
.hadd -m Observer $+(%acct,.,Apt) %apt
.hadd -m Observer $+(%acct,.,Postal) %postal
.hadd -m Observer $+(%acct,.,SD) %special.directions
.hadd -m Observer $+(%acct,.,Paid) %paid.to
set %columns 26,28,30,32,59,61,34,35
var %a = 1, %b = $numtok(%columns,44)
while %a <= %b {
.hadd -m Observer $+(%acct,.,$gettok(%columns,%a,44)) $didtok($dname,$gettok(%columns,%a,44),32)
inc %a
}
did -r $dname 37
}
set %saved $true
}
alias days {
var %day.1 = $ctime($+($gettok($1,2,47),/,$gettok($1,1,47),/,$gettok($1,3,47)))
var %day.2 = $ctime($+($gettok($2,2,47),/,$gettok($2,1,47),/,$gettok($2,3,47)))
return $iif($int($calc((%day.2 - %day.1) / 28800 * 3)) > 0,$v1,0)
}
alias charge {
return $dollar($round($calc($1 / 14 * $iif($did(16).state,6.74,$iif($did(18).state,2.96,0))),2))
}
alias dollar {
if $1 == $int($1) {
return $+($,$1,.00)
}
elseif $calc($1 * 10) == $int($calc($1 * 10)) {
return $+($,$1,0)
}
else return $+($,$1)
}
on *:dialog:Observer:sclick:21-24:{
unset %saved
set %billing $did($did)
set %old.billing $iif($did(32).lines > 1,$did(32,$calc($did(32).lines - 1)))
}
on *:dialog:Observer:sclick:16-19:{
unset %saved
if ($did == 16 || $did == 18) && $did($did).state {
did -u $dname 16-19
did -c $dname $did
}
set %deliveries $+($did(16).state,$did(17).state,$did(18).state,$did(19).state)
set %old.deliveries
}
on *:dialog:Observer:sclick:4:{
unset %saved
set %rte $did(4)
did -r $dname 2
didtok $dname 2 32 $hget(Observer,$+(%rte,.,Accounts))
}
on *:dialog:Observer:sclick:2:{
unset %saved
set %acct $did(2)
did -ra $dname 6 $hget(Observer,$+(%acct,.,Name))
did -ra $dname 12 $iif($hget(Observer,$+(%acct,.,Phone)) != -,$v1)
did -ra $dname 8 $gettok($hget(Observer,$+(%acct,.,Address)),1,32)
did -ra $dname 52 $iif($gettok($hget(Observer,$+(%acct,.,Address)),-1,32) != -,$v1)
did -ra $dname 50 $gettok($hget(Observer,$+(%acct,.,Address)),2--1,32)
did -ra $dname 10 $iif($hget(Observer,$+(%acct,.,Apt)) != -,$v1)
did -ra $dname 48 $iif($hget(Observer,$+(%acct,.,Postal)) != -, $v1)
did -ra $dname 14 $iif($hget(Observer,$+(%acct,.,SD)) != -,$v1)
did -ra $dname 44 $hget(Observer,$+(%acct,.,Paid))
set %columns 26,28,30,32,59,61,34,35
var %a = 1, %b = $numtok(%columns,44)
while %a <= %b {
did -r $dname $gettok(%columns,%a,44)
didtok $dname $gettok(%columns,%a,44) 32 $hget(Observer,$+(%acct,.,$gettok(%columns,%a,44)))
if %a == 6 {
inc %charges $hget(Observer,$+(%acct,.,$gettok(%columns,%a,44)))
}
elseif %a == 7 {
inc %payments $hget(Observer,$+(%acct,.,$gettok(%columns,%a,44)))
}
inc %a
}
did -ra $dname 39 $dollar($calc(%charges - %payments))
}
on *:dialog:Observer:edit:6,12,8,50,52,10,48,14,37,53,54,55,56,57,60:{
unset %saved
}
on *:dialog:Observer:sclick:26:{
set %edit $did $did($did).sel
did -n $dname 53
did -m $dname 54-57,60
}
on *:dialog:Observer:sclick:28:{
set %edit $did $did($did).sel
did -n $dname 54
did -m $dname 53,55-57,60
}
on *:dialog:Observer:sclick:30:{
set %edit $did $did($did).sel
did -n $dname 55
did -m $dname 53,54,56,57,60
}
on *:dialog:Observer:sclick:32:{
set %edit $did $did($did).sel
did -n $dname 56
did -m $dname 53-55,57,60
}
on *:dialog:Observer:sclick:59:{
set %edit $did $did($did).sel
did -n $dname 57
did -m $dname 53-56,60
}
on *:dialog:Observer:sclick:61:{
set %edit $did $did($did).sel
did -n $dname 60
did -m $dname 53-57
}
on *:dialog:Observer:sclick:34:{
set %edit $did $did($did).sel
}