Git Product home page Git Product logo

springcrm's People

Contributors

dellermann avatar philipdrozd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

springcrm's Issues

Include closing balance of preceding year in sales journal

The sales journal should include the closing balance of the preceding year. However, since computing the closing balance of a whole year may be time-consuming, we should store it in a cache and offer the user a button to re-compute it.

Also, the closing balance of the preceding month should be included in the sales journal.

Related to Bugzilla bug 250.

Textarea for invoicing transaction subject

For some of our customers we need multiple lines in the subject of invoices, quotes etc. Therefore you should implement a textarea for the subject field and render the text multi-line.

Optimistic locking failure

I get an optimistic locking failure when displaying an invoice in the show view
(see error report).

Error report

<?xml version="1.0"?>

<error-report xmlns="http://www.amc-world.de/data/xml/springcrm"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://www.amc-world.de/data/xml/springcrm http://www.amc-world.de/data/xml/springcrm/error-report-1.1.xsd">
  <report-version>1.1</report-version>
  <application>
    <version>1.2.3</version>
    <build-number>1289</build-number>
    <build-date>2012-08-25T00:09:04+0200</build-date>
    <build-profile>live</build-profile>
  </application>
  <customer>
    <name>Daniel Ellermann</name>
    <email>[email protected]</email>
  </customer>
  <description>Beim Aufruf einer Rechnung in der Show-View.</description>
  <details>
    <status-code>500</status-code>
    <message>Object of class [org.amcworld.springcrm.User] with identifier [1]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.amcworld.springcrm.User#1]</message>
    <servlet>grails</servlet>
    <uri>/springcrm/grails/invoice/list.dispatch</uri>
  </details>
  <exception>
    <message>Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.amcworld.springcrm.User#1]</message>
    <caused-by>Object of class [org.amcworld.springcrm.User] with identifier [1]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.amcworld.springcrm.User#1]</caused-by>
    <class-name>ViewFilters</class-name>
    <line-number>71</line-number>
    <code-snippet>

    </code-snippet>
    <stack-trace>
    org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException: Object of class [org.amcworld.springcrm.User] with identifier [1]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.amcworld.springcrm.User#1]
    at org.amcworld.springcrm.ViewFilters$_closure1_closure2_closure7.doCall(ViewFilters.groovy:71)
    at java.lang.Thread.run(Thread.java:662)
Caused by: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [org.amcworld.springcrm.User#1]
    ... 2 more
    </stack-trace>
  </exception>
</error-report>

Related to Bugzilla bug 262.

Invalid return URL on overview page

When I edit a record from the LRU panel on the overview page and save it I'm redirected to a wrong URL. For example, on my SpringCRM server with the base URL http://crm.amc-world.de/springcrm/ the return URL is http://localhost:8080/springcrm/. This could be a problem caused by reverse proxy configuration on that server.

Handle session timeout gracefully

If the session expires and the user is currently working on a form the user looses all his input because he is redirected to the login page.

If the session expires we should temporarily store all submitted data, redirect the user to the login page, and after perform the former operation (e. g. storing the form data) again.

Related to Bugzilla bug 208.

Separate number of fractional digits for external use

Currently, we have a configuration setting to influence the number of fractional digits in the whole application. However, we need two separate settings: one for internal use and one for external use.

For example, in Germany, many companies calculate with three fractional digits internally. But in quotes, invoices, payment amounts, and all the print versions there must be two fractional digits.

Allow invoices from various sales orders, quotes etc.

It would be helpful if the user can create an invoice (or similar) from more than one sales orders or quotes, respectively. The procedure is valid for other transactions, too:

  • sales orders from quotes
  • invoices from sales orders and quotes
  • dunnings from invoices
  • credit memos from invoices and dunnings

I see two ways to implement this, described at the example of invoices:

In the view, only

The user gets a button where she can select a record (quote, sales order). After doing so, the invoicing items are added to the currently edited invoice. This is easy to implement but hides the relations between quotes, sales orders, and invoices. For example, a sales order added via this button doesn't have associated the edited invoice.

In all layers

We implement an m:n relation between invoicing transactions. This allows an invoice to refer both to quotes and sales orders. There is no need to distinguish between them. In the view we need a control to select more than one invoicing transactions. If the user adds a new quote or sales order to the invoice, its items are added to this invoice. This approach is expensive to implement. Furthermore, we have to clarify how to handle removal of associated quotes or sales orders.

Handle LDAP errors gracefully

If there are invalid LDAP connection data, base DN etc. or the specified LDAP server is not available you should not display an application error but a graceful warning to the user combined with a link to edit the LDAP settings.

Cannot save sequence numbers

When trying to save sequence numbers in the settings area I get the following error message:

org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '15000' with class 'java.lang.String' to class 'int'
    at org.amcworld.springcrm.ConfigController.saveSeqNumbers(ConfigController.groovy:247)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Cannot submit error report

When I submit an error report, the view is destroyed:

  • it contains a transparent text field above the top description text
  • after filling in the report form and submitting the response is displayed in the same accordion tab instead of the whole page
  • the error report is not submitted

Exception while searching

I search for the term "Euroregion" and get an exception:

<?xml version="1.0"?>

  <error-report xmlns="http://www.amc-world.de/data/xml/springcrm"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://www.amc-world.de/data/xml/springcrm http://www.amc-world.de/data/xml/springcrm/error-report-1.1.xsd">
    <report-version>1.1</report-version>
    <application>
      <version>1.4.5</version>
      <build-number>5037</build-number>
      <build-date>2013-12-04T18:36:35+0100</build-date>
      <build-profile>production</build-profile>
    </application>
    <customer>
      <name>Daniel Ellermann</name>
      <email>[email protected]</email>
    </customer>
    <description>Bei der Suche nach dem Begriff „Euroregion“.</description>
    <details>
      <status-code>500</status-code>
      <message>Executing action [index] of controller [grails.plugin.searchable.SearchableController] in plugin [searchable] caused exception: Runtime error executing action</message>
      <servlet>grails</servlet>
      <uri>/springcrm/grails/searchable/index.dispatch</uri>
    </details>
    <exception>
      <message>field "number" does not appear to be indexed</message>
      <caused-by>field "number" does not appear to be indexed</caused-by>
      <class-name>SearchableController</class-name>
      <line-number>36</line-number>
      <code-snippet>

      </code-snippet>
      <stack-trace>
      java.lang.RuntimeException: field "number" does not appear to be indexed
    at org.apache.lucene.search.ExtendedFieldCacheImpl$5.createValue(ExtendedFieldCacheImpl.java:173)
    at org.apache.lucene.search.FieldCacheImpl$Cache.get(FieldCacheImpl.java:71)
    at org.apache.lucene.search.ExtendedFieldCacheImpl.getAuto(ExtendedFieldCacheImpl.java:127)
    at org.apache.lucene.search.FieldSortedHitQueue.comparatorAuto(FieldSortedHitQueue.java:487)
    at org.apache.lucene.search.FieldSortedHitQueue$1.createValue(FieldSortedHitQueue.java:184)
    at org.apache.lucene.search.FieldCacheImpl$Cache.get(FieldCacheImpl.java:71)
    at org.apache.lucene.search.FieldSortedHitQueue.getCachedComparator(FieldSortedHitQueue.java:167)
    at org.apache.lucene.search.FieldSortedHitQueue.<init>(FieldSortedHitQueue.java:55)
    at org.apache.lucene.search.TopFieldDocCollector.<init>(TopFieldDocCollector.java:43)
    at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:121)
    at org.apache.lucene.search.MultiSearcher.search(MultiSearcher.java:232)
    at org.apache.lucene.search.Hits.getMoreDocs(Hits.java:113)
    at org.apache.lucene.search.Hits.<init>(Hits.java:90)
    at org.apache.lucene.search.Searcher.search(Searcher.java:61)
    at org.compass.core.lucene.engine.transaction.support.AbstractTransactionProcessor.findByQuery(AbstractTransactionProcessor.java:146)
    at org.compass.core.lucene.engine.transaction.readcommitted.ReadCommittedTransactionProcessor.doFind(ReadCommittedTransactionProcessor.java:259)
    at org.compass.core.lucene.engine.transaction.support.AbstractConcurrentTransactionProcessor.find(AbstractConcurrentTransactionProcessor.java:246)
    at org.compass.core.lucene.engine.LuceneSearchEngine.find(LuceneSearchEngine.java:352)
    at org.compass.core.lucene.engine.LuceneSearchEngineQuery.hits(LuceneSearchEngineQuery.java:188)
    at org.compass.core.impl.DefaultCompassQuery.hits(DefaultCompassQuery.java:199)
    at grails.plugin.searchable.internal.compass.search.DefaultSearchMethod$SearchCompassCallback.doInCompass(DefaultSearchMethod.java:109)
    at org.compass.core.CompassTemplate.execute(CompassTemplate.java:133)
    at grails.plugin.searchable.internal.compass.support.AbstractSearchableMethod.doInCompass(AbstractSearchableMethod.java:56)
    at grails.plugin.searchable.internal.compass.search.DefaultSearchMethod.invoke(DefaultSearchMethod.java:71)
    at grails.plugin.searchable.SearchableService.search(SearchableService.groovy:39)
    at grails.plugin.searchable.SearchableController$_closure1.doCall(SearchableController.groovy:36)
      </stack-trace>
    </exception>
  </error-report>

