⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datamod.js

📁 Dream Scripter v3.5 Full Source Code
💻 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 + -