Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Follow up : #4153 Serial Letter Feature #4216

Closed
cristinamghita opened this issue Jun 13, 2018 · 6 comments
Closed

Follow up : #4153 Serial Letter Feature #4216

cristinamghita opened this issue Jun 13, 2018 · 6 comments

Comments

@cristinamghita
Copy link
Member

Is this a bug or feature request?

FR

What is the current behavior?

Which are the steps to reproduce?

What is the expected or desired behavior?

Follow up #4153 Serial Letter Feature

  • Process of creating marketing contacts should have a parameter list, from where the user to choose which address will be used (billtodefault, shiptodefault).
  • The list will be displayed only if MKTG_Platform has flag IsRequiredLocation on Y
@cristinamghita cristinamghita self-assigned this Jun 13, 2018
@metas-mk metas-mk assigned metas-rc and unassigned cristinamghita Jul 13, 2018
metas-rc added a commit that referenced this issue Jul 20, 2018
metas-ts added a commit that referenced this issue Jul 23, 2018
* processed: use ConstantQueryFilter.of(false) because in case nothing was filtered, we want nothing to be done
* BPartnerDAO: use match() isntead of count() bc we don't care for the count result, and match is potentially more performant

Follow up : #4153 Serial Letter Feature #4216
metas-rc added a commit that referenced this issue Jul 23, 2018
* it looks like I lost the part where the reference was created
#4216
@metas-rc metas-rc removed their assignment Jul 23, 2018
@metas-lc metas-lc self-assigned this Jul 25, 2018
@metas-lc
Copy link
Contributor

IT
Business Partner window: there are 2 actions:
old one: Export in E-Mail Campaign with 1 parameter
new one: Export in Serienbrief Kampagne with 2 parameters

  1. have a bpartner with multiple locations. Make one billtodefault and one shiptodefault
  2. make sure you have a user on your bpartner

=> could not create user NOK

2018-07-25 15:00:31.844 ERROR 12232 --- [http-nio-8080-exec-10] o.a.a.m.AnnotatedModelInterceptor : Model interceptor method de.metas.marketing.base.interceptor.MKTG_ContactPerson#onChangeEmail threw an exception. You can disable this method with SysConfig InterceptorEnabled_de.metas.marketing.base.interceptor.MKTG_ContactPerson#onChangeEmail='N' (with AD_Client_ID and AD_Org_ID=0!) 2018-07-25 15:00:31.863 WARN 12232 --- [http-nio-8080-exec-10] o.adempiere.ad.trx.api.impl.TrxManager : AbstractTrxManager.call0 - caught class org.adempiere.exceptions.AdempiereException with message=NullPointerException: userRecord 2018-07-25 15:00:31.863 WARN 12232 --- [http-nio-8080-exec-10] o.adempiere.ad.trx.api.impl.TrxManager : AbstractTrxManager.call0 - caught class org.adempiere.exceptions.AdempiereException with message=NullPointerException: userRecord 2018-07-25 15:00:31.866 WARN 12232 --- [http-nio-8080-exec-10] o.adempiere.ad.trx.api.impl.TrxManager : AbstractTrxManager.call0 - caught class org.adempiere.exceptions.AdempiereException with message=NullPointerException: userRecord 2018-07-25 15:00:31.866 WARN 12232 --- [http-nio-8080-exec-10] o.adempiere.ad.trx.api.impl.TrxManager : AbstractTrxManager.call0 - caught class org.adempiere.exceptions.AdempiereException with message=NullPointerException: userRecord 2018-07-25 15:00:31.869 WARN 12232 --- [http-nio-8080-exec-10] de.metas.ui.web.window.model.Document : Failed saving document, but IGNORED: Document{tableName=C_BPartner, id=2156426, windowNo=272, writable=true, valid=Valid, validOnCheckout=Invalid('child invalid'), saveStatus=DocumentSaveStatus{saved=false, deleted=false, hasChangesToBeSaved=true, error=false, reason=child invalid}, saveStatusOnCheckout=DocumentSaveStatus{saved=false, deleted=false, hasChangesToBeSaved=true, error=false, reason=child invalid}}