Relative dates in invoices or quotes

Add a field to specify a relative date for due dates in invoices or valid until in quotes. So the user can specify for example 14 days after today.

Related to Bugzilla bug 182.

LDAP errors

I detected two errors concerning LDAP:

  1. If I don't specify a port number (which should be result in using the default port) I get an exception because the empty string could not be converted to an integer.
  2. If I don't enter a password the old password is not re-used but it's set to an empty string.

Disable installer after some time

The installer should be disabled automatically after a particular time. This is needed for security reasons.

Related to Bugzilla bug 237.

Better inline calendar

We should improve inline calendars to allow selection of dates 3 or 4 weeks in future. Either the calendar should show two month simultaneously or allow scrolling of month.

Sales item pricing bases on total price

I found an error in sales item pricing (see screenshot below).

image

I want to calculate the price of 100 m wire, but sell it as 1 m wire. The calculation uses the total price in step 3 instead of the unit price: 1 m wire must cost 0.598 €.

Form error in calendar entry

When I try to create a calendar entry I always get an input error. But I cannot see which field is filled in incorrectly or not at all.

Page not found after returning from purchase invoice

I get a page not found error when doing the following things:

  1. click the edit button (pencil) in the LRU list on the overview page
  2. the purchase invoice edit form appears
  3. save the purchase form (you don't have to edit anything)
  4. the page not found error occurs

It seems that the submitted return URL is not correct.

Former Bugzilla bug 271.

Login page blocks

In one of my production environments on my server the web application starts, though, but when calling the login page (user/login) the page is not completely loaded and a timeout occurs. In the other production environment everything is fine.

Allow assignment of purchase invoices to customers

This is a feature request by Gaby Lingath (Link SEO): it should be possible to assign a purchase invoice to one or more customers and to list these purchase invoices as embedded list in the show view of the customer.

Related to Bugzilla bug 260.

Implement SEPA

You should change the previous data according to the changes in SEPA in Germany, 2014.

No stylesheet in person form

When I create or edit a person record no stylesheet is loaded. In the header of the generated HTML is the following line:

<meta name="stylesheet" content="person-form"/>

It seems the content attribute should be replaced by href.

Exception after creating user in installer

After creating an administrator in the installer I get the following exception (see below). The error occurred in the standalone version.

type Exception report

message

description The server encountered an internal error () that prevented it from
fulfilling this request.

exception

org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error
applying layout : main

org.codehaus.groovy.grails.web.sitemesh.SpringMVCViewDecorator.render(SpringMVCViewDecorator.java:74)

org.codehaus.groovy.grails.web.sitemesh.SpringMVCViewDecorator.render(SpringMVCViewDecorator.java:52)

org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:160)

org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:65)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
root cause

org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error
processing GroovyPageView: Error executing tag <r:script>: Cannot get property
'fontSize' on null object

org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.createGroovyPageException(GroovyPageView.java:205)

org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.handleException(GroovyPageView.java:181)

org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.renderWithTemplateEngine(GroovyPageView.java:152)

org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.renderMergedOutputModel(GroovyPageView.java:83)

org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)

org.codehaus.groovy.grails.web.sitemesh.SpringMVCViewDecorator.render(SpringMVCViewDecorator.java:67)

org.codehaus.groovy.grails.web.sitemesh.SpringMVCViewDecorator.render(SpringMVCViewDecorator.java:52)

org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:160)

org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:65)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
root cause

org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: Error
executing tag <r:script>: Cannot get property 'fontSize' on null object
    gsp_springcrm_layoutsmain_gsp$_run_closure1.doCall(main.gsp:15)
    gsp_springcrm_layoutsmain_gsp.run(main.gsp:17)
root cause

java.lang.NullPointerException: Cannot get property 'fontSize' on null object
    org.amcworld.springcrm.UserTagLib$_closure2.doCall(UserTagLib.groovy:50)
    gsp_springcrm_layoutsmain_gsp$_run_closure1_closure4.doCall(main.gsp:12)

org.grails.plugin.resource.ResourceTagLib$_closure7.doCall(ResourceTagLib.groovy:420)
    gsp_springcrm_layoutsmain_gsp$_run_closure1.doCall(main.gsp:15)
    gsp_springcrm_layoutsmain_gsp.run(main.gsp:17)

