Frequency Response Function Extension Module for the Dynamix ...
Mass Invoicing Module Extension Module Webinar
description
Transcript of Mass Invoicing Module Extension Module Webinar
![Page 1: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/1.jpg)
Mass Invoicing Module
Extension Module Webinar
15th of October 2009
![Page 2: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/2.jpg)
Page 2Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
Agenda
Functionality and Demo 10 min.
Process and Tools 10 min.
Development Technique 10 min.
Q & A 30 min.
![Page 3: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/3.jpg)
Page 3Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
Agenda
Functionality and Demo
Process and Tools
Development Technique
Q & A
![Page 4: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/4.jpg)
Page 4Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
Goal: improve efficiency when creating sales invoices for multiple business partners
Massinvoicing: Functional Highlights
Functional Concepts:
Invoice Template
Mass Invoicing Wizard
Solution Approach:
Deliver as a Module
Use Forge capabilities
Use current OB technology stack
![Page 5: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/5.jpg)
Page 5Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
DEMO
Massinvoicing: Functional Highlights
![Page 6: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/6.jpg)
Page 6Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
Agenda
Functionality and Demo
Process and Tools
Development Technique
Q & A
![Page 7: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/7.jpg)
Page 7Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
Configure a focused/lean system
Deliver as a Module: benefits of Modularity
Independent and shorter release cycles
Fine-grained dependency management
Improve functionality/code re-use
Facilitates contributions
Publish and promote new functionality
![Page 8: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/8.jpg)
Page 8Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
Start
Functional Design
Development&
Delivery
Testing
Requirements Gathering/Wire Frame
Forge: Project Creation
Process and Tools: Openbravo Forge
Functional Design Document & Review
Forge: Project Wiki
Coding & Delivery
Forge: Code & Module & Mercurial
Test Plan
Forge: Wiki & Module
MaintenanceCoding & Re-deliver
Forge: Forum & Module
![Page 9: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/9.jpg)
Page 9Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
DEMO
Process and Tools: Openbravo Forge
![Page 10: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/10.jpg)
Page 10Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
Functionality and Demo
Process and Tools
Development Technique
Q & A
Agenda
![Page 11: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/11.jpg)
Page 11Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
MassInvoicing
Development Approach
DAL
ApplicationDictionary
XML Engine
BusinessObject Setter
![Page 12: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/12.jpg)
Page 12Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
MassInvoicing
Development Approach
DAL
ApplicationDictionary
XML Engine
BusinessObject Setter
- Model Definition- Form & Object Mapping
![Page 13: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/13.jpg)
Page 13Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
MassInvoicing
Development Approach
DAL
ApplicationDictionary
XML Engine
BusinessObject Setter
- Model Definition- Form & Object Mapping
- Entity Generation- Transaction Handling- Ease-of-coding- Stored Proc. Calling
![Page 14: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/14.jpg)
Page 14Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
MassInvoicing
Development Approach
DAL
ApplicationDictionary
XML Engine
BusinessObject Setter
- Model Definition- Form & Object Mapping
- Entity Generation- Transaction Handling- Ease-of-coding- Stored Proc. Calling
- HTML-Logic Separation- Automatic Translation/labels- Handle both single as structures
![Page 15: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/15.jpg)
Page 15Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
MassInvoicing
Development Approach
DAL
ApplicationDictionary
XML Engine
BusinessObject Setter
- Model Definition- Form & Object Mapping
- Entity Generation- Transaction Handling- Ease-of-coding- Stored Proc. Calling
- HTML-Logic Separation- Automatic Translation/labels- Handle both single as structures
- One central setter per Entity- Sets all default values of a BO- Handles already set values
![Page 16: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/16.jpg)
Page 16Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
Development Approach: Runtime Class/Objects
Entities:BusinessPartnerInvoice & InvoiceLineInvoiceTemplateInvoiceTemplateLineOrganizationPriceList
MassInvoicing
Invoice Property Setter
Post InvoicesSP
Browser
XML Engine
![Page 17: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/17.jpg)
Page 17Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
for (String bpId : bpIds) {// query for the business partnerfinal BusinessPartner bp = OBDal.getInstance().get(BusinessPartner.class, bpId);// create a new Invoice Objectfinal Invoice invoice = OBProvider.getInstance().get(Invoice.class);
invoice.setOrganization(org);invoice.setBusinessPartner(bp); ...........invoice.setFormOfPayment(invoiceTemplate.getFormOfPayment());invoice.setDocumentType(invoiceTemplate.getDocumentType());
// create the invoice lines for (InvoiceTemplateLine invoiceTemplateLine : invoiceTemplate.getMINVInvoiceTemplateLineList()) {
// set invoice line properties final String qtyStr = vars.getNumericParameter("inpQuantity_" + postfix);
final BigDecimal qty = new BigDecimal(qtyStr); final InvoiceLine invoiceLine = OBProvider.getInstance().get(InvoiceLine.class);
invoiceLine.setProduct(invoiceTemplateLine.getProduct()); invoiceLine.setInvoicedQuantity(qty);
............}// set remaining invoice propertiesinvoicePropertySetter.setInvoiceProperties(invoice, vars);
// then save the invoiceOBDal.getInstance().save(invoice);
}
Development Approach: code snippets, creating Invoices
![Page 18: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/18.jpg)
Page 18Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
for (String bpId : bpIds) {// query for the business partnerfinal BusinessPartner bp = OBDal.getInstance().get(BusinessPartner.class, bpId);// create a new Invoice Objectfinal Invoice invoice = OBProvider.getInstance().get(Invoice.class);
invoice.setOrganization(org);invoice.setBusinessPartner(bp); ...........invoice.setFormOfPayment(invoiceTemplate.getFormOfPayment());invoice.setDocumentType(invoiceTemplate.getDocumentType());
// create the invoice lines for (InvoiceTemplateLine invoiceTemplateLine : invoiceTemplate.getMINVInvoiceTemplateLineList()) {
// set invoice line properties final String qtyStr = vars.getNumericParameter("inpQuantity_" + postfix);
final BigDecimal qty = new BigDecimal(qtyStr); final InvoiceLine invoiceLine = OBProvider.getInstance().get(InvoiceLine.class);
invoiceLine.setProduct(invoiceTemplateLine.getProduct()); invoiceLine.setInvoicedQuantity(qty);
............}// set remaining invoice propertiesinvoicePropertySetter.setInvoiceProperties(invoice, vars);
// then save the invoiceOBDal.getInstance().save(invoice);
}
Development Approach: code snippets, creating Invoices
![Page 19: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/19.jpg)
Page 19Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
for (String bpId : bpIds) {// query for the business partnerfinal BusinessPartner bp = OBDal.getInstance().get(BusinessPartner.class, bpId);// create a new Invoice Objectfinal Invoice invoice = OBProvider.getInstance().get(Invoice.class);
invoice.setOrganization(org);invoice.setBusinessPartner(bp); ...........invoice.setFormOfPayment(invoiceTemplate.getFormOfPayment());invoice.setDocumentType(invoiceTemplate.getDocumentType());
// create the invoice lines for (InvoiceTemplateLine invoiceTemplateLine : invoiceTemplate.getMINVInvoiceTemplateLineList()) {
// set invoice line properties final String qtyStr = vars.getNumericParameter("inpQuantity_" + postfix);
final BigDecimal qty = new BigDecimal(qtyStr); final InvoiceLine invoiceLine = OBProvider.getInstance().get(InvoiceLine.class);
invoiceLine.setProduct(invoiceTemplateLine.getProduct()); invoiceLine.setInvoicedQuantity(qty);
............}// set remaining invoice propertiesinvoicePropertySetter.setInvoiceProperties(invoice, vars);
// then save the invoiceOBDal.getInstance().save(invoice);
}
Development Approach: code snippets, creating Invoices
![Page 20: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/20.jpg)
Page 20Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
for (String bpId : bpIds) {// query for the business partnerfinal BusinessPartner bp = OBDal.getInstance().get(BusinessPartner.class, bpId);// create a new Invoice Objectfinal Invoice invoice = OBProvider.getInstance().get(Invoice.class);
invoice.setOrganization(org);invoice.setBusinessPartner(bp); ...........invoice.setFormOfPayment(invoiceTemplate.getFormOfPayment());invoice.setDocumentType(invoiceTemplate.getDocumentType());
// create the invoice lines for (InvoiceTemplateLine invoiceTemplateLine : invoiceTemplate.getMINVInvoiceTemplateLineList()) {
// set invoice line properties final String qtyStr = vars.getNumericParameter("inpQuantity_" + postfix);
final BigDecimal qty = new BigDecimal(qtyStr); final InvoiceLine invoiceLine = OBProvider.getInstance().get(InvoiceLine.class);
invoiceLine.setProduct(invoiceTemplateLine.getProduct()); invoiceLine.setInvoicedQuantity(qty);
............}// set remaining invoice propertiesinvoicePropertySetter.setInvoiceProperties(invoice, vars);
// then save the invoiceOBDal.getInstance().save(invoice);
}
Development Approach: code snippets, creating Invoices
![Page 21: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/21.jpg)
Page 21Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
for (String bpId : bpIds) {// query for the business partnerfinal BusinessPartner bp = OBDal.getInstance().get(BusinessPartner.class, bpId);// create a new Invoice Objectfinal Invoice invoice = OBProvider.getInstance().get(Invoice.class);
invoice.setOrganization(org);invoice.setBusinessPartner(bp); ...........invoice.setFormOfPayment(invoiceTemplate.getFormOfPayment());invoice.setDocumentType(invoiceTemplate.getDocumentType());
// create the invoice lines for (InvoiceTemplateLine invoiceTemplateLine : invoiceTemplate.getMINVInvoiceTemplateLineList()) {
// set invoice line properties final String qtyStr = vars.getNumericParameter("inpQuantity_" + postfix);
final BigDecimal qty = new BigDecimal(qtyStr); final InvoiceLine invoiceLine = OBProvider.getInstance().get(InvoiceLine.class);
invoiceLine.setProduct(invoiceTemplateLine.getProduct()); invoiceLine.setInvoicedQuantity(qty);
............}// set remaining invoice propertiesinvoicePropertySetter.setInvoiceProperties(invoice, vars);
// then save the invoiceOBDal.getInstance().save(invoice);
}
Development Approach: code snippets, creating Invoices
![Page 22: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/22.jpg)
Page 22Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
for (String bpId : bpIds) {// query for the business partnerfinal BusinessPartner bp = OBDal.getInstance().get(BusinessPartner.class, bpId);// create a new Invoice Objectfinal Invoice invoice = OBProvider.getInstance().get(Invoice.class);
invoice.setOrganization(org);invoice.setBusinessPartner(bp); ...........invoice.setFormOfPayment(invoiceTemplate.getFormOfPayment());invoice.setDocumentType(invoiceTemplate.getDocumentType());
// create the invoice lines for (InvoiceTemplateLine invoiceTemplateLine : invoiceTemplate.getMINVInvoiceTemplateLineList()) {
// set invoice line properties final String qtyStr = vars.getNumericParameter("inpQuantity_" + postfix);
final BigDecimal qty = new BigDecimal(qtyStr); final InvoiceLine invoiceLine = OBProvider.getInstance().get(InvoiceLine.class);
invoiceLine.setProduct(invoiceTemplateLine.getProduct()); invoiceLine.setInvoicedQuantity(qty);
............}// set remaining invoice propertiesinvoicePropertySetter.setInvoiceProperties(invoice, vars);
// then save the invoiceOBDal.getInstance().save(invoice);
}
Development Approach: code snippets, creating Invoices
![Page 23: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/23.jpg)
Page 23Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
for (String bpId : bpIds) {// query for the business partnerfinal BusinessPartner bp = OBDal.getInstance().get(BusinessPartner.class, bpId);// create a new Invoice Objectfinal Invoice invoice = OBProvider.getInstance().get(Invoice.class);
invoice.setOrganization(org);invoice.setBusinessPartner(bp); ...........invoice.setFormOfPayment(invoiceTemplate.getFormOfPayment());invoice.setDocumentType(invoiceTemplate.getDocumentType());
// create the invoice lines for (InvoiceTemplateLine invoiceTemplateLine : invoiceTemplate.getMINVInvoiceTemplateLineList()) {
// set invoice line properties final String qtyStr = vars.getNumericParameter("inpQuantity_" + postfix);
final BigDecimal qty = new BigDecimal(qtyStr); final InvoiceLine invoiceLine = OBProvider.getInstance().get(InvoiceLine.class);
invoiceLine.setProduct(invoiceTemplateLine.getProduct()); invoiceLine.setInvoicedQuantity(qty);
............}// set remaining invoice propertiesinvoicePropertySetter.setInvoiceProperties(invoice, vars);
// then save the invoiceOBDal.getInstance().save(invoice);
}
Development Approach: code snippets, creating Invoices
![Page 24: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/24.jpg)
Page 24Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
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() > 0) {
// handle process instance....}
}
Development Approach: code snippets, posting invoices
![Page 25: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/25.jpg)
Page 25Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
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() > 0) {
// handle process instance....}
}
Development Approach: code snippets, posting invoices
![Page 26: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/26.jpg)
Page 26Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
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() > 0) {
// handle process instance....}
}
Development Approach: code snippets, posting invoices
![Page 27: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/27.jpg)
Page 27Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
Functionality and Demo
Wrap-Up
Process and Tools
Development Technique
![Page 28: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/28.jpg)
Page 28Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal
Q & Ahttp://forge.openbravo.com
http://wiki.openbravo.com/wiki/ERP/2.50/Developers_Guide
Next webinar:Intercompany DocumentsOctober 29th 4-5 PM (CET)
![Page 29: Mass Invoicing Module Extension Module Webinar](https://reader035.fdocuments.us/reader035/viewer/2022081515/5681515a550346895dbf7c95/html5/thumbnails/29.jpg)
Page 29Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal