mass invoicing module extension module webinar

29
Mass Invoicing Module Extension Module Webinar 15 th of October 2009

Upload: helki

Post on 22-Jan-2016

34 views

Category:

Documents


0 download

DESCRIPTION

Mass Invoicing Module Extension Module Webinar. 15 th of October 2009. Agenda. Functionality and Demo10 min. Process and Tools10 min. Development Technique10 min. Q & A 30 min. Agenda. Functionality and Demo Process and Tools Development Technique - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Mass Invoicing Module Extension Module Webinar

Mass Invoicing Module

Extension Module Webinar

15th of October 2009

Page 2: Mass Invoicing Module Extension Module Webinar

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

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

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

Page 5Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal

DEMO

Massinvoicing: Functional Highlights

Page 6: Mass Invoicing Module Extension Module Webinar

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

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

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

Page 9Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal

DEMO

Process and Tools: Openbravo Forge

Page 10: Mass Invoicing Module Extension Module Webinar

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Page 28Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal

Q & Ahttp://forge.openbravo.com

http://wiki.openbravo.com/wiki/ERP/2.50/Developers_Guide

[email protected]

Next webinar:Intercompany DocumentsOctober 29th 4-5 PM (CET)

Page 29: Mass Invoicing Module Extension Module Webinar

Page 29Mass Invoicing -Extension Module Webinar-Openbravo, Martin Taal