Related to Bugzilla bug 234. There is also an additional stacktrace stored.

Remember the current view in sales journal

If I click on an invoice in the sales journal and then return to it my previous view (month and year or whole year) is no longer available. The software should remember my last view.

Lonely "next" button in list view

In some list views, where all available items fit one page, a lonely "next" button from the paginator is displayed (see screenshot).

screenshot-purchase-invoice-list

Related to Bugzilla bug 193.

Embedded lists browse across borders

When I browse in one of the embedded lists (e. g. in an organization show view) all other embedded lists are browsing, too. They are all displaying one type of data (invoices in my case, see screenshot).

screenshot

Related to Bugzilla bug 248.

null id in InvoicingItem when calling update()

A user reported an exception when updating a quote. The error seems to be caused by added invoicing items and updating the invoicing transaction (here: the quote).

Error report

<?xml version="1.0"?>

<error-report xmlns="http://www.amc-world.de/data/xml/springcrm"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://www.amc-world.de/data/xml/springcrm http://www.amc-world.de/data/xml/springcrm/error-report-1.1.xsd">
  <report-version>1.1</report-version>
  <application>
    <version>1.2.5</version>
    <build-number>1489</build-number>
    <build-date>2012-11-29T16:00:52+0100</build-date>
    <build-profile>live</build-profile>
  </application>
  <customer>
    <name>Robert</name>
    <email>[email protected]</email>
  </customer>
  <description></description>
  <details>
    <status-code>500</status-code>
    <message>null id in org.amcworld.springcrm.InvoicingItem entry (don't flush the Session after an exception occurs)</message>
    <servlet>grails</servlet>
    <uri>/springcrm/grails/quote/update.dispatch</uri>
  </details>
  <exception>
    <message>null id in org.amcworld.springcrm.InvoicingItem entry (don't flush the Session after an exception occurs)</message>
    <caused-by>null id in org.amcworld.springcrm.InvoicingItem entry (don't flush the Session after an exception occurs)</caused-by>
    <class-name>LruFilters</class-name>
    <line-number>68</line-number>
    <code-snippet>

    </code-snippet>
    <stack-trace>
    org.hibernate.AssertionFailure: null id in org.amcworld.springcrm.InvoicingItem entry (don't flush the Session after an exception occurs)
    at grails.orm.HibernateCriteriaBuilder.invokeMethod(HibernateCriteriaBuilder.java:1591)
    at org.amcworld.springcrm.LruService.recordItem(LruService.groovy:57)
    at org.amcworld.springcrm.LruFilters$_closure1_closure3_closure6.doCall(LruFilters.groovy:68)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:662)
    </stack-trace>
  </exception>
</error-report>

Relates to Bugzilla bug 268.

No valid until date at copying quotes

When I copy a quote the valid until date is also copied. In most cases this will result in an invalid date because the new quote is often copied much later than the old quote.

Purchase invoice item description too short

If one save a purchase invoice that contains one or more items with a description larger than 255 characters the following occurs:

  • the purchase invoice items are not stored
  • the purchase invoice itself, however, is stored
  • because the purchase invoice doesn't have items its getSubtotalNet() method produces an NPE

You should increase the size of the description field in table purchase_invoice_item.

Invalid entity used in FOP production

When I entered three dots (...) in the header text of an invoice, stored, and clicked on "print" I get the following exception in FopService:153:

The entity hellip was referenced but not declared.

Cursor on login page always jumps to user name field

The cursor on the login page always jumps to the user name field. Although this is OK in most cases, when I have a slow internet connection and I click to the password field, the cursor is set to the user name field much later. This is very annoying (reported by Robert Kirchner).

Related to Bugzilla bug 274.

Italic text in print version

When I enter italic text in an invoicing item using the Markdown syntax *italic text* this text is not displayed italic in the print version.

Add V.A.T calculator widget

It would be nice to have a V.A.T calculator at hand which computes net and gross prices as well as V.A.T. Maybe, that widget can be opened when filling in particular fields such as unit prices, shipping costs etc.

Archiving

After long time of extensive use of the application a lot of outdated data accumulates, e. g. organizations and persons as well as quotes, sales orders, and invoices. We should implement a way these data can be archived.

Possible options are:

  • using a flag
  • moving data to a separate storage
  • exporting

Enhance search results

The search result page isn't representative. You should implement the following improvements:

  • better look (bigger fonts for headers of search result items)
  • group the search results by type; use a specific type order, e. g. organizations, persons, quotes, sales orders, invoices, dunnings, credit memos etc.
  • add headers to each group
  • searching for terms containing umlauts etc. doesn't work

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.