c# wpf free pdf viewer : Convert few pages of pdf to word software SDK project winforms windows wpf UWP ATGCommProgGuide55-part2135

ATG  C om mer ce P ro g ramm in g   Gui d e 
53 3  
22  -   Usi n g  A ban d o ned   O rd er S ervice s 
μ
getDateQueryForLostOrders()
getOrderStatesQuery()
getAbandonmentInfoQueryForLostOrders()
getMinimumAmountQuery()
For details on these methods, see 
atg.commerce.order.abandoned.AbandonedOrderService
in the 
ATG API Reference
If desired, you can modify the criteria used to identify abandoned or lost orders. To do so, create a class 
that extends 
atg.commerce.order.abandoned.AbandonedOrderService
and overrides the 
appropriate method listed above. Then configure an instance of your custom class in Nucleus by layering 
on a configuration file for the 
/atg/commerce/order/abandoned/AbandonedOrderService
Convert few pages of pdf to word - control Library utility:C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use C# Code to Extract PDF Pages, Copy Pages from One PDF File and Paste into Others
www.rasteredge.com
Convert few pages of pdf to word - control Library utility:VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Detailed VB.NET Guide for Extracting Pages from Microsoft PDF Doc
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
53 4  
22  -  Us i n g  A ban d on ed   Ord er  Servi ces  
control Library utility:C# TIFF: Extract Page(s) from TIFF File(s) Using C#.NET Code
Sometimes, a Tiff image file is large in size and only a few pages of Tiff document are useful to us, so we need to extract these useful pages from Tiff file.
www.rasteredge.com
control Library utility:C# PDF Page Insert Library: insert pages into PDF file in C#.net
application and Windows Forms project using a few lines of and inserting (empty) PDF page or pages from various file formats, such as PDF, Tiff, Word
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
53 5  
23  -   Gener at in g   In vo ice s 
23
Generating Invoices 
B2B commerce sites must be able to accept payment via invoice. ATG Business Commerce allows end 
users to specify a purchase order number and billing address and generate an invoice. It supports 
purchase order numbers as a payment type, generates invoices that refer to purchase order numbers as 
well as to other payment types, and allows a user to split the bill for an order among several invoices, or 
among a combination of invoices and other payment types (corporate purchasing cards, for example). 
The validation process can be customized and ensures that necessary information is present. Messaging 
allows communication with your other financial systems, and features are designed to make integration 
with back-end systems simple. 
This chapter includes the following sections: 
Invoice Overview 
Invoices in Checkout 
Invoice Payment 
The Invoice Repository 
Invoice Overview 
The steps involved in invoice creation and processing are: 
1.
A user asks for an invoice to be generated upon checkout and provides a purchase 
order number. An 
invoiceRequest
payment group is created and attached to the 
order. See the Invoices in Checkout section. At this time, processors in the commerce 
pipeline validate the 
invoiceRequest
, allowing checkout to proceed. For more 
information on these processors, see the Configuring Purchase Process Services 
chapter in this manual. 
2.
When the order is fulfilled, the 
PaymentManager
debits its payment groups. For 
invoices, the 
PaymentManager
performs a debit by calling on the 
InvoiceManager
to 
generate a new 
Invoice
object, just as with credit cards the 
PaymentManager
performs a debit by contacting a billing service to bill the credit card. 
3.
The 
Invoice
is created and stored in the Invoice repository. 
4.
JMS messages are generated informing the Dynamo Scenario Manager and any other 
modules you designate that an invoice has been created. 
control Library utility:C# Word - Insert Blank Word Page in C#.NET
server-side application and Windows Forms project using a few lines of delete Word page using C# .NET, how to reorganize Word document pages and how
www.rasteredge.com
control Library utility:C# PDF File Split Library: Split, seperate PDF into multiple files
files with a customized name pattern using a few lines of using which C# developers can split target PDF document file by specifying a page or pages.
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
53 6  
23  -  Gen erat i n g  I n voi ces  
The rest of this chapter explains the pieces involved in invoice processing, in the order they are 
mentioned above. 
Invoices in Checkout 
The 
InvoiceRequest
object represents the customer’s request to be billed for a purchase. It implements 
the 
PaymentGroup
interface and extends 
atg.commerce.order.PaymentGroupImpl
. In addition to the 
usual payment group fields, 
InvoiceRequest
holds a purchase order number and a billing address, 
which are mandatory, and can also include the user’s preferred invoice format and delivery mode, the 
payment due date, and the payment terms. 
Use the 
atg.b2bcommerce.order.purchase.CreateInvoiceRequestFormHandler
class to create an 
InvoiceRequest
payment group. This form handler has only one implemented method, 
handleNewInvoiceRequest()
. It also includes empty 
preCreateInvoiceRequest()
and 
postCreateInvoiceRequest()
methods for you to extend if your sites require. 
Property 
Description 
invoiceRequestType 
Indicates the type of 
PaymentGroup
to create. 
AddToContainer 
Boolean property that determines whether to add the 
InvoiceRequest
to the 
PaymentGroupMapContainer
and make it the default payment 
group for the invoice. 
container 
The 
PaymentGroupMapContainer
to which the 
InvoiceRequest
is 
added. 
invoiceRequest 
A reference to a new 
InvoiceRequest
. JSP forms can edit its properties 
directly. 
billingAddressPrope
rtyName 
The name of the Profile that holds the user’s billing address. 
invoiceRequestPrope
rties 
Maps 
InvoiceRequest
property names to profile property paths. The 
form handler determines the values for each profile property and sets 
them on the given 
InvoiceRequest
property. 
HandleNewInvoiceRequest()
uses 
GetBillingAddressPropertyName()
to check the user’s profile 
for a business address. If one is found, it becomes the 
InvoiceRequest
’s 
billingAddress
as well. Then 
getInvoiceRequestPropertiesMap()
copies over the specified information from the user’s contract, if 
one exists, to the 
InvoiceRequest
. See the Using Requisitions and Contracts chapter for more 
information on these properties. 
The InvoiceRequestInfo
object includes the above information and adds references to the 
Order
and 
PaymentGroup
to be used when the invoice is paid. 
control Library utility:VB.NET Word: Change Word Page Order & Sort Word Document Pages
paste method if there are a few pages that need Apart from this VB.NET Word pages sorting function powerful & profession imaging controls, PDF document, image
www.rasteredge.com
control Library utility:C# TIFF: How to Convert TIFF File to PDF Document in C# Project
Convert TIFF to PDF in C#.NET Overview. document using C# demo code within just a few seconds. Documents, forms, graphics and web pages can be converted to PDF
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
53 7  
23  -   Gener at in g   In vo ice s 
Invoice validation is done as part of the 
ValidateForCheckout
pipeline chain; see Appendix G: 
Commerce Pipeline Chains for more information on this chain. It ensures that the 
PaymentGroup
contains 
a valid billing address. Optionally, it verifies that the 
poNumber
property is not empty. This is optional so 
you can configure your sites to offer payment by invoice without requiring a purchase at the time the 
invoice is created. 
Invoice Payment 
The InvoiceRequestProcessor
does the work of creating invoices, based on the 
InvoiceRequestInfo
object it receives. 
InvoiceRequestProcessor
is then used by the ATG Business 
Commerce 
PaymentManager
, just like the credit card and gift certificate processors. 
The 
InvoiceRequestProcessor
holds 
authorize()
debit()
, and 
credit()
methods. 
Authorize()
and 
credit()
are empty; you can add any business logic your sites need for these procedures. The 
debit()
method invokes the 
InvoiceManager
’s 
createInvoice()
method, which creates a new 
invoice from the order and other information, then sends a JMS message indicating that the invoice was 
created. 
To enable invoice payment, add a line to the 
PaymentNameToChainNameMap
configuration file, located at 
/atg/commerce/payment/PaymentManager
paymentGroupToChainNameMap=\ 
atg.commerce.order.CreditCard=creditCardProcessorChain,\ 
atg.commerce.order.GiftCertificate=giftCertificateProcessorChain,\ 
atg.commerce.order.StoreCredit=storeCreditProcessorChain,\ 
atg.commerce.order.Invoice=invoiceRequestProcessorChain 
If you want to add further validation logic to your invoice processing, you should extend the 
InvoiceRequestProcessor.authorize()
method. An example of how to extend validation can be 
found in the Extending Order Validation to Support New Payment Methods section of the Configuring 
Purchase Process Services chapter. 
Using the Invoice Manager 
The 
InvoiceManager
class provides high-level access for creating, manipulating, saving and deleting 
Invoice objects in the Invoice Repository. Each action leads to execution of a pipeline chain, described 
later in this section. The 
InvoiceManager
methods are: 
Method 
Description 
addInvoice 
Adds a new 
Invoice
repository item to the repository. 
createInvoice 
Creates a new 
Invoice
repository item. 
control Library utility:VB.NET Create PDF Library SDK to convert PDF from other file
Best VB.NET component to convert Microsoft Office Word, Excel applications to create PDF with just a few VB.NET to create a PDF document with 2 empty pages.
www.rasteredge.com
control Library utility:C# Word - Split Word Document in C#.NET
files with a customized name pattern using a few lines of using which C# developers can split target Word document file by specifying a page or pages.
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
53 8  
23  -  Gen erat i n g  I n voi ces  
findInvoicesByPropertyValue 
Searches the repository for invoices having a particular set of 
property values. 
getInvoiceForUpdate 
Gets the invoice with the specified repository id. 
getInvoicesForInvoiceNumber 
Loads all invoices with a given invoice number. This method 
returns a list because an invoice number may not be unique. It 
is possible to have several invoices with the same invoice 
number but different repository id’s, for example if a new 
invoice is generated to reflect partial payment of an order and 
a reduction in the balance due. In most cases, however, this 
method returns a list containing only a single invoice. 
getNextInvoiceNumber 
Generates the next unique invoice number to use. 
loadInvoice 
Loads the invoice identified by a given repository id and 
executes the 
loadInvoice
pipeline chain. See Invoice 
Pipelines for more information. 
removeInvoice 
Removes the specified invoice from the repository. 
updateInvoice 
Updates invoice properties in the invoice repository and sets 
the repository item’s 
lastModified
property to the current 
date and time. 
Invoice Pipelines 
The 
InvoiceManager
class executes pipelines whenever an invoice is created, loaded, updated, or 
removed. Each pipeline chain receives an object of type 
InvoicePipelineArgs
as a parameter. 
InvoicePipelineArgs
provides 
getInvoice()
and 
getInvoiceManager()
methods. You can also 
subclass 
InvoicePipelineArgs
and alter the pipeline’s expected type if you need additional methods. 
The chains are defined in the 
PipelineManager
at 
/atg/commerce/invoice/pipeline/InvoicePipelineManager
. Out of the box, the only thing they 
do is send the messages described in the next section, but you can add links if you want to associate other 
actions with invoice creation and modification. 
Pipeline Chain 
Description 
addInvoice 
Sends a JMS message indicating that the invoice has been added to the 
repository. 
updateInvoice 
Sends a JMS message indicating that the invoice has been updated. 
removeInvoice 
Sends a JMS message indicating that the invoice has been removed from the 
repository. 
control Library utility:C# Word - Process Word Document in C#
It enables you to move out useless Word document pages simply with a few lines of C# code. C#.NET: Sort Word Document Pages Order.
www.rasteredge.com
control Library utility:Online Convert PDF file to Word. Best free online PDF Conversion
make it as easy as possible to convert your Tiff settings and the conversion only takes a few seconds. Tiff image with single page or multiple pages is supported
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
53 9  
23  -   Gener at in g   In vo ice s 
The Invoice Repository 
The Invoice Repository uses a SQL repository to store customer invoices; see the SQL repository chapters 
in the ATG Repository Guide for more information. Its configuration file is located at 
<ATG10dir>/DCS/src/config/atg/commerce/invoice/invoicerepository.xml
. This file defines 
the item descriptors for the invoice classes, which in turn define important properties for the given class. 
The repository itself appears at 
/atg/commerce/invoice/InvoiceRepository
in Nucleus. 
Invoice Repository Item 
The invoice item descriptor includes these properties: 
Property 
Description 
balanceDue 
Amount to be paid by the invoice. 
creationDate 
Date the invoice was created. 
deliveryInfo 
Link to a 
deliveryInfo
item. 
id 
Unique repository ID of the invoice. 
invoiceNumber 
System-generated identifying number. 
InvoiceNumber
is unique as 
provided, but you can customize your system to generate multiple invoices 
with the same number. 
lastModifiedDate 
Date the invoice was last modified. 
orderId 
ID of the 
Order
item in the 
Order
repository to which the invoice is linked. 
paymentDueDate 
Date the invoice must be paid. 
paymentGroupId 
ID of the 
paymentGroup
item in the 
Order
repository; identifies which parts 
of the order (commerce items, shipping costs, etc.) the invoice pays for. 
paymentTerms 
Link to a 
paymentTerms
item. 
poNumber 
Purchase order number assigned to the invoice by the user at the time of 
checkout; need not be unique. 
requisitionNumber 
Value copied from the 
requisitionNumber
property of the payment 
group assigned to the invoice. 
type 
Provided for subclassing purposes; use to indicate if an item belongs to the 
superclass or a subclass. Read-only. 
version 
Integer that is incremented automatically each time the product is updated; 
used to prevent version conflict. Read-only. 
The 
orderId
allows you to find the Order being paid for with the invoice, and the 
paymentGroupId
identifies the corresponding 
PaymentGroup
, telling you which parts of the order the invoice pays for. This 
ATG  C om merce  P ro gra mm in g  G ui d e 
54 0  
23  -  Gen erat i n g  I n voi ces  
can be important if billing is split among multiple payment groups. For example, if you want to generate 
an itemized bill that includes only the items billed to a particular invoice, you need to find the 
corresponding 
PaymentGroup
and iterate over its commerce items to create the bill. 
Given the 
orderId
and 
paymentGroupId
, you can find the 
Order
and 
PaymentGroup
objects using the 
following code: 
public void doSomethingWithInvoice(RepositoryItem invoiceItem) 
OrderManager om = getOrderManager(); 
Order order = null; 
PaymentGroup payment = null; 
try 
String orderId   =(String)invoiceItem.getPropertyValue("orderId"); 
String paymentId = 
(String)invoiceItem.getPropertyValue("paymentGroupId"); 
if (orderId != null) 
order = om.getOrder(orderId); 
if (order != null && paymentId != null) 
payment = order.getPaymentGroup(paymentId); 
... work with order and payment... 
catch (Exception e) { 
... handle exceptions... 
}
DeliveryInfo Repository Item 
The 
deliveryInfo
item descriptor represents physical or electronic delivery information with a flexible 
repository item. Its descriptor includes these address and contact properties: 
city
country
emailAddress
faxNumber
firstName
lastName
middleName
phoneNumber
postalCode
prefix
state
, and 
title
. Additional properties are described in the table below: 
Property 
Description 
format 
Enumerated value indicating the format in which to deliver electronic 
items. ATG Business Commerce does not use this property; it is 
provided for integration with other systems. Examples: text, HTML, 
XML, EDI. 
id 
Repository ID of the 
deliveryInfo
item.  
ATG  C om mer ce P ro g ramm in g   Gui d e 
54 1  
23  -   Gener at in g   In vo ice s 
preferredDeliveryMode 
Enumerated value indicating the preferred shipping method for items 
ordered. ATG Business Commerce does not use this property; it is 
provided for integration with other systems. Examples: USPS, fax, e-
mail. 
type 
Provided for subclassing purposes; use to indicate if an item belongs to 
the superclass or a subclass. Read-only. 
version 
Integer that is incremented automatically each time the product is 
updated; used to prevent version conflict. Read-only.  
You can use the 
format
and 
preferredDeliveryMode
properties to let your customers indicate their 
delivery preferences, then consult these preferences when exporting invoices to other systems. By default 
ATG Business Commerce does not use these properties, but provides them as a convenience to 
developers integrating the invoice generation system with external financial or billing systems. 
PaymentTerms Repository Item 
The 
paymentTerms
item descriptor represents payment terms for an order, expressed in terms of 
discount percentage, discount days, and net days. Its descriptor includes the following properties: 
Property 
Description 
discountDays 
Period within which the 
discountPercentage
applies. 
discountPercentage 
Discount on the price if the invoice is paid within the 
discountDays
period. 
netDays 
Time at which payment in full of the net price is due. 
type 
Provided for subclassing purposes; use to indicate if an item belongs to 
the superclass or a subclass. Read-only. 
version 
Integer that is incremented automatically each time the product is 
updated; used to prevent version conflict. Read-only. 
Sending Invoice JMS Messages 
The 
addInvoice()
updateInvoice()
, and 
removeInvoice()
methods of the 
InvoiceManager
all 
generate JMS messages of class 
atg.b2bcommerce.invoice.messaging.InvoiceMessage
. This class 
includes the following properties: 
repositoryId
(
String
orderId 
(
String
paymentGroupId
(
String
ATG  C om merce  P ro gra mm in g  G ui d e 
54 2  
23  -  Gen erat i n g  I n voi ces  
profile
(
RepositoryItem
invoiceNumber
(
String
PONumber
(
String
requisitionNumber
(
String
billingAddress
(
atg.core.util.ContactInfo
preferredFormat
(
String
preferredDeliveryMode
(
String
balanceDue
(
Date
paymentDueDate
(
Date
paymentNetDays
(
Integer
paymentDiscountDays
(
Integer
paymentDiscountPercent
(
Double
The inclusion of basic invoice properties in the message allows you to build scenarios that are invoice-
driven, while the inclusion of the 
orderId
and 
paymentGroupId
allows more complex ATG Commerce-
based message sinks to retrieve the invoice using the 
InvoiceManager
and perform any required data 
transformation (such as translation to XML) before passing the invoice information on to external systems. 
By default, invoice messages are sent to the Scenario Manager via Local JMS, but you can change your 
configuration to use SQL JMS if your system requires perfect reliability (see the Dynamo Message System 
chapter in the ATG Programming Guide for more information on JMS and its alternatives in the ATG 
platform, and on the Patch Bay). 
Documents you may be interested
Documents you may be interested