📄 datamod.js
字号:
//USEUNIT Db
//USEUNIT DBTables
var PrevPartNo = 0;
var PrevQty =0;
var DeletingItems=false;
var FItemNo= 0;
//-------------------------------------------------------------------
function Confirm(Msg)
{
return (MessageDlg(Msg, mtConfirmation, mbYesNoCancel, 0) == mrYes);
}
//-------------------------------------------------------------------
function Database()
{
var i
result = null;
for (i=0;i<=Session.DatabaseCount-1;i++)
if ((UpperCase(Session.Databases(i).DatabaseName)=="DBDEMOS") ||
(UpperCase(Session.Databases(i).AliasName)=="DBDEMOS") )
{
return Session.Databases(i);
break;
}
}
//-------------------------------------------------------------------
function DataDirectory()
{
return Database().Directory;
}
//-------------------------------------------------------------------
function PartsBeforeOpen(DataSet)
{
Vendors.Open;
}
//-------------------------------------------------------------------
function PartsCalcFields(DataSet)
{
PartsBackOrd.Value = PartsOnOrder.Value > PartsOnHand.Value;
}
//-------------------------------------------------------------------
function PartsQueryCalcFields(DataSet)
{
PartsQueryBackOrd.Value = PartsOnOrder.Value > PartsOnHand.Value;
}
//-------------------------------------------------------------------
function OrdersAfterCancel(DataSet)
{
Cust.CancelUpdates;
Parts.CancelUpdates;
Items.CancelUpdates;
Orders.CancelUpdates;
}
//-------------------------------------------------------------------
function OrdersAfterDelete(DataSet)
{
Database().ApplyUpdates([Cust, Parts, Items, Orders]);
}
//-------------------------------------------------------------------
function OrdersAfterPost(DataSet)
{
if ( Cust.Locate("CustNo", OrdersCustNo.Value, 0) &&
(CustLastInvoiceDate.Value < OrdersShipDate.Value) )
{
Cust.Edit;
CustLastInvoiceDate.Value = OrdersShipDate.Value;
Cust.Post;
}
Database().ApplyUpdates([Orders, Items, Parts, Cust]);
}
//-------------------------------------------------------------------
function OrdersBeforeCancel(DataSet)
{
if ((Orders.State == dsInsert) && !(Items.BOF && Items.EOF))
if (!Confirm("Cancel order being inserted and delete all line items?"))
Abort;
}
//-------------------------------------------------------------------
function OrdersBeforeClose(DataSet)
{
Items.Close;
Emps.Close;
CustByOrd.Close;
}
//-------------------------------------------------------------------
function OrdersBeforeDelete(DataSet)
{
if (!Confirm("Delete order and line items?"))
Abort;
else
DeleteItems();
}
//-------------------------------------------------------------------
function OrdersBeforeInsert(DataSet)
{
if (inset(Orders.State, dsEditModes) )
{
if (Confirm("An order is being processed. Save changes and start a new one?"))
Orders.Post;
else
Abort;
}
FItemNo = 1;
}
//-------------------------------------------------------------------
function OrdersBeforeOpen(DataSet)
{
CustByComp.Open;
CustByOrd.Open;
Cust.Open;
Emps.Open;
Items.Open;
}
//-------------------------------------------------------------------
function OrdersCalcFields(DataSet)
{
OrdersTaxTotal.Value = OrdersItemsTotal.Value * (OrdersTaxRate.Value / 100);
OrdersAmountDue.Value = OrdersItemsTotal.Value + OrdersTaxTotal.Value + OrdersFreight.Value - OrdersAmountPaid.Value;
}
//-------------------------------------------------------------------
function OrdersNewRecord(DataSet)
{
with (NextOrd)
{
Open;
Edit;
OrdersOrderNo.Value = NextOrdNewKey.Value;
NextOrdNewKey.Value = NextOrdNewKey.Value + 1;
Post;
Close;
}
// OrdersSaleDate.Value = Date;
OrdersShipVia.Value = "UPS";
OrdersTerms.Value = "net 30";
OrdersPaymentMethod.Value = "Check";
OrdersItemsTotal.Value = 0;
OrdersTaxRate.Value = 0;
OrdersFreight.Value = 0;
OrdersAmountPaid.Value = 0;
}
//-------------------------------------------------------------------
function ItemsAfterDelete(DataSet)
{
UpdateTotals();
}
//-------------------------------------------------------------------
function UpdateParts(PartNo,Qty)
{
if ((PartNo > 0) && (Qty != 0))
{
if (!Parts.Locate("PartNo", PartNo, 0))
Abort;
Parts.Edit;
PartsOnOrder.Value = PartsOnOrder.Value + Qty;
Parts.Post;
}
}
//-------------------------------------------------------------------
function ItemsAfterPost(DataSet)
{
FItemNo++;
UpdateTotals();
if ( !((PrevPartNo == ItemsPartNo.Value) && (PrevQty == ItemsQty.Value)))
{
UpdateParts(PrevPartNo, -PrevQty);
UpdateParts(ItemsPartNo.Value, ItemsQty.Value);
}
}
//-------------------------------------------------------------------
function EnsureOrdersEdit(DataSet)
{
Orders.Edit;
}
//-------------------------------------------------------------------
function ItemsBeforeEdit(DataSet)
{
Orders.Edit;
PrevPartNo = ItemsPartNo.Value;
PrevQty = ItemsQty.Value;
}
//-------------------------------------------------------------------
function ItemsBeforeOpen(DataSet)
{
Parts.Open;
}
//-------------------------------------------------------------------
function ItemsBeforePost(DataSet)
{
ItemsItemNo.Value = FItemNo;
}
//-------------------------------------------------------------------
function ItemsCalcFields(DataSet)
{
ItemsExtPrice.Value = ItemsQty.Value * ItemsSellPrice.Value * (100 - ItemsDiscount.Value) / 100;
}
//-------------------------------------------------------------------
function ItemsNewRecord(DataSet)
{
PrevPartNo = 0;
PrevQty = 0;
ItemsOrderNo.Value = OrdersOrderNo.Value;
ItemsQty.Value = 1;
ItemsDiscount.Value = 0;
}
//-------------------------------------------------------------------
function EmpsCalcFields(DataSet)
{
EmpsFullName.Value = EmpsLastName.Value + " " + EmpsFirstName.Value;
}
//-------------------------------------------------------------------
function DeleteItems()
{
DeletingItems = true;
Items.DisableControls;
Items.First;
for(; !Items.EOF;)
Items.Delete;
DeletingItems = false;
Items.EnableControls;
}
//-------------------------------------------------------------------
function UpdateTotals()
{
var TempTotal;
var PrevRecord;
if (DeletingItems)
Exit;
PrevRecord = Items.Bookmark;
Items.DisableControls;
Items.First;
TempTotal = 0;
for(;Items.EOF;)
{
TempTotal = TempTotal + ItemsExtPrice.Value;
Items.Next;
}
OrdersItemsTotal.Value = TempTotal;
Items.EnableControls;
if (PrevRecord !=null)
Items.Bookmark =PrevRecord;
}
//-------------------------------------------------------------------
function OrdersCustNoChange(Sender)
{
var TaxRate;
OrdersShipToContact.Value = "";
OrdersShipToPhone.Value = "";
OrdersShipToAddr1.Value = "";
OrdersShipToAddr2.Value = "";
OrdersShipToCity.Value = "";
OrdersShipToState.Value = "";
OrdersShipToZip.Value = "";
OrdersShipToCountry.Value = "";
TaxRate = Cust.Lookup("CustNo", OrdersCustNo.Value, "TaxRate");
if (TaxRate !=null)
OrdersTaxRate.Value = TaxRate;
}
//-------------------------------------------------------------------
function ItemsQtyValidate(Sender)
{
if (ItemsQty.Value < 1)
Showmessage("Must specify quantity");
}
//-------------------------------------------------------------------
function OrdersFreightValidate(Sender)
{
if (OrdersFreight.Value < 0)
Showmessage("Freight cannot be less than zero");
}
//-------------------------------------------------------------------
function ItemsPartNoValidate(Sender)
{
if (!Parts.Locate("PartNo", ItemsPartNo.Value, 0))
Showmessage("You must specify a valid PartNo");
}
//-------------------------------------------------------------------
function OrdersSaleDateValidate(Sender)
{
if (OrdersSaleDate.Value > Now )
Showmessage("Cannot enter a future date");
}
//-------------------------------------------------------------------
function CustBeforeOpen(DataSet)
{
OrdByCust.Open;
}
//-------------------------------------------------------------------
function OrdByCustCalcFields(DataSet)
{
OrdByCustAmountDue.Value = OrdByCustItemsTotal.Value +
OrdByCustItemsTotal.Value * OrdByCustTaxRate.Value / 100 +
OrdByCustFreight.Value - OrdByCustAmountPaid.Value;
}
//-------------------------------------------------------------------
function CustBeforePost(DataSet)
{
if (Cust.State == dsInsert)
with (NextCust)
{
Open;
Edit;
CustCustNo.Value = NextCustNewCust.Value;
NextCustNewCust.Value = NextCustNewCust.Value + 1;
Post;
Close;
}
}
//-------------------------------------------------------------------
function DataSetApplyUpdates(DataSet,Apply)
{
var Result;
Result = true;
with (DataSet)
{
if ( inset(State,dsEditModes) || UpdatesPending)
{
if (Apply)
{
Database.ApplyUpdates([DataSet]);
CancelUpdates;
}
else
{
if ( (MessageDlg("Unsaved changes, exit anyway?", mtConfirmation,
MkSet(mbYes, mbCancel), 0) == mrYes))
CancelUpdates;
else
Result = false;
}
}
}
return Result;
}
//-------------------------------------------------------------------
function OrdersBeforeEdit(DataSet)
{
LastItemQuery.Close;
LastItemQuery.Open;
if (LastItemQuery.Fields(0).IsNull)
FItemNo = 1
else
FItemNo = LastItemQuery.Fields(0).Value + 1;
}
//-------------------------------------------------------------------
function EditUpdateError(DataSet,E, UpdateKind,UpdateAction)
{
var Key;
var UpdErrMsg = "%s."+chr(13)+chr(10)+"Discard the edits to %S %S and continue updating?";
if (UpdateKind == ukDelete)
Key = Dataset.Fields(0).OldValue;
else
Key = Dataset.Fields(0).NewValue;
if (MessageDlg(Format(UpdErrMsg, [E.Message, DataSet.Fields[0].DisplayLabel, Key]),
mtConfirmation, MkSet(mbYes, mbCancel), 0) == mrYes)
UpdateAction = uaSkip;
else
UpdateAction = uaAbort;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -