// *** Generated Source File ***
// Portions Copyright (c) 1996-2001, SilverStream Software, Inc., All Rights Reserved
/**
*
Title:
* Description:
* Copyright: Copyright (c) 2002
* Company:
* @author
*/
package com.gpc.pointofsale.ejb.invoice;
import java.math.BigDecimal;
import java.rmi.RemoteException;
import java.util.Date;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Vector;
import java.util.List;
import java.util.Map;
import javax.ejb.EJBObject;
import com.gpc.common.ProtobaseException;
import com.gpc.common.exception.ApplicationException;
import com.gpc.common.util.LockableBoolean;
import com.gpc.common.util.azure.monitor.LogType;
import com.gpc.valueobjects.bre.BREStatusVO;
import com.gpc.valueobjects.cepdi.CEPDIStatusVO;
import com.gpc.valueobjects.invoice.InvoiceVO;
import com.gpc.valueobjects.invoice.PaymentVO;
import com.gpc.valueobjects.customer.CustomerVO;
import com.gpc.valueobjects.invoice.SavedInvoiceQuoteVO;
import com.gpc.valueobjects.invoice.line.BaseLineItemVO;
import com.gpc.valueobjects.ordering.notification.OrderUpdateDetail;
import com.gpc.valueobjects.ordering.notification.OrderNotificationStatus;
import com.gpc.valueobjects.ordering.salesorder.SalesOrderVO;
import com.gpc.valueobjects.profile.InvoiceMessageProfileVO;
import com.gpc.valueobjects.report.FwoReportResponse;
import com.gpc.valueobjects.report.GenericReportRequest;
public interface SBInvoice extends EJBObject {
public InvoiceVO postInvoice(InvoiceVO invoiceVO) throws RemoteException, ApplicationException;
public InvoiceVO procesProtobaseAndPostInvoice(InvoiceVO invoiceVO, Boolean printingOnPlainPaper) throws RemoteException, ApplicationException, ProtobaseException;
public InvoiceVO procesProtobaseAndPostInvoice(InvoiceVO invoiceVO) throws RemoteException, ApplicationException, ProtobaseException;
public InvoiceVO postROAInvoice(InvoiceVO invoiceVO, Boolean printingOnPlainPaper) throws RemoteException, ApplicationException;
public InvoiceVO findInvoice(Integer invoiceID, Integer loc) throws RemoteException, ApplicationException;
public InvoiceVO findInvoiceByJournalKey(String journalKey, Integer loc) throws RemoteException, ApplicationException;
public void voidInvoice(Integer id, Integer loc, Integer altCoreOrPartsBilledInvID ,String clientIPAddress, Integer modifiedByEmployeeID, String programSource) throws RemoteException, ApplicationException;
public void changePONumber(Integer invoiceID, Integer loc, String aPONumber) throws RemoteException, ApplicationException;
public void createInvoicePayments(Integer invoiceID, Integer loc, Vector paymentVOs, boolean deleteOldPayments, Timestamp transactionDate) throws RemoteException, ProtobaseException, ApplicationException;
public InvoiceVO getReverseInvoiceVO(Integer originalInvoiceID, Integer loc, boolean debit) throws RemoteException, ApplicationException;
public InvoiceVO getRebillInvoiceVO(Integer originalInvoiceID, Integer loc, HashMap priceCorrections) throws RemoteException, ApplicationException;
public InvoiceMessageProfileVO getMOD(Integer loc) throws RemoteException, ApplicationException;
public void sortInvoiceItems(Integer invoiceID, Integer sortOrder, Integer loc)
throws RemoteException, ApplicationException;
public Integer getInvoiceNumber (Integer loc, //Location
Integer id //ID
) throws ApplicationException, RemoteException;
public InvoiceVO findInvoiceForReturn(BaseLineItemVO baseLineItemVO, Integer customerID, Integer invoiceNumber)
throws RemoteException, ApplicationException;
/**
* This method is used to retrieve the invoices for a returned part number
* as a collection of InvoiceLineItemReturnVO
*
* @param customerVO - value object containing customer details
* @param partNum - part number of a returned part
* @param lineabbrev - line abbreviation of a returned part
* @param Boolean - coreOnly
* @param Boolean - hasCoreCharge
* @param Boolean - isKitPart
* @param savedInvoiceId - ID of the saved invoice
*
* @return The Vector of InvoiceLineItemReturnVO
*
* @throws Remote Exception, ApplicationException
*/
public Vector findInvoiceByCustPartLine(CustomerVO customerVO,
String partNum, String lineAbbrev, Boolean coreOnly, Boolean hasCoreCharge,
Boolean isKitPart, Integer savedInvoiceId) throws RemoteException, ApplicationException;
public Vector findInvoiceByCustPartLine(CustomerVO customerVO,
String partNum, String lineAbbrev, Boolean coreOnly, Boolean hasCoreCharge,
Boolean isKitPart, Integer savedInvoiceId, Integer invoiceId) throws RemoteException, ApplicationException;
public Boolean doesInvExist(InvoiceVO invoiceVO) throws RemoteException, ApplicationException;
//Saved Invoices methods
public Integer saveInvoice(InvoiceVO invoiceVO) throws RemoteException, ApplicationException;
public Vector recallAllSavedInvoices(Integer loc, List savedInvoiceType) throws RemoteException, ApplicationException;
public Vector recallSavedInvoices(Integer loc, Integer customerID, List savedInvoiceType) throws RemoteException, ApplicationException;
public InvoiceVO recallSavedInvoice(Integer invoiceID, Integer loc) throws RemoteException, ApplicationException;
//Modified the method signature to fix 33959 bug
public void deleteSavedInvoice(InvoiceVO invoiceVO, Boolean isDeleted) throws RemoteException, ApplicationException;
public void updateSavedInvItem(BaseLineItemVO baseLineItemVO) throws RemoteException, ApplicationException;
public void deleteSavedInvItem(BaseLineItemVO baseLineItemVO) throws RemoteException, ApplicationException;
public int getSavedInvItemCount(int savedInvoiceID) throws RemoteException, ApplicationException ;
// Printing and Reprinting Invoices
public Integer printInvoice(InvoiceVO invoiceVO, Boolean printingOnPaper) throws RemoteException, ApplicationException;
public FwoReportResponse printInvoice(GenericReportRequest rptRequest) throws RemoteException, ApplicationException;
public Integer reprintInvoice(InvoiceVO invoiceVO) throws RemoteException, ApplicationException;
public Vector getCashierInvoices(Integer loc, Integer transactionNum) throws RemoteException, ApplicationException;
public Boolean doesInvHaveReturns(Integer loc, Integer invoiceID) throws RemoteException, ApplicationException;
public void emailEInvoiceCopiesToCustomer(List invoices)throws RemoteException, ApplicationException;
public void emailEInvoiceCopiesEOD(List invoices, Integer loc)throws RemoteException, ApplicationException;
public void emailEInvoiceCopiesEOW(List invoices, Integer loc)throws RemoteException, ApplicationException;
// Method added to get alternate core invoice number and invoice id
public Integer[] getAlternateCoreInvoiceNumberAndID(Integer invoiceID, Integer loc) throws RemoteException, ApplicationException;
// Method added to check of main invoice is voided or not
public Object[] isMainInvoiceVoided(Integer invoiceID, Integer loc) throws RemoteException, ApplicationException;
// Method added to fix bug 26665
public Vector getReturnItems(BaseLineItemVO baseLineItemVO) throws RemoteException, ApplicationException;
/**
* This method is used to retrieve all invoice line item records for a
* returned kit part number.
*
* @param invoiceID - invoiceID of a kit
* @param loc - Location
* @param sequence - Sequence of product kit selected for return
*
* @return The List of kit line items
*
* @throws RemoteException, ApplicationException
*/
public List findInvoiceLineItemsForReturn(Integer invoiceID, Integer loc, Short sequence)
throws RemoteException, ApplicationException;
public void exportInvoice(String startDate,String endDate,String customerNumFrom,
String customerNumTo)throws RemoteException, ApplicationException;
/**
* This method is used to retrieve all SORT_FIELD in TEMP_INVOICE_EXPORT
*
* @return The List of SORT_FIELD
*
* @throws RemoteException, ApplicationException
*/
public List getSortFieldOfExportInvoice()throws RemoteException, ApplicationException ;
public void refreshSavedInvoice(Integer savedInvoiceID, Integer loc, Date refreshTime) throws RemoteException, ApplicationException;
/**
* This method returns invoice id.
*
* @param loc Location.
* @param invoiceNumber Invoice number.
* @param customerId Customer ID.
* @param invoiceDate Invoice Date.
* @param invoiceTotal Invoice Total.
* @param salesYearMonth Sales Year Month.
* @param accountingDay Accounting Day.
* @return Invoice id.
* @throws ApplicationException if an error occurs.
* @throws RemoteException if an error occurs.
*/
public Integer getInvoiceId(Integer loc, Integer invoiceNumber, Integer customerId,
java.sql.Date invoiceDate, BigDecimal invoiceTotal, java.sql.Date salesYearMonth,
Integer accountingDay) throws RemoteException, ApplicationException;
/**
* Method to check if RGN is Created for the selected invoice.
*
* @param invoiceId the invoice id
* @param loc the location code
* @return the list of parts that are in associated with an RGN for the given invoice id
* @throws RemoteException If any RemoteException occurs
* @throws ApplicationException If any application specific exception occurs
*/
public List getRGNNumber(Integer invoiceId, Integer loc)
throws RemoteException, ApplicationException;
/**
* Method to get NAPA Reward non eligible line items.
*
* @return the list of line items that are non eligible for NAPA reward
* @throws RemoteException If any RemoteException occurs
* @throws ApplicationException If any application specific exception occurs
*/
public List getNapaRewardsNonEligibleList() throws RemoteException, ApplicationException;
/**
* This method updates NAPA Rewards data in INVOICE table.
*
* @param id
* @param loc
* @param refLoyaltyInvoiceStatusId
* @throws RemoteException
* @throws ApplicationException
*/
public void updateInvoiceWithNAPARewardsData(Integer id, Integer loc,
byte refLoyaltyInvoiceStatusId) throws RemoteException, ApplicationException;
/**
* The method returns the refInvoiceFormTpeID value of the printer.
* @return byte - refInvoiceFormTypeId.
* @throws RemoteException If any RemoteException occurs
* @throws ApplicationException If any application specific exception occurs
*/
public byte getRefInvoiceFormTypeId(int loc, int printerID) throws RemoteException, ApplicationException;
/**
* This method prints the cores pending return report if the invoice is eligible.
*
* @param invoiceVO
* @param printingPaperFormat
* @return boolean
* @throws RemoteException If any RemoteException occurs
* @throws ApplicationException If any application specific exception occurs
*/
public boolean printCoresPendingReturnReportIfEligible(InvoiceVO invoiceVO,
Boolean printingPaperFormat) throws RemoteException, ApplicationException;
/**
* This will load existing FULFILLMENT by SALES_ORDER.ID
*
* @param salesOrderId
* @param loc
* @return
* @throws RemoteException
* @throws ApplicationException
*/
public List findFulfillmentsBySalesOrderId(final Integer salesOrderId, Integer loc) throws RemoteException, ApplicationException;
public void createFulfillments(SalesOrderVO salesOrderVO) throws RemoteException, ApplicationException;
public CEPDIStatusVO stampEInvoice(final InvoiceVO invoiceVO) throws RemoteException, ApplicationException;
public boolean notifyNolOrderCancel(SalesOrderVO salesOrderVO, String reasonCode) throws RemoteException ;
public void notifyNolOrderUpdate(SalesOrderVO salesOrderVO) throws RemoteException;
public boolean notifyNolOrderPickup(SalesOrderVO salesOrderVO) throws RemoteException;
public String nolOrderPaymentValidation(BigDecimal invoiceTotal,int salesOrderId,int numberOfLines,int loc) throws RemoteException;
public void updateWIPSavedInvoice(Integer savedInvoiceId, Integer loc) throws RemoteException,ApplicationException;
public OrderNotificationStatus sendOrderUpdateNotification(
final OrderUpdateDetail orderUpdateDetail) throws RemoteException, ApplicationException;
public SalesOrderVO findSalesOrderById(Integer salesOrderId, Integer location) throws RemoteException, ApplicationException;
public OrderNotificationStatus sendNXPInterstoreUpdateNotification(
final InvoiceVO invoiceVO, final boolean isCancelInvoice) throws RemoteException, ApplicationException;
/**
* This method gets the CSG restricted original invoice.
*
* @param invoiceNumber
* @param loc
* @return InvoiceVO
* @throws RemoteException
* @throws ApplicationException
*/
public InvoiceVO getOriginalCSGRestrictedInvoice(Integer invoiceNumber, Integer loc)
throws RemoteException, ApplicationException ;
/**
* This method finds any return invoice against original invoice.
*
* @param loc
* @param invoiceNumber
* @return Boolean
* @throws RemoteException
* @throws ApplicationException
*/
public Boolean doesCSGInvoiceHaveReturns(Integer loc, Integer invoiceNumber) throws RemoteException, ApplicationException;
/**
* This method validates the charge invoice against the Business Rules Engine by invoking BRE service.
*
* @param invoiceVO
* @return BREStatusVO
* @throws RemoteException
* @throws ApplicationException
*/
public BREStatusVO validateBREInvoice(final InvoiceVO invoiceVO, String action) throws RemoteException, ApplicationException;
public BREStatusVO validateRemoteBREInvoice(final InvoiceVO invoiceVO, String action, final CustomerVO customerVO) throws RemoteException, ApplicationException;
public String generateAndTransmitEInvoice(final InvoiceVO invoiceVO, final boolean isLocalInvoice) throws RemoteException, ApplicationException;
/**
* This method gets the AR invoice details.
*
* @param invoiceNumber
* @param loc
* @param customerId
* @return InvoiceVO
* @throws RemoteException
* @throws ApplicationException
*/
public InvoiceVO getARStoreInvoiceDetails(Integer loc, Integer invoiceNumber, Integer customerId) throws RemoteException, ApplicationException;
/**
* This method gets the Refund Payment Methods.
*
* @param getValidRefundPaymentMethods
* @throws RemoteException
* @throws ApplicationException
*/
public Map getValidRefundPaymentMethods(String originalPaymentMethodIds)
throws RemoteException, ApplicationException ;
/**
* getQuoteNumber method is to get the SavedQuoteNumber
* @param TABLE_NAME
* @param loc
* @return QuoteNumber
* @throws RemoteException
* @throws ApplicationException
*/
public Integer getQuoteNumber(String TABLE_NAME, Integer loc) throws RemoteException, ApplicationException;
/**
* insertSavedInvoiceQuote method helps to insert the Quote details in the Table
* @param savedInvoiceQuoteVO
* @param loc
* @return SavedInvoiceQuoteVO
* @throws RemoteException
* @throws ApplicationException
*/
public SavedInvoiceQuoteVO insertSavedInvoiceQuote(SavedInvoiceQuoteVO savedInvoiceQuoteVO, Integer loc)
throws RemoteException, ApplicationException;
/**
* getSavedQuoteDetails is to get the saved Quote details from the DB.
* @param invoiceID
* @param integer
* @return SavedInvoiceQuoteVO
* @throws RemoteException
* @throws ApplicationException
*/
public SavedInvoiceQuoteVO getSavedQuoteDetails(Integer invoiceID, Integer integer)
throws RemoteException, ApplicationException;
/**
* checkCalcTaxOnQuote is to get the saved Quote details from the DB.
* @param invoiceID
* @param integer
* @return SavedInvoiceQuoteVO
* @throws RemoteException
* @throws ApplicationException
*/
public LockableBoolean checkCalcTaxOnQuote()
throws RemoteException, ApplicationException;
/**
* sendEmailQuote is to send the Email Quote to customer.
* @param invoice
* @throws RemoteException
* @throws ApplicationException
*/
public void sendEmailQuote(InvoiceVO invoice) throws RemoteException, ApplicationException;
/**
* updateSavedInvoiceVo is to do the update the savedInvoiceValue in table.
* @param invoiceVO
* @param currUser
* @throws RemoteException
* @throws ApplicationException
*/
public void updateSavedInvoiceVo(InvoiceVO invoiceVO, Integer currUser) throws RemoteException,ApplicationException;
/**
* getTableSequenceID method is to get the last Sequence number.
* @param TABLE_NAME
* @param loc
* @return
* @throws RemoteException
* @throws ApplicationException
*/
public Integer getTableSequenceID(String TABLE_NAME, Integer loc) throws RemoteException, ApplicationException;
/**
* setUpdatedTableSequenceID insert the updated sequence number into the table.
* @param seq
* @param TABLE_NAME
* @param loc
* @throws RemoteException
* @throws ApplicationException
*/
public void setUpdatedTableSequenceID(Integer seq, String TABLE_NAME, Integer loc)
throws RemoteException,ApplicationException;
/**
* updateInvoiceWithSignature is to update the invoice with signature .
* @param invoiceId
* @param loc
* @param signatureFile
* @throws RemoteException
* @throws ApplicationException
*/
public void updateInvoiceWithSignature(Integer invoiceId, Integer loc,
byte[] signatureFile) throws RemoteException, ApplicationException;
public InvoiceVO findInvoiceByInvoiceNumber(final Integer invoiceNumber,
final Integer customerId, final Integer location)
throws RemoteException, ApplicationException;
public List retrieveRemoteStoreInvoicePaymentDetails(final Integer invoiceNumber,
final Date invoiceDate, final String remoteStoreNumber)
throws RemoteException, ApplicationException;
public void sendMetricsToAzure(final String message, LogType.Status status, final String payload, final String ipAddress, final int code, LogType.Feature type, final int loc) throws RemoteException, ApplicationException;
public List printOpenInvoicesForStatement(Integer customerNumber)
throws RemoteException, ApplicationException;
public void createVLMOrders(String invoice) throws RemoteException, ApplicationException;
}