org.adempiere.exceptions.AdempiereException: NullPointerException: userRecord
at org.adempiere.exceptions.AdempiereException.wrapIfNeeded(AdempiereException.java:89)
at org.adempiere.exceptions.AdempiereException.wrapIfNeeded(AdempiereException.java:85)
at org.adempiere.ad.modelvalidator.AnnotatedModelInterceptor.appendAndLogHowtoDisableMessage(AnnotatedModelInterceptor.java:577)
at org.adempiere.ad.modelvalidator.AnnotatedModelInterceptor.executeNow(AnnotatedModelInterceptor.java:567)
at org.adempiere.ad.modelvalidator.AnnotatedModelInterceptor.execute(AnnotatedModelInterceptor.java:521)
at org.adempiere.ad.modelvalidator.AnnotatedModelInterceptor.execute(AnnotatedModelInterceptor.java:464)
at org.adempiere.ad.modelvalidator.AnnotatedModelInterceptor.onModelChange(AnnotatedModelInterceptor.java:442)
at org.adempiere.ad.modelvalidator.ModelInterceptor2ModelValidatorWrapper.modelChange(ModelInterceptor2ModelValidatorWrapper.java:123)
at org.compiere.model.ModelValidationEngine.invokeModelChangeMethod(ModelValidationEngine.java:970)
at org.compiere.model.ModelValidationEngine.invokeModelChangeMethods(ModelValidationEngine.java:947)
at org.compiere.model.ModelValidationEngine.fireModelChange0(ModelValidationEngine.java:829)
at org.compiere.model.ModelValidationEngine.lambda$fireModelChange$0(ModelValidationEngine.java:784)
at org.compiere.model.ModelValidationEngine$1.run(ModelValidationEngine.java:806)
at org.adempiere.ad.trx.api.impl.TrxCallableWrappers$3.call(TrxCallableWrappers.java:145)
at org.adempiere.ad.trx.api.impl.TrxCallableWrappers$3.call(TrxCallableWrappers.java:135)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call0(AbstractTrxManager.java:775)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call(AbstractTrxManager.java:688)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.run(AbstractTrxManager.java:596)
at org.compiere.model.ModelValidationEngine.executeInTrx(ModelValidationEngine.java:801)
at org.compiere.model.ModelValidationEngine.fireModelChange(ModelValidationEngine.java:784)
at org.compiere.model.PO.fireModelChange(PO.java:4846)
at org.compiere.model.PO.saveFinish(PO.java:2901)
at org.compiere.model.PO.saveNew(PO.java:3698)
at org.compiere.model.PO.save0(PO.java:2826)
at org.compiere.model.PO.access$100(PO.java:139)
at org.compiere.model.PO$1.run(PO.java:2729)
at org.adempiere.ad.trx.api.impl.TrxCallableWrappers$3.call(TrxCallableWrappers.java:145)
at org.adempiere.ad.trx.api.impl.TrxCallableWrappers$3.call(TrxCallableWrappers.java:135)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call0(AbstractTrxManager.java:775)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call(AbstractTrxManager.java:688)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call(AbstractTrxManager.java:589)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call(AbstractTrxManager.java:520)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.run(AbstractTrxManager.java:506)
at org.compiere.model.PO.saveEx(PO.java:2723)
at org.adempiere.model.POWrapper.save(POWrapper.java:799)
at org.adempiere.model.InterfaceWrapperHelper.save(InterfaceWrapperHelper.java:595)
at org.adempiere.model.InterfaceWrapperHelper.saveRecord(InterfaceWrapperHelper.java:577)
at de.metas.marketing.base.model.ContactPersonRepository.save(ContactPersonRepository.java:68)
at de.metas.marketing.base.model.ContactPersonRepository$$FastClassBySpringCGLIB$$37fc08b2.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
at de.metas.marketing.base.model.ContactPersonRepository$$EnhancerBySpringCGLIB$$341cf566.save()
at de.metas.marketing.base.CampaignService.removeFromCampaign(CampaignService.java:153)
at de.metas.marketing.base.model.interceptor.AD_User.onChangeNewsletter(AD_User.java:97)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.adempiere.ad.modelvalidator.AnnotatedModelInterceptor.executeNow0(AnnotatedModelInterceptor.java:611)
at org.adempiere.ad.modelvalidator.AnnotatedModelInterceptor.executeNow(AnnotatedModelInterceptor.java:563)
at org.adempiere.ad.modelvalidator.AnnotatedModelInterceptor.execute(AnnotatedModelInterceptor.java:521)
at org.adempiere.ad.modelvalidator.AnnotatedModelInterceptor.execute(AnnotatedModelInterceptor.java:464)
at org.adempiere.ad.modelvalidator.AnnotatedModelInterceptor.onModelChange(AnnotatedModelInterceptor.java:442)
at org.adempiere.ad.modelvalidator.ModelInterceptor2ModelValidatorWrapper.modelChange(ModelInterceptor2ModelValidatorWrapper.java:123)
at org.compiere.model.ModelValidationEngine.invokeModelChangeMethod(ModelValidationEngine.java:970)
at org.compiere.model.ModelValidationEngine.invokeModelChangeMethods(ModelValidationEngine.java:947)
at org.compiere.model.ModelValidationEngine.fireModelChange0(ModelValidationEngine.java:829)
at org.compiere.model.ModelValidationEngine.lambda$fireModelChange$0(ModelValidationEngine.java:784)
at org.compiere.model.ModelValidationEngine$1.run(ModelValidationEngine.java:806)
at org.adempiere.ad.trx.api.impl.TrxCallableWrappers$3.call(TrxCallableWrappers.java:145)
at org.adempiere.ad.trx.api.impl.TrxCallableWrappers$3.call(TrxCallableWrappers.java:135)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call0(AbstractTrxManager.java:775)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call(AbstractTrxManager.java:688)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.run(AbstractTrxManager.java:596)
at org.compiere.model.ModelValidationEngine.executeInTrx(ModelValidationEngine.java:801)
at org.compiere.model.ModelValidationEngine.fireModelChange(ModelValidationEngine.java:784)
at org.compiere.model.PO.fireModelChange(PO.java:4846)
at org.compiere.model.PO.saveFinish(PO.java:2901)
at org.compiere.model.PO.saveNew(PO.java:3698)
at org.compiere.model.PO.save0(PO.java:2826)
at org.compiere.model.PO.access$100(PO.java:139)
at org.compiere.model.PO$1.run(PO.java:2729)
at org.adempiere.ad.trx.api.impl.TrxCallableWrappers$3.call(TrxCallableWrappers.java:145)
at org.adempiere.ad.trx.api.impl.TrxCallableWrappers$3.call(TrxCallableWrappers.java:135)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call0(AbstractTrxManager.java:775)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call(AbstractTrxManager.java:688)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call(AbstractTrxManager.java:589)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call(AbstractTrxManager.java:520)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.run(AbstractTrxManager.java:506)
at org.compiere.model.PO.saveEx(PO.java:2723)
at org.adempiere.model.POWrapper.save(POWrapper.java:799)
at org.adempiere.model.InterfaceWrapperHelper.save(InterfaceWrapperHelper.java:595)
at de.metas.ui.web.window.model.sql.SqlDocumentsRepository.save(SqlDocumentsRepository.java:558)
at de.metas.ui.web.window.model.Document.saveIfHasChanges(Document.java:1847)
at de.metas.ui.web.window.model.HighVolumeReadWriteIncludedDocumentsCollection.saveIfHasChanges(HighVolumeReadWriteIncludedDocumentsCollection.java:342)
at de.metas.ui.web.window.model.Document.saveIfHasChanges(Document.java:1868)
at de.metas.ui.web.window.model.Document.saveIfValidAndHasChanges(Document.java:1817)
at de.metas.ui.web.window.model.DocumentCollection.commitRootDocument(DocumentCollection.java:377)
at de.metas.ui.web.window.model.DocumentCollection.forRootDocumentWritable(DocumentCollection.java:299)
at de.metas.ui.web.window.model.DocumentCollection.forDocumentWritable(DocumentCollection.java:228)
at de.metas.ui.web.window.controller.WindowRestController.patchDocument0(WindowRestController.java:318)
at de.metas.ui.web.window.controller.WindowRestController.lambda$patchDocument$5(WindowRestController.java:312)
at org.adempiere.ad.trx.api.impl.TrxCallableWrappers$4.call(TrxCallableWrappers.java:193)
at org.adempiere.ad.trx.api.impl.TrxCallableWrappers$5.call(TrxCallableWrappers.java:222)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call0(AbstractTrxManager.java:775)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call(AbstractTrxManager.java:688)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call(AbstractTrxManager.java:589)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call(AbstractTrxManager.java:520)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call(AbstractTrxManager.java:498)
at org.adempiere.ad.trx.api.impl.AbstractTrxManager.call(AbstractTrxManager.java:475)
at de.metas.ui.web.window.controller.Execution$ExecutionBuilder.lambda$execute$0(Execution.java:194)
at de.metas.ui.web.window.controller.Execution$ExecutionBuilder.lambda$execute$2(Execution.java:237)
at de.metas.ui.web.window.controller.Execution$ExecutionBuilder.execute(Execution.java:260)
at de.metas.ui.web.window.controller.Execution.callInNewExecution(Execution.java:88)
at de.metas.ui.web.window.controller.WindowRestController.patchDocument(WindowRestController.java:312)
at de.metas.ui.web.window.controller.WindowRestController.patchIncludedDocument(WindowRestController.java:301)
at sun.reflect.GeneratedMethodAccessor537.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at de.metas.ui.web.config.WebConfig$1.doFilter(WebConfig.java:82)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at de.metas.ui.web.config.ServletLoggingFilter.doFilter(ServletLoggingFilter.java:89)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at de.metas.ui.web.config.CORSFilter.doFilter(CORSFilter.java:85)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:167)
at org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:80)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException: userRecord
at org.adempiere.user.UserRepository.ofRecord(UserRepository.java:45)
at org.adempiere.user.UserRepository.getById(UserRepository.java:42)
at org.adempiere.user.UserRepository$$FastClassBySpringCGLIB$$f1cc3b34.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
at org.adempiere.user.UserRepository$$EnhancerBySpringCGLIB$$59382e2c.getById()
at de.metas.marketing.base.UserService.updateUserEmailFromContactPerson(UserService.java:53)
at de.metas.marketing.base.interceptor.MKTG_ContactPerson.onChangeEmail(MKTG_ContactPerson.java:98)
at sun.reflect.GeneratedMethodAccessor534.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.adempiere.ad.modelvalidator.AnnotatedModelInterceptor.executeNow0(AnnotatedModelInterceptor.java:611)
at org.adempiere.ad.modelvalidator.AnnotatedModelInterceptor.executeNow(AnnotatedModelInterceptor.java:563)
... 182 common frames omitted

