Hi All,
I have a base that acts as a Property Management System with multiple tables. Two of those tables are the “Contracts” table and “Bills” Table. I have been using the new scripting block to streamline all of the daily processes: Recording new payments received and issuing receipts, creating customised reports of income/outstanding bills reports, by City/Property/Tenant reports …etc.
I am finally at the last step where i am attempting to create a script that prompts the user to insert all of the relevant contract information and creates a new contract record in my “Contracts” table, and then also automatically adds corresponding bills (in the Bills table) in the wanted frequency (i.e: 12 bills of monthly rental payments with due dates and amounts), and finally links them to the contract.
However, I am getting a strange behavior when adding the bills. The creation of the contract record works just fine but when the script attempts to add the bills I get the following error:
SyntaxError: await is only valid in async function
on line 1
at s on line 1
at Generator._invoke on line 1
at Generator.forEach.e.(anonymous function) oas next] on line 1
at e on line 1
at l on line 1
on line 1
on line 1
BELOW IS PART OF MY CODE:
let contractsTable = base.getTable('
Contracts');
let unitsTable = base.getTable('
Units');
let billsTable = base.getTable('🧾 Bills');
let tenantsTable = base.getTable('
Tenants');
////input and processing////
//adding contract
let newContract = await contractsTable.createRecordAsync({
'Unit Name': r{ 'id': unit.id }],
'Tenants': <{ 'id': tenant.id }],
//'Contract Attachment': file],
'Contract Signing Date': signingDate,
'Lease Start': startDate,
'Lease Expiration': endDate,
'Master/Sublease': masterSub,
'Type of Contract': contractType,
'Base Period Monthly Rent': monthlyRent,
'Currency': currency,
'Payment Frequency': frequency,
'Yearly Escalation': yearlyEscalation / 100,
'Months of Grace Period': gracePeriod
});
////some more processing////
//adding bills
for (var i = 0; i < fullBillAmount; i++) {
let billDate = i == 0 ? startDate : new Date(startDate.setMonth(startDate.getMonth() + freq))
let tempMonthlyBillAmount = rent * (Math.pow(1 + (esc / 100), Math.floor((i * freq) / 12)))
var billAmount = 0;
if (gracePeriod > 0) {
if (gracePeriod > freq) {
billAmount = 0;
gracePeriod -= freq;
}
else {
billAmount = (freq - gracePeriod) * tempMonthlyBillAmount;
gracePeriod -= gracePeriod;
}
} else billAmount = freq * tempMonthlyBillAmount;
billDate.setHours(0, 0, 0, 0)
console.log('i: ', i, billDate, billAmount);
await billsTable.createRecordAsync({
'Contracts':
{ 'id': newContract }],
'Type': billtType,
'Due Date': billDate,
'Bill Amount': rent * freq * (Math.pow(1 + (esc / 100), Math.floor((i * freq) / 12))),
'Bill Currency': currency
});
}
if (extraMonths > 0) {
let billDate = new Date(startDate.setMonth(startDate.getMonth() + freq));
let billAmount = rent * extraMonths * (Math.pow(1 + (esc / 100), Math.floor((fullBillAmount * freq) / 12)));
billDate.setHours(0, 0, 0, 0)
await billsTable.createRecordAsync({
'Contracts':
{ 'id': newContract }],
'Type': billtType,
'Due Date': billDate,
'Bill Amount': billAmount,
'Bill Currency': currency
});
console.log(billDate, billAmount)
}
if I remove the “await” from the last 2 “billsTable.createRecordAsync”, the program runs without error but does not add any bills to the table.
Strange thing is that I have a different script that does almost the same exact thing (adds one main record in one table and adds many records linked to that main record, in another table), but I don’t get this error.
Can anyone spot any obvious errors in my script? Any help would be extremely appreciated!
Thanks in advance!!