1 / 29

Mass Invoicing Module Extension Module Webinar

Mass Invoicing Module Extension Module Webinar. 15 th of October 2009. Agenda. Functionality and Demo 10 min. Process and Tools 10 min. Development Technique 10 min. Q & A 30 min. Agenda. Functionality and Demo Process and Tools Development Technique

helki
Download Presentation

Mass Invoicing Module Extension Module Webinar

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 - One central setter per Entity - Sets all default values of a BO - Handles already set values Business Object Setter

  16. Development Approach: Runtime Class/Objects Browser Entities: BusinessPartner Invoice & InvoiceLine InvoiceTemplate InvoiceTemplateLine Organization 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(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 properties invoicePropertySetter.setInvoiceProperties(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(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 properties invoicePropertySetter.setInvoiceProperties(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(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 properties invoicePropertySetter.setInvoiceProperties(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(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 properties invoicePropertySetter.setInvoiceProperties(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(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 properties invoicePropertySetter.setInvoiceProperties(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(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 properties invoicePropertySetter.setInvoiceProperties(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(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 properties invoicePropertySetter.setInvoiceProperties(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() > 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() > 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() > 0) { // handle process instance.... } }

  27. Wrap-Up Functionality and Demo Process and Tools Development Technique

  28. Q & A http://forge.openbravo.com http://wiki.openbravo.com/wiki/ERP/2.50/Developers_Guide martin.taal@openbravo.com Next webinar: Intercompany Documents October 29th 4-5 PM (CET)

More Related