@metas-lc metas-lc assigned metas-rc and unassigned metas-lc Jul 25, 2018
metas-rc added a commit that referenced this issue Jul 25, 2018
* On new is not a valid option because a user can't have contat persons if it doesn't exist.
#4216
metas-ts added a commit that referenced this issue Jul 26, 2018
#4216 change the AD_User callout to only work on change.
@metas-rc metas-rc removed their assignment Jul 27, 2018
metas-ts added a commit that referenced this issue Jul 30, 2018
[#4092](#4092) sync mail address between contactperson and linked user
[#4153](#4216) Follow up : #4153 Serial Letter Feature
[#4396](#4396) Pipes/Cabling vertical
[#4403](#4403) Process to void order and revert flatrate terms, shipment schedule, invoice candidates
[#4413](#4413) ShipmentScheduleHandler.retrieveModelsWithMissingCandidates() shall return an iterator
[#4416](#4416) Split Product Nutrition/ Allergene in 2 Tabs
[#4417](#4417) New Textfield for Product Ingredients without BOM
[#1629](#1629) Invoice data goes missing in payment after save
[#4405](#4405) Action Sales Order from Quotation wrong Prices
[#4412](#4412) async-processors shall only run on app
[#4415](#4415) JSON Fehler "Der Kurier"
[#1889](metasfresh/metasfresh-webui-frontend-legacy#1889) Order line batch entry not working for current experimental cables/pipes batch entry
@metas-lc metas-lc assigned metas-lc and unassigned metas-lc Jul 30, 2018
@metas-lc
Copy link
Contributor

metas-lc commented Aug 1, 2018

IT
Business Partner window: there are 2 actions:
old one: Export in E-Mail Campaign with 1 parameter
new one: Export in Serienbrief Kampagne with 2 parameters

  1. have a bpartner with multiple locations. Make one billtodefault and one shiptodefault
  2. make sure you have a user on your bpartner
  3. create a new marketing campaign
  4. go to your bpartner and run Export in Serienbrief Kampagne. Set your campaign and on Default Address Type use Ship To Default. Start
    => new line in marketing campaign, for the address with Ship To Default OK
  5. run the same process again, but with Bill To Default
    => nothing happens (because there already is a line) OK
  6. remove the line from marketing campaign, run Export in Serienbrief Kampagne again, with Bill To Default
    => new line in marketing campaign, with the address from Bill To Default OK
  7. remove the line again and run Export in E-Mail Campaign
    => new line in marketing campaign, with the address from Bill To Default OK
  8. delete the line from marketing campaign, go to bpartner location and remove isBillToDefault and isShipToDefault. Run both processes again
    => Export in E-Mail Campaign: the one that was billtodefault was chosen NOK
    => Export in Serienbrief Kampagne: the one that was billtodefault was chosen (for both bill and ship default) NOK
    (i think it's the first address that was added in bpartner). I understood that there shall be no line created if is no ship/bill to default

@metas-rc
Copy link
Member

metas-rc commented Aug 3, 2018

As a rule: a contact person will be created without an address if the address is not required in the Marketing Platform.

@metas-rc
Copy link
Member

metas-rc commented Aug 3, 2018

For my new process, I will make it impossible to create a contact person if there is no address as required, but for the older process, the contact person must be created if the platform has the RequiredLocation flag on false.

@metas-lc
Copy link
Contributor

metas-lc commented Aug 8, 2018

IT
repeated the testcases
=> 1-7 works the same OK

  1. delete the line from marketing campaign, go to bpartner location and remove isBillToDefault and isShipToDefault. Run both processes again
    => Requires Location from Marketing Platform on N: Export in E-Mail Campaign: random one was set OK? (or no address shall be set?)
    => Requires Location from Marketing Platform on Y: Export in E-Mail Campaign: no line created OK
    => Export in Serienbrief Kampagne: no line created (both requires location on Y and N) OK
    .
    note: with some bpartners works fine. My bpartner was a newly created one, added user with email. Set it as sales and purchase user. Created 3 new locations: random, inv default, shipdefault. Did the testcase above 1-7, then i took out the flags inv default and shipdefault. Then did step 8. When i'm running Export in E-Mail Campaign, i get the address set

@metas-lc metas-lc assigned metas-rc and unassigned metas-lc Aug 8, 2018
metas-rc added a commit that referenced this issue Aug 8, 2018
metas-ts added a commit that referenced this issue Aug 9, 2018
#4216 make sure if an empty location fits for the MKTG campaign contact person then none is taken
@metas-rc metas-rc removed their assignment Aug 9, 2018
@metas-lc metas-lc self-assigned this Aug 9, 2018
@metas-lc
Copy link
Contributor

metas-lc commented Aug 9, 2018

IT
retested all, works fine
in case of 8
=> Requires Location from Marketing Platform on N: Export in E-Mail Campaign: line was created with no address OK

@metas-lc metas-lc closed this as completed Aug 9, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants