/** * Get (or make) the current record for this reference. */ public Record makeReferenceRecord(RecordOwner recordOwner) { return new ApTrx(recordOwner); } /**
/** * Get the record type from the field that specifies the record type. * (Override this). * @return The record type (as an object). */ public BaseField getSharedRecordTypeKey() { return this.getField(ApTrx.AP_TRX_TYPE_ID); } /**
recApTrx = new ApTrx(recordOwner); recApTrxNew = recApTrx; recApTrx.setKeyArea(ApTrx.TOUR_ID_KEY); recApTrx.addListener(new SubFileFilter(this)); recApTrx.addListener(new UpdateDepEstHandler(null)); ApTrx recApTrxAdd = new ApTrx(recordOwner); // This one I use for new ApTrxs. recApTrxAdd.addListener(new UpdateDepEstHandler(null)); recApTrx.close(); BaseTable tblBookingDetail = recBookingDetail.getTable(); BaseTable tblApTrx = recApTrx.getTable(); recBookingDetail = (BookingDetail)tblBookingDetail.next(); recApTrx = (ApTrx)tblApTrx.next(); Vendor recVendor = null; if ((recApTrx == null) || ((recBookingDetail != null) && (recBookingDetail.getField(BookingDetail.VENDOR_ID).compareTo(recApTrx.getField(ApTrx.VENDOR_ID)) > 0))) bAddNewVoucher = true; else || ((recApTrx != null) && (recBookingDetail.getField(BookingDetail.VENDOR_ID).compareTo(recApTrx.getField(ApTrx.VENDOR_ID)) < 0))) bAddNewVoucher = false; else recVendor = (Vendor)((ReferenceField)recApTrx.getField(ApTrx.VENDOR_ID)).getReference(); if (OperationTypeField.ALL_TOGETHER_CODE.equalsIgnoreCase(recVendor.getField(Vendor.OPERATION_TYPE_CODE).toString())) bAddNewVoucher = false;
strDesc = ((ReferenceField)recApTrx.getField(ApTrx.TOUR_ID)).getReference().getField(TourModel.DESCRIPTION).toString(); Date dateStartService = ((DateField)recApTrx.getField(ApTrx.START_SERVICE_DATE)).getDateTime(); recApTrxNew = new ApTrx(this.getOwner().findRecordOwner()); Object bookmarkPP = null; if (!recApTrx.getField(ApTrx.PREPAYMENT_AP_TRX_ID).isNull()) if (recApTrxNew.setHandle(bookmark, DBConstants.BOOKMARK_HANDLE) == null) return DBConstants.ERROR_RETURN; recApTrxNew.edit(); if (iChangeType == DBConstants.AFTER_DELETE_TYPE) recApTrxNew.remove(); return DBConstants.NORMAL_RETURN; recApTrxNew.addNew(); if (iChangeType == DBConstants.AFTER_DELETE_TYPE) return DBConstants.NORMAL_RETURN; TrxStatus recTrxStatus = (TrxStatus)((ReferenceField)recApTrxNew.getField(ApTrx.TRX_STATUS_ID)).getReferenceRecord(); int iTrxStatus = recTrxStatus.getTrxStatusID(TransactionType.ACCTPAY, ApTrx.AP_TRX_FILE, ApTrx.PREPAYMENT_REQUEST); if (recApTrxNew.getEditMode() != DBConstants.EDIT_ADD) if (recApTrxNew.getField(ApTrx.TRX_STATUS_ID).getValue() != iTrxStatus) return DBConstants.ERROR_RETURN; // Prepayment request probably already paid! recApTrxNew.getField(ApTrx.TRX_STATUS_ID).setValue(iTrxStatus); recApTrxNew.getField(ApTrx.VENDOR_ID).setValue(iVendorID); PrepaymentAcctHandler listener = null; recApTrxNew.getField(ApTrx.TOUR_ID).addListener(listener = new PrepaymentAcctHandler(null)); recApTrxNew.getField(ApTrx.TOUR_ID).setValue(iTourID); recApTrxNew.getField(ApTrx.TOUR_ID).removeListener(listener, true);
int iOldOpenMode = this.getOpenMode(); try { if (this.getListener(UpdateDepEstHandler.class) == null) this.addListener(new UpdateDepEstHandler(null)); this.setOpenMode(iOldOpenMode & ~DBConstants.OPEN_READ_ONLY); // Allow write (I don't know where this file has been) this.addNew(); // Each A/P Trx contains one detail item if (OperationTypeField.INDIVIDUALLY_CODE.equalsIgnoreCase(recVendor.getField(Vendor.OPERATION_TYPE_CODE).toString())) this.addNew(); // Each A/P Trx contains one detail item else this.getField(ApTrx.TOUR_ID).moveFieldToThis((BaseField)recBookingDetail.getField(BookingDetailModel.TOUR_ID)); this.getField(ApTrx.VENDOR_ID).moveFieldToThis(recVendor.getField(Vendor.ID)); if (OperationTypeField.LIKE_TOGETHER_CODE.equalsIgnoreCase(recVendor.getField(Vendor.OPERATION_TYPE_CODE).toString())) this.getField(ApTrx.PRODUCT_TYPE_ID).moveFieldToThis((BaseField)recBookingDetail.getField(BookingDetailModel.PRODUCT_TYPE_ID)); if ((this.seek(">=")) && (this.getField(ApTrx.TOUR_ID).equals(recBookingDetail.getField(BookingDetailModel.TOUR_ID))) && (this.getField(ApTrx.VENDOR_ID).equals(recVendor.getField(Vendor.ID)))) this.addNew(); this.addNew(); if (this.getEditMode() == DBConstants.EDIT_ADD) this.addNewApTrx((BaseField)recBookingDetail.getField(BookingDetailModel.TOUR_ID), recVendor, (int)recBookingDetail.getField(BookingDetailModel.PRODUCT_TYPE_ID).getValue()); ((BaseField)recBookingDetail.getField(BookingDetailModel.AP_TRX_ID)).moveFieldToThis(this.getField(ApTrx.ID)); this.edit(); this.addBookingDetailInfo(recBookingDetail);
dExchange = dCheckBalanceUSD / dCheckBalance; try { recApTrx.close(); while (recApTrx.hasNext()) recApTrx.next(); if (recApTrx.getField(ApTrx.AMOUNT_SELECTED).getValue() == 0) continue; // Not selected if (dCheckBalance <= 0) break; recApTrx.edit(); double dAmountSelected = recApTrx.getField(ApTrx.AMOUNT_SELECTED).getValue(); double dInvoiceAmount = recApTrx.getField(ApTrx.INVOICE_AMOUNT).getValue(); double dInvoiceAmountUSD = recApTrx.getField(ApTrx.INVOICE_LOCAL).getValue(); double dInvoiceBalance = recApTrx.getField(ApTrx.INVOICE_BALANCE).getValue(); double dInvoiceBalanceUSD = recApTrx.getField(ApTrx.INVOICE_BALANCE_LOCAL).getValue(); recApTrx.getField(ApTrx.INVOICE_LOCAL).setValue((Math.floor(dInvoiceAmount * dExchangeRate * 100 + 0.5)) / 100); recApTrx.getField(ApTrx.AMOUNT_SELECTED).setValue(Math.max(0, dNewBalance)); // Don't select P/P recApTrx.getField(ApTrx.INVOICE_BALANCE).setValue(dNewBalance); recApTrx.getField(ApTrx.INVOICE_BALANCE_LOCAL).setValue(dNewBalanceUSD); int iOrigApStatus = (int)recApTrx.getField(ApTrx.TRX_STATUS_ID).getValue(); if (dNewBalance <= 0) TrxStatus recTrxStatus = (TrxStatus)((ReferenceField)recApTrx.getField(ApTrx.TRX_STATUS_ID)).getReference(); if (recTrxStatus != null)
this.getField(ApTrx.DESCRIPTION).setString(DBConstants.BLANK); ((DateField)this.getField(ApTrx.START_SERVICE_DATE)).setData(null); ((DateField)this.getField(ApTrx.END_SERVICE_DATE)).setData(null); this.getField(ApTrx.DEPARTURE_ESTIMATE).setValue(0.00); this.getField(ApTrx.DEPARTURE_ESTIMATE_LOCAL).setValue(0.00); int iOldOpenMode = this.getOpenMode(); try { if (this.getListener(UpdateDepEstHandler.class) == null) this.addListener(new UpdateDepEstHandler(null)); this.setOpenMode(iOldOpenMode & ~DBConstants.OPEN_READ_ONLY); // Allow write (I don't know where this file has been) this.edit(); if (!recBookingDetail.getField(BookingDetailModel.AP_TRX_ID).equals(this.getField(ApTrx.ID))) bProcessThisRecord = false; // If this is already tacked to another ApTrx, skip it. if (!this.getField(ApTrx.TOUR_ID).equals(recBookingDetail.getField(BookingDetailModel.TOUR_ID))) break; if (this.getField(ApTrx.VENDOR_ID).compareTo(recBookingDetail.getField(BookingDetailModel.VENDOR_ID)) != 0) break; if (recVendor.getEditMode() == DBConstants.EDIT_CURRENT) if (OperationTypeField.LIKE_TOGETHER_CODE.equalsIgnoreCase(recVendor.getField(Vendor.OPERATION_TYPE_CODE).toString())) if (this.getField(ApTrx.PRODUCT_TYPE_ID).compareTo(recBookingDetail.getField(BookingDetailModel.PRODUCT_TYPE_ID)) != 0) break; // Each A/P Trx contains all detail items in this product type this.addBookingDetailInfo(recBookingDetail); ((BaseField)recBookingDetail.getField(BookingDetailModel.AP_TRX_ID)).moveFieldToThis(this.getField(ApTrx.ID)); if (recBookingDetail.getEditMode() == DBConstants.EDIT_IN_PROGRESS)
/** * Add the behaviors to calculate the "Amount Selected" and Balance field. */ public ApTrx addSelectBehaviors() { RecordOwner recordOwner = this.findRecordOwner(); ApTrx recApTrx2 = new ApTrx(recordOwner); // Don't add second copy to screen if (recordOwner != null) recordOwner.removeRecord(recApTrx2); this.addListener(new FreeOnFreeHandler(recApTrx2)); // ...but be sure to free it recApTrx2.addListener(new SubFileFilter(this)); this.addListener(new RecountOnValidHandler(recApTrx2)); BooleanField fldTrue = new BooleanField(null, "True", 1, null, new Boolean(true)); recApTrx2.addListener(new FreeOnFreeHandler(fldTrue)); recApTrx2.addListener(new CompareFileFilter(ApTrx.ACTIVE_TRX, fldTrue, "=", fldTrue, true)); recApTrx2.addListener(new SubCountHandler(this.getField(Vendor.AMOUNT_SELECTED), ApTrx.AMOUNT_SELECTED, true, true)); recApTrx2.addListener(new SubCountHandler(this.getField(Vendor.VENDOR_BALANCE), ApTrx.INVOICE_BALANCE, true, true)); return recApTrx2; } /**
this.getField(ApTrx.AP_TRX_TYPE_ID).setValue(ApTrx.AP_TRX_TYPE); if (iProductTypeID == ProductTypeModel.AIR_ID) this.getField(ApTrx.AP_TRX_TYPE_ID).setValue(ApTrx.TICKET_TRX_TYPE); this.addNew(); recApTrx = (ApTrx)this.getTable().getCurrentTable().getRecord(); recApTrx.getField(ApTrx.TOUR_ID).moveFieldToThis(fldTourID); recApTrx.getField(ApTrx.VENDOR_ID).moveFieldToThis(recVendor.getField(Vendor.ID)); recApTrx.getField(ApTrx.PRODUCT_TYPE_ID).setValue(iProductTypeID); TrxStatus recTrxStatus = (TrxStatus)((ReferenceField)recApTrx.getField(ApTrx.TRX_STATUS_ID)).getReferenceRecord(); int iTrxStatusID = recTrxStatus.getTrxStatusID(TransactionType.ACCTPAY, ApTrx.AP_TRX_FILE, ApTrx.DEP_ESTIMATE); recApTrx.getField(ApTrx.TRX_STATUS_ID).setValue(iTrxStatusID); recApTrx.add(); Object bookmark = recApTrx.getLastModified(DBConstants.DATA_SOURCE_HANDLE); recApTrx.setHandle(bookmark, DBConstants.DATA_SOURCE_HANDLE); } catch (DBException ex) { ex.printStackTrace();
/** * AddMasterListeners Method. */ public void addMasterListeners() { super.addMasterListeners(); this.getField(ApTrx.TRX_STATUS_ID).addListener(new UpdateActiveTrxStatus(this.getField(ApTrx.ACTIVE_TRX))); this.getField(ApTrx.DEPARTURE_DATE).addListener(new GetDepartureDateHandler((TourField)this.getField(ApTrx.TOUR_ID))); this.addListener(new NoDeleteModifyHandler(true, false)); Record recApControl = null; RecordOwner recordOwner = this.findRecordOwner(); if (recordOwner != null) recApControl = (Record)recordOwner.getRecord(ApControl.AP_CONTROL_FILE); if (recApControl == null) { recApControl = new ApControl(recordOwner); this.addListener(new FreeOnFreeHandler(recApControl)); } if (recApControl.getField(ApControl.AUTO_AP_CODE).getState() == true) this.addListener(new MoveIDToCodeHandler((String)null)); this.addListener(new ApTrxStatusHandler(null)); } /**
recApTrx.edit(); TrxStatus recTrxStatus = (TrxStatus)((ReferenceField)recApTrx.getField(ApTrx.TRX_STATUS_ID)).getReference(); String strPaidStatus = PaymentHistory.PREPAYMENT_DIST; if (recTrxStatus != null) TransactionType recTransactionType = (TransactionType)recordOwner.getRecord(TransactionType.TRANSACTION_TYPE_FILE); recTransactionType.getTrxTypeID(TransactionType.ACCTPAY, PaymentHistory.PAYMENT_HISTORY_FILE, strPaidStatus, PaymentHistory.DIST_TYPE); BaseField fldVendorID = recApTrx.getField(ApTrx.VENDOR_ID); double dExchange = 1; if ((recApTrx.getField(ApTrx.INVOICE_LOCAL).getValue() != 0) && (recApTrx.getField(ApTrx.INVOICE_AMOUNT).getValue() != 0)) dExchange = recApTrx.getField(ApTrx.INVOICE_LOCAL).getValue() / recApTrx.getField(ApTrx.INVOICE_AMOUNT).getValue(); BaseField fldTrxID = recApTrx.getField(ApTrx.ID); double dDistributedAmount = -recordOwner.getRecord(Vendor.VENDOR_FILE).getField(Vendor.AMOUNT_SELECTED).getValue(); if (-recApTrx.getField(ApTrx.INVOICE_BALANCE).getValue() < -dDistributedAmount) dDistributedAmount = recApTrx.getField(ApTrx.INVOICE_BALANCE).getValue(); // Negative double dBalance = recApTrx.getField(ApTrx.INVOICE_BALANCE).getValue(); // Negative double dStartBalanceUSD = recApTrx.getField(ApTrx.INVOICE_BALANCE_LOCAL).getValue(); // Negative recApTrx.getField(ApTrx.INVOICE_BALANCE).setValue(dBalance); recApTrx.getField(ApTrx.INVOICE_BALANCE_LOCAL).setValue(dBalanceUSD); int iOrigApStatus = (int)recApTrx.getField(ApTrx.TRX_STATUS_ID).getValue(); int iNewTrxStatus = -1; if (dBalance == 0) recApTrx.getField(ApTrx.TRX_STATUS_ID).setValue(iNewTrxStatus); Object bookmark = recApTrx.getHandle(DBConstants.DATA_SOURCE_HANDLE);
/** * Add all the screen listeners. */ public void addListeners() { super.addListeners(); this.addMainKeyBehavior(); TrxStatus recTrxStatus = (TrxStatus)this.getRecord(TrxStatus.TRX_STATUS_FILE); EnableScreenHandler behavior = new EnableScreenHandler(ApTrx.TRX_STATUS_ID); this.getMainRecord().addListener(behavior); recTrxStatus.getTrxStatusID(TransactionType.ACCTPAY, ApTrx.AP_TRX_FILE, ApTrx.PREPAYMENT); behavior.addComparison(recTrxStatus.getField(TrxStatus.ID).getData()); recTrxStatus.getTrxStatusID(TransactionType.ACCTPAY, ApTrx.AP_TRX_FILE, ApTrx.DEBIT_MEMO); behavior.addComparison(recTrxStatus.getField(TrxStatus.ID).getData()); recTrxStatus.getTrxStatusID(TransactionType.ACCTPAY, ApTrx.AP_TRX_FILE, ApTrx.BROKER_PAYMENT); behavior.addComparison(recTrxStatus.getField(TrxStatus.ID).getData()); m_recSelectApTrx = ((Vendor)this.getRecord(Vendor.VENDOR_FILE)).addSelectBehaviors(); FilterApTrxHandler filter = new FilterApTrxHandler(null); m_recSelectApTrx.addListener(filter); filter.addTrxStatusID(ApTrx.INVOICE); filter.addTrxStatusID(ApTrx.INVOICE_NON_TOUR); filter.addTrxStatusID(ApTrx.CREDIT_MEMO); } /**
/** * Override this to open the main file. * <p />You should pass this record owner to the new main file (ie., new MyNewTable(thisRecordOwner)). * @return The new record. */ public Record openMainRecord() { return new ApTrx(this); } /**
double dProductCost = this.getField(ApTrx.DEPARTURE_ESTIMATE).getValue(); dProductCost += recBookingDetail.getField(BookingDetailModel.TOTAL_COST).getValue(); this.getField(ApTrx.DEPARTURE_ESTIMATE).setValue(dProductCost); double dProductCostLocal = this.getField(ApTrx.DEPARTURE_ESTIMATE_LOCAL).getValue(); dProductCostLocal += recBookingDetail.getField(BookingDetailModel.TOTAL_COST_LOCAL).getValue(); this.getField(ApTrx.DEPARTURE_ESTIMATE_LOCAL).setValue(dProductCostLocal); if (dProductCostLocal != 0) this.getField(ApTrx.DEPARTURE_EXCHANGE).setValue(dProductCost / dProductCostLocal); String strServiceDesc = this.getField(ApTrx.DESCRIPTION).getString(); if (strServiceDesc.length() > 0) strServiceDesc += ", "; strServiceDesc += recBookingDetail.getProductDesc(); this.getField(ApTrx.DESCRIPTION).setString(strServiceDesc); Date dateStart = ((DateField)this.getField(ApTrx.START_SERVICE_DATE)).getDateTime(); Date dateEnd = ((DateField)this.getField(ApTrx.END_SERVICE_DATE)).getDateTime(); Date date = recBookingDetail.getStartDate(); if ((dateStart == null) || (date.getTime() < dateStart.getTime())) if ((dateEnd == null) || (date.getTime() > dateEnd.getTime())) dateEnd = date; ((DateField)this.getField(ApTrx.START_SERVICE_DATE)).setDate(dateStart, DBConstants.DISPLAY, DBConstants.SCREEN_MOVE); ((DateField)this.getField(ApTrx.END_SERVICE_DATE)).setDate(dateEnd, DBConstants.DISPLAY, DBConstants.SCREEN_MOVE); this.getField(ApTrx.FINALIZATION_DATE).setValue(DateTimeField.currentTime()); if (this.getField(ApTrx.VENDOR_ID).isNull()) if (dProductCost == 0.0)
/** * Override this to open the main file. * <p />You should pass this record owner to the new main file (ie., new MyNewTable(thisRecordOwner)). * @return The new record. */ public Record openMainRecord() { return new ApTrx(this); } /**
/** * Get the product category for this tour. */ public ProductCategoryModel getProductCategory() { if (this.getField(ApTrx.TOUR_ID).isNull()) return null; // No tour Record recTour = ((ReferenceField)this.getField(ApTrx.TOUR_ID)).getReference(); if (recTour == null) return null; TourHeaderModel recTourHeader = (TourHeaderModel)((ReferenceField)recTour.getField(TourModel.TOUR_HEADER_ID)).getReference(); if (recTourHeader == null) return null; ProductCategoryModel recProductCategory = (ProductCategoryModel)((ReferenceField)recTourHeader.getField(TourHeaderModel.PRODUCT_CAT_ID)).getReference(); return recProductCategory; } /**
/** * Override this to open the main file. * <p />You should pass this record owner to the new main file (ie., new MyNewTable(thisRecordOwner)). * @return The new record. */ public Record openMainRecord() { return new ApTrx(this); } /**
try { this.addNew(); this.getField(PaymentHistory.AP_TRX_ID).moveFieldToThis(recApTrx.getField(ApTrx.ID)); this.getField(PaymentHistory.TRX_STATUS_ID).setValue(iTrxStatusID); this.getField(PaymentHistory.TRX_DATE).setValue(DateTimeField.todaysDate());
/** * OpenHeaderRecord Method. */ public Record openHeaderRecord() { return new ApTrx(this); } /**
/** * OpenHeaderRecord Method. */ public Record openHeaderRecord() { return new ApTrx(this); } /**