Client name (Arial 26, bold) Main title page (Arial 24, bold) Subtitle (Arial 24, plain) Date (Arial 16, plain) - PowerPoint PPT Presentation

1 / 29
About This Presentation
Title:

Client name (Arial 26, bold) Main title page (Arial 24, bold) Subtitle (Arial 24, plain) Date (Arial 16, plain)

Description:

final String qtyStr = vars.getNumericParameter('inpQuantity_' postfix) ... – PowerPoint PPT presentation

Number of Views:73
Avg rating:3.0/5.0
Slides: 30
Provided by: martin388
Category:

less

Transcript and Presenter's Notes

Title: Client name (Arial 26, bold) Main title page (Arial 24, bold) Subtitle (Arial 24, plain) Date (Arial 16, plain)


1
Mass Invoicing ModuleExtension Module Webinar
15th of October 2009
2
Agenda
Functionality and Demo 10 min. Process and
Tools 10 min. Development Technique 10
min. Q A 30 min.
3
Agenda
Functionality and Demo Process and
Tools Development Technique Q A

4
Massinvoicing Functional Highlights
Goal improve efficiency when creating sales
invoices for multiple business partners
Functional Concepts Invoice Template Mass
Invoicing Wizard
Solution Approach Deliver as a Module Use
Forge capabilities Use current OB technology
stack
5
Massinvoicing Functional Highlights
DEMO
6
Agenda
Functionality and Demo Process and
Tools Development Technique Q A
7
Deliver as a Module benefits of Modularity
Configure a focused/lean system
Independent and shorter release cycles
Fine-grained dependency management
Improve functionality/code re-use
Facilitates contributions
Publish and promote new functionality
8
Process and Tools Openbravo Forge
Start
Requirements Gathering/Wire Frame Forge Project
Creation
Functional Design
Functional Design Document Review Forge
Project Wiki
Development Delivery
Coding Delivery Forge Code Module Mercurial
Testing
Test Plan Forge Wiki Module
Maintenance
Coding Re-deliver Forge Forum Module
9
Process and Tools Openbravo Forge
DEMO
10
Agenda
Functionality and Demo Process and
Tools Development Technique Q A
11
Development Approach
Application Dictionary
Mass Invoicing
XML Engine
DAL
Business Object Setter
12
Development Approach
Application Dictionary
- Model Definition - Form Object Mapping
Mass Invoicing
XML Engine
DAL
Business Object Setter
13
Development Approach
Application Dictionary
- Model Definition - Form Object Mapping
Mass Invoicing
XML Engine
DAL
- Entity Generation - Transaction Handling -
Ease-of-coding - Stored Proc. Calling
Business Object Setter
14
Development Approach
Application Dictionary
- Model Definition - Form Object Mapping
- HTML-Logic Separation - Automatic
Translation/labels - Handle both single as
structures
Mass Invoicing
XML Engine
DAL
- Entity Generation - Transaction Handling -
Ease-of-coding - Stored Proc. Calling
Business Object Setter
15
Development Approach
Application Dictionary
- Model Definition - Form Object Mapping
- HTML-Logic Separation - Automatic
Translation/labels - Handle both single as
structures
Mass Invoicing
XML Engine
DAL
- Entity Generation - Transaction Handling -
Ease-of-coding - Stored Proc. Calling
Business Object Setter
- One central setter per Entity - Sets all
default values of a BO - Handles already set
values
16
Development Approach Runtime Class/Objects
Entities BusinessPartner Invoice
InvoiceLine InvoiceTemplate InvoiceTemplateLine Or
ganization PriceList
MassInvoicing
Invoice Property Setter
XML Engine
Post Invoices SP
17
Development Approach code snippets, creating
Invoices
for (String bpId bpIds) // query for the
business partner final BusinessPartner bp
OBDal.getInstance().get(BusinessPartner.class,
bpId) // create a new Invoice Object final
Invoice invoice OBProvider.getInstance().get(Inv
oice.class) invoice.setOrganization(org) invo
ice.setBusinessPartner(bp) ........... invoice
.setFormOfPayment(invoiceTemplate.getFormOfPayment
()) invoice.setDocumentType(invoiceTemplate.getD
ocumentType()) // create the invoice lines
for (InvoiceTemplateLine invoiceTemplateLine
invoiceTemplate.getMINVInvoiceTemplateLineList())
// set invoice line properties
final String qtyStr vars.getNumericParameter("i
npQuantity_" postfix) final
BigDecimal qty new BigDecimal(qtyStr) final
InvoiceLine invoiceLine OBProvider.getInstance()
.get(InvoiceLine.class)
invoiceLine.setProduct(invoiceTemplateLine.getProd
uct()) invoiceLine.setInvoicedQuant
ity(qty) ............ // set remaining
invoice properties invoicePropertySetter.setInvoi
ceProperties(invoice, vars) // then save the
invoice OBDal.getInstance().save(invoice)
18
Development Approach code snippets, creating
Invoices
for (String bpId bpIds) // query for the
business partner final BusinessPartner bp
OBDal.getInstance().get(BusinessPartner.class,
bpId) // create a new Invoice Object final
Invoice invoice OBProvider.getInstance().get(Inv
oice.class) invoice.setOrganization(org) invo
ice.setBusinessPartner(bp) ........... invoice
.setFormOfPayment(invoiceTemplate.getFormOfPayment
()) invoice.setDocumentType(invoiceTemplate.getD
ocumentType()) // create the invoice lines
for (InvoiceTemplateLine invoiceTemplateLine
invoiceTemplate.getMINVInvoiceTemplateLineList())
// set invoice line properties
final String qtyStr vars.getNumericParameter("i
npQuantity_" postfix) final
BigDecimal qty new BigDecimal(qtyStr) final
InvoiceLine invoiceLine OBProvider.getInstance()
.get(InvoiceLine.class)
invoiceLine.setProduct(invoiceTemplateLine.getProd
uct()) invoiceLine.setInvoicedQuant
ity(qty) ............ // set remaining
invoice properties invoicePropertySetter.setInvoi
ceProperties(invoice, vars) // then save the
invoice OBDal.getInstance().save(invoice)
19
Development Approach code snippets, creating
Invoices
for (String bpId bpIds) // query for the
business partner final BusinessPartner bp
OBDal.getInstance().get(BusinessPartner.class,
bpId) // create a new Invoice Object final
Invoice invoice OBProvider.getInstance().get(Inv
oice.class) invoice.setOrganization(org) invo
ice.setBusinessPartner(bp) ........... invoice
.setFormOfPayment(invoiceTemplate.getFormOfPayment
()) invoice.setDocumentType(invoiceTemplate.getD
ocumentType()) // create the invoice lines
for (InvoiceTemplateLine invoiceTemplateLine
invoiceTemplate.getMINVInvoiceTemplateLineList())
// set invoice line properties
final String qtyStr vars.getNumericParameter("i
npQuantity_" postfix) final
BigDecimal qty new BigDecimal(qtyStr) final
InvoiceLine invoiceLine OBProvider.getInstance()
.get(InvoiceLine.class)
invoiceLine.setProduct(invoiceTemplateLine.getProd
uct()) invoiceLine.setInvoicedQuant
ity(qty) ............ // set remaining
invoice properties invoicePropertySetter.setInvoi
ceProperties(invoice, vars) // then save the
invoice OBDal.getInstance().save(invoice)
20
Development Approach code snippets, creating
Invoices
for (String bpId bpIds) // query for the
business partner final BusinessPartner bp
OBDal.getInstance().get(BusinessPartner.class,
bpId) // create a new Invoice Object final
Invoice invoice OBProvider.getInstance().get(Inv
oice.class) invoice.setOrganization(org) invo
ice.setBusinessPartner(bp) ........... invoice
.setFormOfPayment(invoiceTemplate.getFormOfPayment
()) invoice.setDocumentType(invoiceTemplate.getD
ocumentType()) // create the invoice lines
for (InvoiceTemplateLine invoiceTemplateLine
invoiceTemplate.getMINVInvoiceTemplateLineList())
// set invoice line properties
final String qtyStr vars.getNumericParameter("i
npQuantity_" postfix) final
BigDecimal qty new BigDecimal(qtyStr) final
InvoiceLine invoiceLine OBProvider.getInstance()
.get(InvoiceLine.class)
invoiceLine.setProduct(invoiceTemplateLine.getProd
uct()) invoiceLine.setInvoicedQuant
ity(qty) ............ // set remaining
invoice properties invoicePropertySetter.setInvoi
ceProperties(invoice, vars) // then save the
invoice OBDal.getInstance().save(invoice)
21
Development Approach code snippets, creating
Invoices
for (String bpId bpIds) // query for the
business partner final BusinessPartner bp
OBDal.getInstance().get(BusinessPartner.class,
bpId) // create a new Invoice Object final
Invoice invoice OBProvider.getInstance().get(Inv
oice.class) invoice.setOrganization(org) invo
ice.setBusinessPartner(bp) ........... invoice
.setFormOfPayment(invoiceTemplate.getFormOfPayment
()) invoice.setDocumentType(invoiceTemplate.getD
ocumentType()) // create the invoice lines
for (InvoiceTemplateLine invoiceTemplateLine
invoiceTemplate.getMINVInvoiceTemplateLineList())
// set invoice line properties
final String qtyStr vars.getNumericParameter("i
npQuantity_" postfix) final
BigDecimal qty new BigDecimal(qtyStr) final
InvoiceLine invoiceLine OBProvider.getInstance()
.get(InvoiceLine.class)
invoiceLine.setProduct(invoiceTemplateLine.getProd
uct()) invoiceLine.setInvoicedQuant
ity(qty) ............ // set remaining
invoice properties invoicePropertySetter.setInvoi
ceProperties(invoice, vars) // then save the
invoice OBDal.getInstance().save(invoice)
22
Development Approach code snippets, creating
Invoices
for (String bpId bpIds) // query for the
business partner final BusinessPartner bp
OBDal.getInstance().get(BusinessPartner.class,
bpId) // create a new Invoice Object final
Invoice invoice OBProvider.getInstance().get(Inv
oice.class) invoice.setOrganization(org) invo
ice.setBusinessPartner(bp) ........... invoice
.setFormOfPayment(invoiceTemplate.getFormOfPayment
()) invoice.setDocumentType(invoiceTemplate.getD
ocumentType()) // create the invoice lines
for (InvoiceTemplateLine invoiceTemplateLine
invoiceTemplate.getMINVInvoiceTemplateLineList())
// set invoice line properties
final String qtyStr vars.getNumericParameter("i
npQuantity_" postfix) final
BigDecimal qty new BigDecimal(qtyStr) final
InvoiceLine invoiceLine OBProvider.getInstance()
.get(InvoiceLine.class)
invoiceLine.setProduct(invoiceTemplateLine.getProd
uct()) invoiceLine.setInvoicedQuant
ity(qty) ............ // set remaining
invoice properties invoicePropertySetter.setInvoi
ceProperties(invoice, vars) // then save the
invoice OBDal.getInstance().save(invoice)
23
Development Approach code snippets, creating
Invoices
for (String bpId bpIds) // query for the
business partner final BusinessPartner bp
OBDal.getInstance().get(BusinessPartner.class,
bpId) // create a new Invoice Object final
Invoice invoice OBProvider.getInstance().get(Inv
oice.class) invoice.setOrganization(org) invo
ice.setBusinessPartner(bp) ........... invoice
.setFormOfPayment(invoiceTemplate.getFormOfPayment
()) invoice.setDocumentType(invoiceTemplate.getD
ocumentType()) // create the invoice lines
for (InvoiceTemplateLine invoiceTemplateLine
invoiceTemplate.getMINVInvoiceTemplateLineList())
// set invoice line properties
final String qtyStr vars.getNumericParameter("i
npQuantity_" postfix) final
BigDecimal qty new BigDecimal(qtyStr) final
InvoiceLine invoiceLine OBProvider.getInstance()
.get(InvoiceLine.class)
invoiceLine.setProduct(invoiceTemplateLine.getProd
uct()) invoiceLine.setInvoicedQuant
ity(qty) ............ // set remaining
invoice properties invoicePropertySetter.setInvoi
ceProperties(invoice, vars) // then save the
invoice OBDal.getInstance().save(invoice)
24
Development Approach code snippets, posting
invoices
final CallProcess caller OBProvider.getInstance
().get(CallProcess.class) final
org.openbravo.model.ad.ui.Process process
OBDal.getInstance().get(org.openbravo.model.ad
.ui.Process.class, "111") for (Invoice invoice
invoices) final ProcessInstance
processInstance caller.call(process,
invoice.getId(), null) if
(processInstance.getErrorMsg() ! null
processInstance.getErrorMsg().trim().length
() gt 0) // handle process instance....
25
Development Approach code snippets, posting
invoices
final CallProcess caller OBProvider.getInstance
().get(CallProcess.class) final
org.openbravo.model.ad.ui.Process process
OBDal.getInstance().get(org.openbravo.model.ad
.ui.Process.class, "111") for (Invoice invoice
invoices) final ProcessInstance
processInstance caller.call(process,
invoice.getId(), null) if
(processInstance.getErrorMsg() ! null
processInstance.getErrorMsg().trim().length
() gt 0) // handle process instance....
26
Development Approach code snippets, posting
invoices
final CallProcess caller OBProvider.getInstance
().get(CallProcess.class) final
org.openbravo.model.ad.ui.Process process
OBDal.getInstance().get(org.openbravo.model.ad
.ui.Process.class, "111") for (Invoice invoice
invoices) final ProcessInstance
processInstance caller.call(process,
invoice.getId(), null) if
(processInstance.getErrorMsg() ! null
processInstance.getErrorMsg().trim().length
() gt 0) // handle process instance....
27
Wrap-Up
Functionality and Demo
Process and Tools
Development Technique
28
Q A http//forge.openbravo.com http//wiki.op
enbravo.com/wiki/ERP/2.50/Developers_Guide martin
.taal_at_openbravo.com Next webinar Intercompany
Documents October 29th 4-5 PM (CET)
29
(No Transcript)
Write a Comment
User Comments (0)
About PowerShow.com