Merged PR 323: #925 Favicons | #1066 Catch Payer Undefined Error | #1061 View Destroyed Fix | #985 Checkmark Margin |
Related work items: #1066
71
angular.json
@@ -58,6 +58,7 @@
|
||||
"apps/sales/src/favicon.ico",
|
||||
"apps/sales/src/assets",
|
||||
"apps/sales/src/manifest.webmanifest",
|
||||
"apps/sales/src/browserconfig.xml",
|
||||
"apps/sales/src/silent-refresh.html"
|
||||
],
|
||||
"styles": [
|
||||
@@ -577,6 +578,76 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@domain/crm": {
|
||||
"projectType": "library",
|
||||
"root": "apps/domain/crm",
|
||||
"sourceRoot": "apps/domain/crm/src",
|
||||
"prefix": "crm",
|
||||
"architect": {
|
||||
"build": {
|
||||
"builder": "@angular-devkit/build-ng-packagr:build",
|
||||
"options": {
|
||||
"tsConfig": "apps/domain/crm/tsconfig.lib.json",
|
||||
"project": "apps/domain/crm/ng-package.json"
|
||||
}
|
||||
},
|
||||
"test": {
|
||||
"builder": "@angular-devkit/build-angular:karma",
|
||||
"options": {
|
||||
"main": "apps/domain/crm/src/test.ts",
|
||||
"tsConfig": "apps/domain/crm/tsconfig.spec.json",
|
||||
"karmaConfig": "apps/domain/crm/karma.conf.js"
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
"builder": "@angular-devkit/build-angular:tslint",
|
||||
"options": {
|
||||
"tsConfig": [
|
||||
"apps/domain/crm/tsconfig.lib.json",
|
||||
"apps/domain/crm/tsconfig.spec.json"
|
||||
],
|
||||
"exclude": [
|
||||
"**/node_modules/**"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@domain/checkout": {
|
||||
"projectType": "library",
|
||||
"root": "apps/domain/checkout",
|
||||
"sourceRoot": "apps/domain/checkout/src",
|
||||
"prefix": "checkout",
|
||||
"architect": {
|
||||
"build": {
|
||||
"builder": "@angular-devkit/build-ng-packagr:build",
|
||||
"options": {
|
||||
"tsConfig": "apps/domain/checkout/tsconfig.lib.json",
|
||||
"project": "apps/domain/checkout/ng-package.json"
|
||||
}
|
||||
},
|
||||
"test": {
|
||||
"builder": "@angular-devkit/build-angular:karma",
|
||||
"options": {
|
||||
"main": "apps/domain/checkout/src/test.ts",
|
||||
"tsConfig": "apps/domain/checkout/tsconfig.spec.json",
|
||||
"karmaConfig": "apps/domain/checkout/karma.conf.js"
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
"builder": "@angular-devkit/build-angular:tslint",
|
||||
"options": {
|
||||
"tsConfig": [
|
||||
"apps/domain/checkout/tsconfig.lib.json",
|
||||
"apps/domain/checkout/tsconfig.spec.json"
|
||||
],
|
||||
"exclude": [
|
||||
"**/node_modules/**"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"defaultProject": "sales"
|
||||
|
||||
25
apps/domain/checkout/README.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# Checkout
|
||||
|
||||
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.14.
|
||||
|
||||
## Code scaffolding
|
||||
|
||||
Run `ng generate component component-name --project checkout` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project checkout`.
|
||||
|
||||
> Note: Don't forget to add `--project checkout` or else it will be added to the default project in your `angular.json` file.
|
||||
|
||||
## Build
|
||||
|
||||
Run `ng build checkout` to build the project. The build artifacts will be stored in the `dist/` directory.
|
||||
|
||||
## Publishing
|
||||
|
||||
After building your library with `ng build checkout`, go to the dist folder `cd dist/checkout` and run `npm publish`.
|
||||
|
||||
## Running unit tests
|
||||
|
||||
Run `ng test checkout` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
||||
|
||||
## Further help
|
||||
|
||||
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
|
||||
32
apps/domain/checkout/karma.conf.js
Normal file
@@ -0,0 +1,32 @@
|
||||
// Karma configuration file, see link for more information
|
||||
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
||||
|
||||
module.exports = function (config) {
|
||||
config.set({
|
||||
basePath: '',
|
||||
frameworks: ['jasmine', '@angular-devkit/build-angular'],
|
||||
plugins: [
|
||||
require('karma-jasmine'),
|
||||
require('karma-chrome-launcher'),
|
||||
require('karma-jasmine-html-reporter'),
|
||||
require('karma-coverage-istanbul-reporter'),
|
||||
require('@angular-devkit/build-angular/plugins/karma'),
|
||||
],
|
||||
client: {
|
||||
clearContext: false, // leave Jasmine Spec Runner output visible in browser
|
||||
},
|
||||
coverageIstanbulReporter: {
|
||||
dir: require('path').join(__dirname, '../../../coverage/domain/checkout'),
|
||||
reports: ['html', 'lcovonly', 'text-summary'],
|
||||
fixWebpackSourcePaths: true,
|
||||
},
|
||||
reporters: ['progress', 'kjhtml'],
|
||||
port: 9876,
|
||||
colors: true,
|
||||
logLevel: config.LOG_INFO,
|
||||
autoWatch: true,
|
||||
browsers: ['Chrome'],
|
||||
singleRun: false,
|
||||
restartOnFileChange: true,
|
||||
});
|
||||
};
|
||||
7
apps/domain/checkout/ng-package.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"$schema": "../../../node_modules/ng-packagr/ng-package.schema.json",
|
||||
"dest": "../../../dist/domain/checkout",
|
||||
"lib": {
|
||||
"entryFile": "src/public-api.ts"
|
||||
}
|
||||
}
|
||||
8
apps/domain/checkout/package.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "@domain/checkout",
|
||||
"version": "0.0.1",
|
||||
"peerDependencies": {
|
||||
"@angular/common": "^8.2.14",
|
||||
"@angular/core": "^8.2.14"
|
||||
}
|
||||
}
|
||||
24
apps/domain/checkout/src/lib/checkout.component.spec.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { CheckoutComponent } from './checkout.component';
|
||||
|
||||
describe('CheckoutComponent', () => {
|
||||
let component: CheckoutComponent;
|
||||
let fixture: ComponentFixture<CheckoutComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [CheckoutComponent],
|
||||
}).compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(CheckoutComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
16
apps/domain/checkout/src/lib/checkout.component.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'checkout-checkout',
|
||||
template: `
|
||||
<p>
|
||||
checkout works!
|
||||
</p>
|
||||
`,
|
||||
styles: [],
|
||||
})
|
||||
export class CheckoutComponent implements OnInit {
|
||||
constructor() {}
|
||||
|
||||
ngOnInit() {}
|
||||
}
|
||||
9
apps/domain/checkout/src/lib/checkout.module.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { CheckoutComponent } from './checkout.component';
|
||||
|
||||
@NgModule({
|
||||
declarations: [CheckoutComponent],
|
||||
imports: [],
|
||||
exports: [CheckoutComponent],
|
||||
})
|
||||
export class CheckoutModule {}
|
||||
12
apps/domain/checkout/src/lib/checkout.service.spec.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { CheckoutService } from './checkout.service';
|
||||
|
||||
describe('CheckoutService', () => {
|
||||
beforeEach(() => TestBed.configureTestingModule({}));
|
||||
|
||||
it('should be created', () => {
|
||||
const service: CheckoutService = TestBed.get(CheckoutService);
|
||||
expect(service).toBeTruthy();
|
||||
});
|
||||
});
|
||||
8
apps/domain/checkout/src/lib/checkout.service.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class CheckoutService {
|
||||
constructor() {}
|
||||
}
|
||||
7
apps/domain/checkout/src/public-api.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
/*
|
||||
* Public API Surface of checkout
|
||||
*/
|
||||
|
||||
export * from './lib/checkout.service';
|
||||
export * from './lib/checkout.component';
|
||||
export * from './lib/checkout.module';
|
||||
15
apps/domain/checkout/src/test.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
|
||||
|
||||
import 'zone.js/dist/zone';
|
||||
import 'zone.js/dist/zone-testing';
|
||||
import { getTestBed } from '@angular/core/testing';
|
||||
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
|
||||
|
||||
declare const require: any;
|
||||
|
||||
// First, initialize the Angular testing environment.
|
||||
getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());
|
||||
// Then we find all the tests.
|
||||
const context = require.context('./', true, /\.spec\.ts$/);
|
||||
// And load the modules.
|
||||
context.keys().map(context);
|
||||
26
apps/domain/checkout/tsconfig.lib.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"extends": "../../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../../../out-tsc/lib",
|
||||
"target": "es2015",
|
||||
"declaration": true,
|
||||
"inlineSources": true,
|
||||
"types": [],
|
||||
"lib": [
|
||||
"dom",
|
||||
"es2018"
|
||||
]
|
||||
},
|
||||
"angularCompilerOptions": {
|
||||
"annotateForClosureCompiler": true,
|
||||
"skipTemplateCodegen": true,
|
||||
"strictMetadataEmit": true,
|
||||
"fullTemplateTypeCheck": true,
|
||||
"strictInjectionParameters": true,
|
||||
"enableResourceInlining": true
|
||||
},
|
||||
"exclude": [
|
||||
"src/test.ts",
|
||||
"**/*.spec.ts"
|
||||
]
|
||||
}
|
||||
17
apps/domain/checkout/tsconfig.spec.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"extends": "../../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../../../out-tsc/spec",
|
||||
"types": [
|
||||
"jasmine",
|
||||
"node"
|
||||
]
|
||||
},
|
||||
"files": [
|
||||
"src/test.ts"
|
||||
],
|
||||
"include": [
|
||||
"**/*.spec.ts",
|
||||
"**/*.d.ts"
|
||||
]
|
||||
}
|
||||
17
apps/domain/checkout/tslint.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"extends": "../../../tslint.json",
|
||||
"rules": {
|
||||
"directive-selector": [
|
||||
true,
|
||||
"attribute",
|
||||
"checkout",
|
||||
"camelCase"
|
||||
],
|
||||
"component-selector": [
|
||||
true,
|
||||
"element",
|
||||
"checkout",
|
||||
"kebab-case"
|
||||
]
|
||||
}
|
||||
}
|
||||
25
apps/domain/crm/README.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# Crm
|
||||
|
||||
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.14.
|
||||
|
||||
## Code scaffolding
|
||||
|
||||
Run `ng generate component component-name --project crm` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project crm`.
|
||||
|
||||
> Note: Don't forget to add `--project crm` or else it will be added to the default project in your `angular.json` file.
|
||||
|
||||
## Build
|
||||
|
||||
Run `ng build crm` to build the project. The build artifacts will be stored in the `dist/` directory.
|
||||
|
||||
## Publishing
|
||||
|
||||
After building your library with `ng build crm`, go to the dist folder `cd dist/crm` and run `npm publish`.
|
||||
|
||||
## Running unit tests
|
||||
|
||||
Run `ng test crm` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
||||
|
||||
## Further help
|
||||
|
||||
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
|
||||
32
apps/domain/crm/karma.conf.js
Normal file
@@ -0,0 +1,32 @@
|
||||
// Karma configuration file, see link for more information
|
||||
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
||||
|
||||
module.exports = function (config) {
|
||||
config.set({
|
||||
basePath: '',
|
||||
frameworks: ['jasmine', '@angular-devkit/build-angular'],
|
||||
plugins: [
|
||||
require('karma-jasmine'),
|
||||
require('karma-chrome-launcher'),
|
||||
require('karma-jasmine-html-reporter'),
|
||||
require('karma-coverage-istanbul-reporter'),
|
||||
require('@angular-devkit/build-angular/plugins/karma'),
|
||||
],
|
||||
client: {
|
||||
clearContext: false, // leave Jasmine Spec Runner output visible in browser
|
||||
},
|
||||
coverageIstanbulReporter: {
|
||||
dir: require('path').join(__dirname, '../../../coverage/domain/crm'),
|
||||
reports: ['html', 'lcovonly', 'text-summary'],
|
||||
fixWebpackSourcePaths: true,
|
||||
},
|
||||
reporters: ['progress', 'kjhtml'],
|
||||
port: 9876,
|
||||
colors: true,
|
||||
logLevel: config.LOG_INFO,
|
||||
autoWatch: true,
|
||||
browsers: ['Chrome'],
|
||||
singleRun: false,
|
||||
restartOnFileChange: true,
|
||||
});
|
||||
};
|
||||
7
apps/domain/crm/ng-package.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"$schema": "../../../node_modules/ng-packagr/ng-package.schema.json",
|
||||
"dest": "../../../dist/domain/crm",
|
||||
"lib": {
|
||||
"entryFile": "src/public-api.ts"
|
||||
}
|
||||
}
|
||||
8
apps/domain/crm/package.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "@domain/crm",
|
||||
"version": "0.0.1",
|
||||
"peerDependencies": {
|
||||
"@angular/common": "^8.2.14",
|
||||
"@angular/core": "^8.2.14"
|
||||
}
|
||||
}
|
||||
24
apps/domain/crm/src/lib/crm.component.spec.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { CrmComponent } from './crm.component';
|
||||
|
||||
describe('CrmComponent', () => {
|
||||
let component: CrmComponent;
|
||||
let fixture: ComponentFixture<CrmComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [CrmComponent],
|
||||
}).compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(CrmComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
16
apps/domain/crm/src/lib/crm.component.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'crm-crm',
|
||||
template: `
|
||||
<p>
|
||||
crm works!
|
||||
</p>
|
||||
`,
|
||||
styles: [],
|
||||
})
|
||||
export class CrmComponent implements OnInit {
|
||||
constructor() {}
|
||||
|
||||
ngOnInit() {}
|
||||
}
|
||||
9
apps/domain/crm/src/lib/crm.module.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { NgModule } from '@angular/core';
|
||||
import { CrmComponent } from './crm.component';
|
||||
|
||||
@NgModule({
|
||||
declarations: [CrmComponent],
|
||||
imports: [],
|
||||
exports: [CrmComponent],
|
||||
})
|
||||
export class CrmModule {}
|
||||
12
apps/domain/crm/src/lib/crm.service.spec.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { CrmService } from './crm.service';
|
||||
|
||||
describe('CrmService', () => {
|
||||
beforeEach(() => TestBed.configureTestingModule({}));
|
||||
|
||||
it('should be created', () => {
|
||||
const service: CrmService = TestBed.get(CrmService);
|
||||
expect(service).toBeTruthy();
|
||||
});
|
||||
});
|
||||
8
apps/domain/crm/src/lib/crm.service.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class CrmService {
|
||||
constructor() {}
|
||||
}
|
||||
7
apps/domain/crm/src/public-api.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
/*
|
||||
* Public API Surface of crm
|
||||
*/
|
||||
|
||||
export * from './lib/crm.service';
|
||||
export * from './lib/crm.component';
|
||||
export * from './lib/crm.module';
|
||||
15
apps/domain/crm/src/test.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
|
||||
|
||||
import 'zone.js/dist/zone';
|
||||
import 'zone.js/dist/zone-testing';
|
||||
import { getTestBed } from '@angular/core/testing';
|
||||
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
|
||||
|
||||
declare const require: any;
|
||||
|
||||
// First, initialize the Angular testing environment.
|
||||
getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());
|
||||
// Then we find all the tests.
|
||||
const context = require.context('./', true, /\.spec\.ts$/);
|
||||
// And load the modules.
|
||||
context.keys().map(context);
|
||||
26
apps/domain/crm/tsconfig.lib.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"extends": "../../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../../../out-tsc/lib",
|
||||
"target": "es2015",
|
||||
"declaration": true,
|
||||
"inlineSources": true,
|
||||
"types": [],
|
||||
"lib": [
|
||||
"dom",
|
||||
"es2018"
|
||||
]
|
||||
},
|
||||
"angularCompilerOptions": {
|
||||
"annotateForClosureCompiler": true,
|
||||
"skipTemplateCodegen": true,
|
||||
"strictMetadataEmit": true,
|
||||
"fullTemplateTypeCheck": true,
|
||||
"strictInjectionParameters": true,
|
||||
"enableResourceInlining": true
|
||||
},
|
||||
"exclude": [
|
||||
"src/test.ts",
|
||||
"**/*.spec.ts"
|
||||
]
|
||||
}
|
||||
17
apps/domain/crm/tsconfig.spec.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"extends": "../../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../../../out-tsc/spec",
|
||||
"types": [
|
||||
"jasmine",
|
||||
"node"
|
||||
]
|
||||
},
|
||||
"files": [
|
||||
"src/test.ts"
|
||||
],
|
||||
"include": [
|
||||
"**/*.spec.ts",
|
||||
"**/*.d.ts"
|
||||
]
|
||||
}
|
||||
17
apps/domain/crm/tslint.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"extends": "../../../tslint.json",
|
||||
"rules": {
|
||||
"directive-selector": [
|
||||
true,
|
||||
"attribute",
|
||||
"crm",
|
||||
"camelCase"
|
||||
],
|
||||
"component-selector": [
|
||||
true,
|
||||
"element",
|
||||
"crm",
|
||||
"kebab-case"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,9 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { QueryTokenDTO } from '@swagger/cat';
|
||||
import { CustomerService as CustomerApiService, PayerService } from '@swagger/crm';
|
||||
import {
|
||||
CustomerService as CustomerApiService,
|
||||
PayerService,
|
||||
} from '@swagger/crm';
|
||||
import { map, switchMap, catchError } from 'rxjs/operators';
|
||||
import { Observable, of, combineLatest, BehaviorSubject } from 'rxjs';
|
||||
import { CustomerMapping } from '../mappings/customer.mapping';
|
||||
@@ -28,7 +31,11 @@ import { CustomerFilters } from '../../modules/customer';
|
||||
})
|
||||
export class CustomerService {
|
||||
addAddressError$ = new BehaviorSubject<any>(null);
|
||||
constructor(private customerService: CustomerApiService, private mapper: CustomerMapping, private payerService: PayerService) {}
|
||||
constructor(
|
||||
private customerService: CustomerApiService,
|
||||
private mapper: CustomerMapping,
|
||||
private payerService: PayerService
|
||||
) {}
|
||||
|
||||
createCustomer(_customer: User): Observable<User> {
|
||||
const customer: CustomerDTO = this.mapper.fromUser(_customer);
|
||||
@@ -97,7 +104,9 @@ export class CustomerService {
|
||||
filter?: CustomerFilters
|
||||
): Observable<CustomerSearchResponse> {
|
||||
const noFilters = filter
|
||||
? isNullOrUndefined(filter.bonuscard) && isNullOrUndefined(filter.guestaccount) && isNullOrUndefined(filter.onlineshop)
|
||||
? isNullOrUndefined(filter.bonuscard) &&
|
||||
isNullOrUndefined(filter.guestaccount) &&
|
||||
isNullOrUndefined(filter.onlineshop)
|
||||
? true
|
||||
: false
|
||||
: false;
|
||||
@@ -112,9 +121,15 @@ export class CustomerService {
|
||||
filter:
|
||||
filter && !noFilters
|
||||
? {
|
||||
['bonuscard']: !isNullOrUndefined(filter.bonuscard) ? String(filter.bonuscard) : undefined,
|
||||
['guestaccount']: !isNullOrUndefined(filter.guestaccount) ? String(filter.guestaccount) : undefined,
|
||||
['onlineshop']: !isNullOrUndefined(filter.onlineshop) ? String(filter.onlineshop) : undefined,
|
||||
['bonuscard']: !isNullOrUndefined(filter.bonuscard)
|
||||
? String(filter.bonuscard)
|
||||
: undefined,
|
||||
['guestaccount']: !isNullOrUndefined(filter.guestaccount)
|
||||
? String(filter.guestaccount)
|
||||
: undefined,
|
||||
['onlineshop']: !isNullOrUndefined(filter.onlineshop)
|
||||
? String(filter.onlineshop)
|
||||
: undefined,
|
||||
}
|
||||
: undefined,
|
||||
};
|
||||
@@ -125,7 +140,9 @@ export class CustomerService {
|
||||
throw new Error(response.message);
|
||||
}
|
||||
return {
|
||||
customers: response.result.map((t) => this.mapper.customerInfoDTOtoUser(t)),
|
||||
customers: response.result.map((t) =>
|
||||
this.mapper.customerInfoDTOtoUser(t)
|
||||
),
|
||||
hits: response.hits,
|
||||
message: response.message,
|
||||
};
|
||||
@@ -133,33 +150,44 @@ export class CustomerService {
|
||||
);
|
||||
}
|
||||
|
||||
getCustomer(customer$: Observable<ResponseArgsOfCustomerDTO>): Observable<User> {
|
||||
getCustomer(
|
||||
customer$: Observable<ResponseArgsOfCustomerDTO>
|
||||
): Observable<User> {
|
||||
return customer$.pipe(
|
||||
map((response: ResponseArgsOfCustomerDTO) => {
|
||||
if (response.error) {
|
||||
throw new Error(response.message);
|
||||
}
|
||||
return {
|
||||
shippingAddresses: response.result.shippingAddresses.map((addressEnity) => addressEnity.id),
|
||||
shippingAddresses: response.result.shippingAddresses.map(
|
||||
(addressEnity) => addressEnity.id
|
||||
),
|
||||
user: this.mapper.customerDTOtoUser(response.result),
|
||||
};
|
||||
}),
|
||||
switchMap((customerResult) => {
|
||||
const user = customerResult.user;
|
||||
if (!customerResult.shippingAddresses || customerResult.shippingAddresses.length === 0) {
|
||||
if (
|
||||
!customerResult.shippingAddresses ||
|
||||
customerResult.shippingAddresses.length === 0
|
||||
) {
|
||||
return of(customerResult.user);
|
||||
}
|
||||
const observablesOfShippingAddresses = customerResult.shippingAddresses.map((t) => {
|
||||
return this.customerService.CustomerGetShippingaddress(t).pipe(
|
||||
map((response) => {
|
||||
if (response.error) {
|
||||
throw new Error(response.message);
|
||||
}
|
||||
return response.result;
|
||||
})
|
||||
);
|
||||
});
|
||||
const shippingAddresses$ = combineLatest(observablesOfShippingAddresses);
|
||||
const observablesOfShippingAddresses = customerResult.shippingAddresses.map(
|
||||
(t) => {
|
||||
return this.customerService.CustomerGetShippingaddress(t).pipe(
|
||||
map((response) => {
|
||||
if (response.error) {
|
||||
throw new Error(response.message);
|
||||
}
|
||||
return response.result;
|
||||
})
|
||||
);
|
||||
}
|
||||
);
|
||||
const shippingAddresses$ = combineLatest(
|
||||
observablesOfShippingAddresses
|
||||
);
|
||||
return shippingAddresses$.pipe(
|
||||
switchMap((address: ShippingAddressDTO[]) => {
|
||||
const updatedUser = user;
|
||||
@@ -185,34 +213,39 @@ export class CustomerService {
|
||||
}),
|
||||
switchMap((customer: User) => {
|
||||
const updateCustomer = customer;
|
||||
return this.customerService.CustomerGetAssignedPayersByCustomerId(customer.id).pipe(
|
||||
map((response) => {
|
||||
if (response.error) {
|
||||
throw new Error(response.message);
|
||||
}
|
||||
return { customer: customer, assignedPayers: response.result };
|
||||
}),
|
||||
switchMap((response) => {
|
||||
if (Array.isArray(response.assignedPayers) && response.assignedPayers.length > 0) {
|
||||
const invoiceAddresses = response.assignedPayers.map((t) => {
|
||||
return {
|
||||
...this.mapper.fromAssignedPayerDtoToAddress(t),
|
||||
synced: true,
|
||||
};
|
||||
});
|
||||
const defaultAddress = invoiceAddresses.reduce((ad1, ad2) => {
|
||||
if (ad1.defaultSince >= ad2.defaultSince) {
|
||||
return ad1;
|
||||
}
|
||||
return ad2;
|
||||
});
|
||||
updateCustomer.poossible_invoice_addresses = invoiceAddresses;
|
||||
updateCustomer.invoice_address = defaultAddress;
|
||||
}
|
||||
return this.customerService
|
||||
.CustomerGetAssignedPayersByCustomerId(customer.id)
|
||||
.pipe(
|
||||
map((response) => {
|
||||
if (response.error) {
|
||||
throw new Error(response.message);
|
||||
}
|
||||
return { customer: customer, assignedPayers: response.result };
|
||||
}),
|
||||
switchMap((response) => {
|
||||
if (
|
||||
Array.isArray(response.assignedPayers) &&
|
||||
response.assignedPayers.length > 0
|
||||
) {
|
||||
const invoiceAddresses = response.assignedPayers.map((t) => {
|
||||
return {
|
||||
...this.mapper.fromAssignedPayerDtoToAddress(t),
|
||||
synced: true,
|
||||
};
|
||||
});
|
||||
const defaultAddress = invoiceAddresses.reduce((ad1, ad2) => {
|
||||
if (ad1.defaultSince >= ad2.defaultSince) {
|
||||
return ad1;
|
||||
}
|
||||
return ad2;
|
||||
});
|
||||
updateCustomer.poossible_invoice_addresses = invoiceAddresses;
|
||||
updateCustomer.invoice_address = defaultAddress;
|
||||
}
|
||||
|
||||
return of(updateCustomer);
|
||||
})
|
||||
);
|
||||
return of(updateCustomer);
|
||||
})
|
||||
);
|
||||
})
|
||||
);
|
||||
}
|
||||
@@ -231,7 +264,9 @@ export class CustomerService {
|
||||
throw new Error(response.message);
|
||||
}
|
||||
return {
|
||||
customers: response.result.map((t) => this.mapper.customerInfoDTOtoUser(t)),
|
||||
customers: response.result.map((t) =>
|
||||
this.mapper.customerInfoDTOtoUser(t)
|
||||
),
|
||||
hits: 0,
|
||||
};
|
||||
})
|
||||
@@ -259,28 +294,32 @@ export class CustomerService {
|
||||
isDefault: true,
|
||||
};
|
||||
if (shippingAddress.synced === true) {
|
||||
return this.customerService.CustomerModifyShippingAddressFlag(params).pipe(
|
||||
map((response) => {
|
||||
if (response.error) {
|
||||
throw new Error(response.message);
|
||||
}
|
||||
return response.result;
|
||||
})
|
||||
);
|
||||
return this.customerService
|
||||
.CustomerModifyShippingAddressFlag(params)
|
||||
.pipe(
|
||||
map((response) => {
|
||||
if (response.error) {
|
||||
throw new Error(response.message);
|
||||
}
|
||||
return response.result;
|
||||
})
|
||||
);
|
||||
} else {
|
||||
return this.addShippingAddress(customerId, {
|
||||
...shippingAddress,
|
||||
id: null,
|
||||
}).pipe(
|
||||
switchMap(() => {
|
||||
return this.customerService.CustomerModifyShippingAddressFlag(params).pipe(
|
||||
map((response) => {
|
||||
if (response.error) {
|
||||
throw new Error(response.message);
|
||||
}
|
||||
return response.result;
|
||||
})
|
||||
);
|
||||
return this.customerService
|
||||
.CustomerModifyShippingAddressFlag(params)
|
||||
.pipe(
|
||||
map((response) => {
|
||||
if (response.error) {
|
||||
throw new Error(response.message);
|
||||
}
|
||||
return response.result;
|
||||
})
|
||||
);
|
||||
})
|
||||
);
|
||||
}
|
||||
@@ -332,7 +371,10 @@ export class CustomerService {
|
||||
if (!isNullOrUndefined(shippingAddress.id)) {
|
||||
const params = {
|
||||
shippingAddressId: shippingAddress.id,
|
||||
shippingAddress: this.mapper.fromAddressToShippingAddressDTO(shippingAddress, !isNullOrUndefined(shippingAddress.id)),
|
||||
shippingAddress: this.mapper.fromAddressToShippingAddressDTO(
|
||||
shippingAddress,
|
||||
!isNullOrUndefined(shippingAddress.id)
|
||||
),
|
||||
customerId: customerId,
|
||||
};
|
||||
return this.customerService.CustomerUpdateShippingAddress(params).pipe(
|
||||
@@ -360,7 +402,10 @@ export class CustomerService {
|
||||
);
|
||||
} else {
|
||||
const params = {
|
||||
shippingAddress: this.mapper.fromAddressToShippingAddressDTO(shippingAddress, !isNullOrUndefined(shippingAddress.id)),
|
||||
shippingAddress: this.mapper.fromAddressToShippingAddressDTO(
|
||||
shippingAddress,
|
||||
!isNullOrUndefined(shippingAddress.id)
|
||||
),
|
||||
customerId: customerId,
|
||||
};
|
||||
return this.customerService.CustomerCreateShippingAddress(params).pipe(
|
||||
@@ -420,15 +465,27 @@ export class CustomerService {
|
||||
payerId: payerResponse.result.id,
|
||||
isDefault: true,
|
||||
};
|
||||
return this.customerService.CustomerAddPayerReference(referenceParamsparams).pipe(
|
||||
map((response) => {
|
||||
if (response.error) {
|
||||
throw new Error(response.message);
|
||||
}
|
||||
this.addAddressError$.next(undefined);
|
||||
return response.result.payer.data;
|
||||
})
|
||||
);
|
||||
return this.customerService
|
||||
.CustomerAddPayerReference(referenceParamsparams)
|
||||
.pipe(
|
||||
map((response) => {
|
||||
if (response.error) {
|
||||
throw new Error(response.message);
|
||||
}
|
||||
|
||||
if (!response.result || !response.result.payer) {
|
||||
throw new Error(
|
||||
response.message ||
|
||||
'Beim Anlegen der Rechnungsadress-Referenz ist ein Fehler aufgetreten.'
|
||||
);
|
||||
}
|
||||
this.addAddressError$.next(undefined);
|
||||
return response.result.payer.data;
|
||||
}),
|
||||
catchError((err) => {
|
||||
throw new Error(err.message);
|
||||
})
|
||||
);
|
||||
})
|
||||
);
|
||||
} else {
|
||||
@@ -466,7 +523,10 @@ export class CustomerService {
|
||||
if (response.error) {
|
||||
throw new Error(response.message);
|
||||
}
|
||||
return response.result.map((t, index) => <Country>{ index, id: t.id, key: t.isO3166_A_3, value: t.name });
|
||||
return response.result.map(
|
||||
(t, index) =>
|
||||
<Country>{ index, id: t.id, key: t.isO3166_A_3, value: t.name }
|
||||
);
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
@@ -73,6 +73,8 @@ export class ProductResultsComponent implements OnInit, OnDestroy, AfterViewInit
|
||||
radioButtonGroup: RadioButtonGroup;
|
||||
acrhiveFilter: boolean;
|
||||
|
||||
timoutScheisseUmwerk: any;
|
||||
|
||||
get areFiltersNegative() {
|
||||
if (this.selectedFilterMode) {
|
||||
return this.selectedFilterMode === Side.RIGHT;
|
||||
@@ -184,7 +186,7 @@ export class ProductResultsComponent implements OnInit, OnDestroy, AfterViewInit
|
||||
this.loading = false;
|
||||
this.cdr.detectChanges();
|
||||
|
||||
setTimeout(() => {
|
||||
this.timoutScheisseUmwerk = setTimeout(() => {
|
||||
this.cdr.detectChanges();
|
||||
this.scroller.checkViewportSize();
|
||||
}, 500);
|
||||
@@ -388,5 +390,7 @@ export class ProductResultsComponent implements OnInit, OnDestroy, AfterViewInit
|
||||
|
||||
ngOnDestroy() {
|
||||
this.destroy$.next();
|
||||
this.destroy$.complete();
|
||||
clearTimeout(this.timoutScheisseUmwerk);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import {
|
||||
Output,
|
||||
EventEmitter,
|
||||
} from '@angular/core';
|
||||
import { AutocompleteDTO } from '@swagger/oms/lib';
|
||||
import { AutocompleteDTO } from '@swagger/oms';
|
||||
import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
|
||||
import { ResultItemComponent } from './result-item';
|
||||
import { AutocompleteOptions } from '../../defs';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Component, ChangeDetectionStrategy, Input, HostBinding, Output, EventEmitter } from '@angular/core';
|
||||
import { AutocompleteDTO } from '@swagger/oms/lib';
|
||||
import { AutocompleteDTO } from '@swagger/oms';
|
||||
import { Highlightable } from '@angular/cdk/a11y';
|
||||
|
||||
@Component({
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { VATType } from '@swagger/oms/lib';
|
||||
import { VATType } from '@swagger/oms';
|
||||
|
||||
export const VatTypeName = new Map<VATType, string>([
|
||||
[0, ''],
|
||||
|
||||
@@ -8,7 +8,7 @@ import { FormGroup, FormArray } from '@angular/forms';
|
||||
import { ProcessingStatusPipe, PickUpDateOptionsToDisplayValuesPipe, ProcessingStatusOptionsPipe } from '../../pipes';
|
||||
import { DatePipe } from '@angular/common';
|
||||
import { ShelfNavigationService } from '../../shared/services';
|
||||
import { OrderItemProcessingStatusValue } from '@swagger/oms/lib';
|
||||
import { OrderItemProcessingStatusValue } from '@swagger/oms';
|
||||
import { ErrorService } from 'apps/sales/src/app/core/error/component/error.service';
|
||||
|
||||
@Component({
|
||||
|
||||
@@ -5,7 +5,7 @@ import { ShelfNavigationService } from '../../shared/services';
|
||||
import { filter, map, distinctUntilChanged, shareReplay, take, withLatestFrom, first } from 'rxjs/operators';
|
||||
import { isNullOrUndefined } from 'util';
|
||||
import { DatePipe } from '@angular/common';
|
||||
import { OrderItemProcessingStatusValue } from '@swagger/oms/lib';
|
||||
import { OrderItemProcessingStatusValue } from '@swagger/oms';
|
||||
import { ShelfEditFormService } from '../../services/shelf-edit-form.service';
|
||||
import { ProcessingStatusOptionsPipe, ProcessingStatusPipe, PickUpDateOptionsToDisplayValuesPipe } from '../../pipes';
|
||||
import { ErrorService } from 'apps/sales/src/app/core/error/component/error.service';
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Component, ChangeDetectionStrategy, Input, TemplateRef, OnInit } from '
|
||||
import { HistoryStateFacade } from '@shelf-store/history';
|
||||
import { DetailsFacade } from '@shelf-store/details';
|
||||
import { OrderDetailsCardInput } from '../../../components/order-details-card';
|
||||
import { OrderItemListItemDTO, OrderItemProcessingStatusValue } from '@swagger/oms/lib';
|
||||
import { OrderItemListItemDTO, OrderItemProcessingStatusValue } from '@swagger/oms';
|
||||
import { Observable } from 'rxjs';
|
||||
import { map, filter, shareReplay, take } from 'rxjs/operators';
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div class="isa-flex isa-font-weight-bold isa-font-color-customer">
|
||||
<div *ngFor="let feature of features$ | async">
|
||||
<div *ngFor="let feature of features$ | async" class="isa-mr-28">
|
||||
<lib-icon name="Check_f"></lib-icon>
|
||||
{{ feature.description }}
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Pipe, PipeTransform } from '@angular/core';
|
||||
import { VATDTO } from '@swagger/checkout/lib';
|
||||
import { VATDTO } from '@swagger/checkout';
|
||||
|
||||
@Pipe({
|
||||
name: 'vatDtoToVatType',
|
||||
|
||||
@@ -9,12 +9,9 @@ import {
|
||||
DeleteLastPreviousPath,
|
||||
ClearBreadcrumbs,
|
||||
} from 'apps/sales/src/app/core/store/actions/breadcrumb.actions';
|
||||
import {
|
||||
ChangeCurrentRoute,
|
||||
AddProcess,
|
||||
} from 'apps/sales/src/app/core/store/actions/process.actions';
|
||||
import { ChangeCurrentRoute, AddProcess } from 'apps/sales/src/app/core/store/actions/process.actions';
|
||||
import { Breadcrumb } from 'apps/sales/src/app/core/models/breadcrumb.model';
|
||||
import { OrderItemListItemDTO } from '@swagger/oms/lib';
|
||||
import { OrderItemListItemDTO } from '@swagger/oms';
|
||||
import { ProcessSelectors } from 'apps/sales/src/app/core/store/selectors/process.selectors';
|
||||
import { Process } from 'apps/sales/src/app/core/models/process.model';
|
||||
|
||||
@@ -51,11 +48,7 @@ export class ShelfNavigationService {
|
||||
}
|
||||
}
|
||||
|
||||
navigateToEdit(order: {
|
||||
orderNumber?: string;
|
||||
compartmentCode?: string;
|
||||
processingStatus?: number;
|
||||
}) {
|
||||
navigateToEdit(order: { orderNumber?: string; compartmentCode?: string; processingStatus?: number }) {
|
||||
if (!order) {
|
||||
return this.navigateToSearch();
|
||||
}
|
||||
@@ -66,11 +59,7 @@ export class ShelfNavigationService {
|
||||
this.navigateToRoute(path, breadcrumb);
|
||||
}
|
||||
|
||||
updateDetailsNavigation(order: {
|
||||
orderNumber?: string;
|
||||
compartmentCode?: string;
|
||||
processingStatus?: number;
|
||||
}) {
|
||||
updateDetailsNavigation(order: { orderNumber?: string; compartmentCode?: string; processingStatus?: number }) {
|
||||
if (!order) {
|
||||
return this.navigateToSearch();
|
||||
}
|
||||
@@ -88,13 +77,7 @@ export class ShelfNavigationService {
|
||||
this.replaceRoute(path, breadcrumb);
|
||||
}
|
||||
|
||||
navigateToResultList({
|
||||
searchQuery,
|
||||
numberOfHits,
|
||||
}: {
|
||||
searchQuery: string;
|
||||
numberOfHits: number;
|
||||
}) {
|
||||
navigateToResultList({ searchQuery, numberOfHits }: { searchQuery: string; numberOfHits: number }) {
|
||||
this.createTab();
|
||||
const path = '/shelf/results';
|
||||
const breadcrumb = this.getResultListBreadcrumb(searchQuery, numberOfHits);
|
||||
@@ -102,10 +85,7 @@ export class ShelfNavigationService {
|
||||
}
|
||||
|
||||
navigateToHistory(orderitem: OrderItemListItemDTO) {
|
||||
this.navigateToRoute(
|
||||
this.getHistoryPath(orderitem),
|
||||
`Historie ${orderitem.orderItemSubsetId}`
|
||||
);
|
||||
this.navigateToRoute(this.getHistoryPath(orderitem), `Historie ${orderitem.orderItemSubsetId}`);
|
||||
}
|
||||
|
||||
getHistoryPath(data: {
|
||||
@@ -122,24 +102,14 @@ export class ShelfNavigationService {
|
||||
}
|
||||
}
|
||||
|
||||
updateResultPageBreadcrumb(data: {
|
||||
numberOfHits: number;
|
||||
searchQuery: string;
|
||||
}) {
|
||||
updateResultPageBreadcrumb(data: { numberOfHits: number; searchQuery: string }) {
|
||||
this.store.dispatch(new DeleteBreadcrumbsForProcess(1));
|
||||
this.store.dispatch(
|
||||
new AddBreadcrumb(
|
||||
{ name: 'Warenausgabe', path: '/shelf/search' },
|
||||
'shelf'
|
||||
)
|
||||
);
|
||||
this.store.dispatch(new AddBreadcrumb({ name: 'Warenausgabe', path: '/shelf/search' }, 'shelf'));
|
||||
const path = '/shelf/results';
|
||||
this.store.dispatch(
|
||||
new AddBreadcrumb(
|
||||
{
|
||||
name: `${data.searchQuery} (${data.numberOfHits} ${
|
||||
data.numberOfHits > 1 ? 'Ergebnisse' : 'Ergebnis'
|
||||
})`,
|
||||
name: `${data.searchQuery} (${data.numberOfHits} ${data.numberOfHits > 1 ? 'Ergebnisse' : 'Ergebnis'})`,
|
||||
path,
|
||||
},
|
||||
'shelf'
|
||||
@@ -149,22 +119,15 @@ export class ShelfNavigationService {
|
||||
|
||||
private replaceRoute(route: string, breadcrumbName: string) {
|
||||
this.router.navigate([route]);
|
||||
this.store.dispatch(
|
||||
new UpdateCurrentBreadcrumbName(breadcrumbName, 'shelf')
|
||||
);
|
||||
this.store.dispatch(new UpdateCurrentBreadcrumbName(breadcrumbName, 'shelf'));
|
||||
}
|
||||
|
||||
private resetBreadcrumbs(): void {
|
||||
this.store.dispatch(new ClearBreadcrumbs('shelf'));
|
||||
this.store.dispatch(
|
||||
new AddBreadcrumb({ name: 'Warenausgabe', path: '/shelf' }, 'shelf', true)
|
||||
);
|
||||
this.store.dispatch(new AddBreadcrumb({ name: 'Warenausgabe', path: '/shelf' }, 'shelf', true));
|
||||
}
|
||||
|
||||
private async navigateToRoute(
|
||||
route: string,
|
||||
breadcrumbName: string
|
||||
): Promise<boolean> {
|
||||
private async navigateToRoute(route: string, breadcrumbName: string): Promise<boolean> {
|
||||
this.store.dispatch(
|
||||
new AddBreadcrumb(
|
||||
<Breadcrumb>{
|
||||
@@ -195,9 +158,7 @@ export class ShelfNavigationService {
|
||||
this.store.dispatch(new PopLastBreadcrumbs(this.getEditBreadCrumb()));
|
||||
|
||||
if (previous) {
|
||||
this.store.dispatch(
|
||||
new PopLastBreadcrumbs(this.getDetailsBreadcrumb(previous))
|
||||
);
|
||||
this.store.dispatch(new PopLastBreadcrumbs(this.getDetailsBreadcrumb(previous)));
|
||||
}
|
||||
|
||||
await this.navigateToDetails(data, { replaceLastVisited });
|
||||
@@ -219,9 +180,7 @@ export class ShelfNavigationService {
|
||||
}
|
||||
) {
|
||||
if (previous) {
|
||||
this.store.dispatch(
|
||||
new PopLastBreadcrumbs(this.getDetailsBreadcrumb(previous))
|
||||
);
|
||||
this.store.dispatch(new PopLastBreadcrumbs(this.getDetailsBreadcrumb(previous)));
|
||||
}
|
||||
this.navigateToDetails(data, { replaceLastVisited: true });
|
||||
}
|
||||
@@ -230,17 +189,11 @@ export class ShelfNavigationService {
|
||||
this.store.dispatch(new DeleteLastPreviousPath());
|
||||
}
|
||||
|
||||
private getResultListBreadcrumb(
|
||||
searchQuery: string,
|
||||
numberOfHits: number
|
||||
): string {
|
||||
private getResultListBreadcrumb(searchQuery: string, numberOfHits: number): string {
|
||||
return `${searchQuery} (${numberOfHits} Ergebnisse)`;
|
||||
}
|
||||
|
||||
getDetailsBreadcrumb(data: {
|
||||
orderNumber?: string;
|
||||
compartmentCode?: string;
|
||||
}): string {
|
||||
getDetailsBreadcrumb(data: { orderNumber?: string; compartmentCode?: string }): string {
|
||||
if (data.compartmentCode) {
|
||||
return `${data.compartmentCode}`;
|
||||
}
|
||||
@@ -251,12 +204,7 @@ export class ShelfNavigationService {
|
||||
return 'Bearbeiten';
|
||||
}
|
||||
|
||||
private getDetailsPath(data: {
|
||||
orderNumber?: string;
|
||||
compartmentCode?: string;
|
||||
processingStatus?: number;
|
||||
edit?: boolean;
|
||||
}): string {
|
||||
private getDetailsPath(data: { orderNumber?: string; compartmentCode?: string; processingStatus?: number; edit?: boolean }): string {
|
||||
let url = '';
|
||||
if (data.compartmentCode) {
|
||||
url = `/shelf/details/compartment/${data.compartmentCode}/${data.processingStatus}`;
|
||||
@@ -272,8 +220,7 @@ export class ShelfNavigationService {
|
||||
}
|
||||
|
||||
private createTab() {
|
||||
const processExists =
|
||||
this.store.selectSnapshot(ProcessSelectors.getProcessesCount) > 0;
|
||||
const processExists = this.store.selectSnapshot(ProcessSelectors.getProcessesCount) > 0;
|
||||
if (!processExists) {
|
||||
this.createProcess();
|
||||
}
|
||||
@@ -314,27 +261,15 @@ export class ShelfNavigationService {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (
|
||||
current.orderNumber &&
|
||||
previous.orderNumber &&
|
||||
current.orderNumber !== previous.orderNumber
|
||||
) {
|
||||
if (current.orderNumber && previous.orderNumber && current.orderNumber !== previous.orderNumber) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (
|
||||
current.compartmentCode &&
|
||||
previous.compartmentCode &&
|
||||
current.compartmentCode !== previous.compartmentCode
|
||||
) {
|
||||
if (current.compartmentCode && previous.compartmentCode && current.compartmentCode !== previous.compartmentCode) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (
|
||||
current.processingStatus &&
|
||||
previous.processingStatus &&
|
||||
current.processingStatus !== previous.processingStatus
|
||||
) {
|
||||
if (current.processingStatus && previous.processingStatus && current.processingStatus !== previous.processingStatus) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,18 +4,13 @@ import { BranchSelectors } from 'apps/sales/src/app/core/store/selectors/branch.
|
||||
import { Observable, NEVER } from 'rxjs';
|
||||
import { switchMap, map, take, catchError } from 'rxjs/operators';
|
||||
import { CollectingShelfService } from 'apps/sales/src/app/core/services/collecting-shelf.service';
|
||||
import {
|
||||
AutocompleteTokenDTO,
|
||||
ResponseArgsOfIEnumerableOfAutocompleteDTO,
|
||||
} from '@swagger/oms/lib';
|
||||
import { AutocompleteTokenDTO, ResponseArgsOfIEnumerableOfAutocompleteDTO } from '@swagger/oms';
|
||||
import { SearchStateFacade } from '@shelf-store';
|
||||
import { CustomerService } from '@sales/core-services';
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class ShelfSearchFacadeService {
|
||||
@Select(BranchSelectors.getUserBranch) currentUserBranchId$: Observable<
|
||||
string
|
||||
>;
|
||||
@Select(BranchSelectors.getUserBranch) currentUserBranchId$: Observable<string>;
|
||||
|
||||
constructor(
|
||||
private readonly customerService: CustomerService,
|
||||
@@ -52,12 +47,9 @@ export class ShelfSearchFacadeService {
|
||||
allowCustomerCardSearch: true,
|
||||
}
|
||||
) {
|
||||
const searchQuery = await this.getSearchQuery(
|
||||
this.getBarcodeSearchQuery(barcode),
|
||||
{
|
||||
allowCustomerCardSearch: options.allowCustomerCardSearch,
|
||||
}
|
||||
);
|
||||
const searchQuery = await this.getSearchQuery(this.getBarcodeSearchQuery(barcode), {
|
||||
allowCustomerCardSearch: options.allowCustomerCardSearch,
|
||||
});
|
||||
|
||||
if (!this.isValidSearchQuery(searchQuery)) {
|
||||
return;
|
||||
@@ -67,18 +59,13 @@ export class ShelfSearchFacadeService {
|
||||
return this.requestSearch(true);
|
||||
}
|
||||
|
||||
searchForAutocomplete(
|
||||
queryString: string,
|
||||
options: { selectedFilters?: { [key: string]: string } } = {}
|
||||
) {
|
||||
searchForAutocomplete(queryString: string, options: { selectedFilters?: { [key: string]: string } } = {}) {
|
||||
const searchQuery = queryString.trim();
|
||||
const autoCompleteQuery: AutocompleteTokenDTO = this.generateAutocompleteToken(
|
||||
{
|
||||
queryString: searchQuery,
|
||||
filter: options.selectedFilters || {},
|
||||
take: 5,
|
||||
}
|
||||
);
|
||||
const autoCompleteQuery: AutocompleteTokenDTO = this.generateAutocompleteToken({
|
||||
queryString: searchQuery,
|
||||
filter: options.selectedFilters || {},
|
||||
take: 5,
|
||||
});
|
||||
|
||||
if (!this.isValidSearchQuery(searchQuery)) {
|
||||
return NEVER;
|
||||
@@ -91,10 +78,7 @@ export class ShelfSearchFacadeService {
|
||||
return this.searchStateFacade.fetchResult({ isNewSearch });
|
||||
}
|
||||
|
||||
private getSearchQuery(
|
||||
queryString: string,
|
||||
options: { allowCustomerCardSearch: boolean }
|
||||
): Promise<string> {
|
||||
private getSearchQuery(queryString: string, options: { allowCustomerCardSearch: boolean }): Promise<string> {
|
||||
if (options.allowCustomerCardSearch && this.isCustomerCard(queryString)) {
|
||||
return this.getCustomerNumber(queryString);
|
||||
}
|
||||
@@ -116,16 +100,8 @@ export class ShelfSearchFacadeService {
|
||||
};
|
||||
}
|
||||
|
||||
private requestAutocompleteSearch(
|
||||
autocompleteToken: AutocompleteTokenDTO
|
||||
): Observable<ResponseArgsOfIEnumerableOfAutocompleteDTO> {
|
||||
return this.currentUserBranchId$.pipe(
|
||||
switchMap(() =>
|
||||
this.collectingShelfService.searchWarenausgabeAutocomplete(
|
||||
autocompleteToken
|
||||
)
|
||||
)
|
||||
);
|
||||
private requestAutocompleteSearch(autocompleteToken: AutocompleteTokenDTO): Observable<ResponseArgsOfIEnumerableOfAutocompleteDTO> {
|
||||
return this.currentUserBranchId$.pipe(switchMap(() => this.collectingShelfService.searchWarenausgabeAutocomplete(autocompleteToken)));
|
||||
}
|
||||
|
||||
private isValidSearchQuery(queryString: string): boolean {
|
||||
@@ -146,9 +122,7 @@ export class ShelfSearchFacadeService {
|
||||
.searchCustomer(customerCardNumber.trim())
|
||||
.pipe(
|
||||
map((response) => response.customers),
|
||||
map((customers) =>
|
||||
customers[0] ? customers[0].customerNumber : customerCardNumber
|
||||
),
|
||||
map((customers) => (customers[0] ? customers[0].customerNumber : customerCardNumber)),
|
||||
catchError(() => customerCardNumber),
|
||||
take(1)
|
||||
)
|
||||
|
||||
@@ -4,7 +4,7 @@ import { Article, File } from '../../defs';
|
||||
import { Observable, of } from 'rxjs';
|
||||
|
||||
import { Store, select } from '@ngrx/store';
|
||||
import { DisplayInfoDTO } from '@swagger/eis/lib';
|
||||
import { DisplayInfoDTO } from '@swagger/eis';
|
||||
import { selectTaskById } from 'apps/sales/src/app/store/branch/task-calendar/task-calendar.selectors';
|
||||
|
||||
@Component({
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Pipe, PipeTransform } from '@angular/core';
|
||||
import { DisplayInfoDTO } from '@swagger/eis/lib';
|
||||
import { DisplayInfoDTO } from '@swagger/eis';
|
||||
import { Task } from '../defs';
|
||||
import { fromDisplayInfoToTask } from '../../../store/branch/task-calendar/mappings';
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DisplayInfoDTO } from '@swagger/eis/lib';
|
||||
import { DisplayInfoDTO } from '@swagger/eis';
|
||||
import { fromDisplayInfoToTask } from './task-mapper';
|
||||
import { getColorForTask } from 'apps/sales/src/app/modules/task-calendar/helpers';
|
||||
import { CalendarItem } from 'apps/sales/src/app/modules/task-calendar/defs';
|
||||
|
||||
@@ -2,7 +2,7 @@ import { fromProcessStatusToTaskStatus } from './task-status.mapper';
|
||||
import { taskTypeMapper } from './task-type-mapper';
|
||||
import { fromTimeToTimeWindow } from './time-window.mapper';
|
||||
import { taskIsAllDay, taskIsMultiDay } from './task-duration.mapper';
|
||||
import { DisplayInfoDTO } from '@swagger/eis/lib';
|
||||
import { DisplayInfoDTO } from '@swagger/eis';
|
||||
import { Task } from 'apps/sales/src/app/modules/task-calendar/defs';
|
||||
|
||||
export function fromDisplayInfoToTask(source: DisplayInfoDTO): Task {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Task } from 'apps/sales/src/app/modules/task-calendar/defs';
|
||||
import { ProcessingStatus } from '@swagger/eis/lib';
|
||||
import { ProcessingStatus } from '@swagger/eis';
|
||||
|
||||
export function fromProcessStatusToTaskStatus(processingStatus: ProcessingStatus): Task['status'] {
|
||||
// tslint:disable: no-bitwise
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { CustomerDTO } from '@swagger/crm/lib';
|
||||
import { CustomerDTO } from '@swagger/crm';
|
||||
import { Customer } from '../defs';
|
||||
import { customerDtoToCustomerBaseData } from './customer-dto-to-customer-base-data.mapper';
|
||||
import { customerDtoToCustomerAddresses } from './customer-dto-to-customer-addresses.mapper';
|
||||
|
||||
BIN
apps/sales/src/assets/icons/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
apps/sales/src/assets/icons/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
apps/sales/src/assets/icons/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
apps/sales/src/assets/icons/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 615 B |
BIN
apps/sales/src/assets/icons/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 975 B |
BIN
apps/sales/src/assets/icons/favicon.ico
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
BIN
apps/sales/src/assets/icons/mstile-150x150.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
133
apps/sales/src/assets/icons/safari-pinned-tab.svg
Normal file
@@ -0,0 +1,133 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="1024.000000pt" height="1024.000000pt" viewBox="0 0 1024.000000 1024.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<metadata>
|
||||
Created by potrace 1.11, written by Peter Selinger 2001-2013
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,1024.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M720 5370 l0 -580 125 0 125 0 0 250 0 250 231 -2 230 -3 2 -245 2
|
||||
-245 123 -3 122 -3 0 581 0 581 -122 -3 -123 -3 -2 -215 -2 -215 -230 -3 -231
|
||||
-2 0 220 0 220 -125 0 -125 0 0 -580z"/>
|
||||
<path d="M5840 5740 l0 -211 -37 39 c-76 79 -222 104 -340 60 -81 -30 -171
|
||||
-121 -201 -203 -55 -150 -47 -335 20 -468 57 -113 167 -179 308 -185 102 -4
|
||||
157 15 219 77 l41 41 0 -50 0 -51 105 3 c58 2 105 6 105 11 0 4 0 264 0 577
|
||||
l0 570 -110 0 -110 0 0 -210z m-110 -288 c101 -51 143 -202 100 -364 -33 -120
|
||||
-176 -172 -281 -103 -140 92 -118 415 31 474 40 16 112 13 150 -7z"/>
|
||||
<path d="M7010 5370 l0 -580 105 0 105 0 0 52 0 51 36 -37 c62 -64 106 -81
|
||||
214 -81 88 0 101 3 162 33 75 37 125 89 163 168 38 80 48 144 43 278 -5 129
|
||||
-18 177 -75 259 -59 85 -199 146 -311 135 -62 -6 -156 -49 -193 -89 l-29 -31
|
||||
0 211 0 211 -110 0 -110 0 0 -580z m517 64 c100 -82 121 -278 42 -397 -38 -58
|
||||
-80 -80 -149 -80 -103 0 -169 66 -188 188 -9 58 -2 158 13 200 15 38 56 85 93
|
||||
105 56 31 140 23 189 -16z"/>
|
||||
<path d="M8760 5370 l0 -580 115 0 115 0 0 580 0 580 -115 0 -115 0 0 -580z"/>
|
||||
<path d="M2848 5635 c-179 -49 -282 -251 -250 -488 13 -104 40 -165 97 -226
|
||||
122 -130 344 -142 463 -24 l42 42 0 -67 c-1 -128 -25 -181 -100 -219 -49 -25
|
||||
-103 -29 -162 -11 -40 12 -88 58 -88 84 0 11 -22 14 -115 14 -131 0 -131 0
|
||||
-94 -80 56 -123 165 -180 349 -180 159 0 273 40 341 120 74 86 73 81 77 583
|
||||
l3 447 -106 0 -105 0 0 -56 0 -57 -40 46 c-69 78 -189 106 -312 72z m242 -185
|
||||
c53 -27 88 -83 101 -159 12 -75 -1 -155 -33 -214 -33 -59 -67 -80 -137 -85
|
||||
-52 -4 -67 -1 -105 22 -139 81 -134 380 8 442 46 20 120 17 166 -6z"/>
|
||||
<path d="M3765 5633 c-188 -68 -285 -213 -285 -428 0 -134 41 -244 121 -323
|
||||
146 -144 407 -157 563 -28 43 35 100 122 111 169 l7 27 -104 0 -105 0 -24 -37
|
||||
c-37 -56 -71 -76 -136 -81 -109 -7 -184 58 -199 172 l-7 46 297 0 296 0 0 58
|
||||
c-1 180 -88 335 -227 404 -59 29 -78 33 -162 35 -73 3 -108 -1 -146 -14z m221
|
||||
-173 c39 -25 69 -71 78 -122 l7 -38 -181 0 c-99 0 -180 3 -180 8 0 27 25 86
|
||||
47 113 58 69 154 85 229 39z"/>
|
||||
<path d="M4752 5635 c-52 -16 -115 -58 -142 -94 l-19 -26 -1 58 0 57 -110 0
|
||||
-110 0 0 -420 0 -420 115 0 115 0 0 258 c0 141 5 273 10 292 11 41 61 94 103
|
||||
109 80 30 171 -3 194 -69 8 -24 12 -125 12 -312 l1 -278 116 0 116 0 -4 333
|
||||
c-3 294 -6 337 -22 375 -24 56 -96 118 -159 137 -62 18 -157 18 -215 0z"/>
|
||||
<path d="M8175 5631 c-193 -66 -307 -266 -277 -489 31 -234 184 -373 412 -375
|
||||
163 -2 293 71 358 200 44 87 47 83 -76 83 l-110 0 -12 -31 c-38 -91 -190 -120
|
||||
-271 -51 -34 28 -63 84 -73 145 l-7 37 302 0 301 0 -6 68 c-9 96 -25 159 -54
|
||||
222 -28 60 -100 138 -153 166 -89 46 -241 57 -334 25z m200 -160 c65 -30 105
|
||||
-86 105 -147 l0 -24 -175 0 c-173 0 -175 0 -175 22 0 35 39 106 71 129 59 41
|
||||
114 48 174 20z"/>
|
||||
<path d="M1762 5298 c3 -324 4 -334 26 -380 48 -97 140 -148 269 -148 86 0
|
||||
155 28 215 87 l48 47 0 -57 0 -58 105 3 105 3 0 415 0 415 -110 3 -110 3 0
|
||||
-248 c0 -264 -6 -306 -47 -362 -67 -88 -220 -80 -259 14 -11 27 -14 93 -14
|
||||
315 l0 280 -116 0 -115 0 3 -332z"/>
|
||||
<path d="M6152 5293 c3 -307 5 -341 22 -373 51 -98 144 -150 265 -150 93 0
|
||||
154 23 214 81 28 27 53 49 55 49 2 0 2 -24 1 -52 l-3 -53 107 -3 107 -3 0 421
|
||||
0 420 -109 0 -109 0 -4 -263 c-3 -259 -3 -263 -29 -312 -35 -69 -84 -97 -162
|
||||
-92 -49 3 -63 8 -90 35 l-32 32 -3 300 -3 300 -115 0 -115 0 3 -337z"/>
|
||||
<path d="M8842 4478 c-18 -18 -14 -46 7 -58 15 -7 23 -6 35 6 21 21 20 41 -3
|
||||
54 -24 13 -24 13 -39 -2z"/>
|
||||
<path d="M8988 4479 c-39 -22 -5 -79 34 -58 21 11 24 39 6 57 -14 14 -18 14
|
||||
-40 1z"/>
|
||||
<path d="M3480 4247 l0 -237 88 0 c98 0 148 18 194 66 70 75 77 223 15 315
|
||||
-37 56 -91 78 -201 86 l-96 6 0 -236z m211 160 c49 -32 74 -88 74 -167 0 -121
|
||||
-52 -178 -170 -188 l-65 -5 0 192 0 191 64 0 c49 0 71 -5 97 -23z"/>
|
||||
<path d="M4830 4245 l0 -235 125 0 c118 0 125 1 125 20 0 19 -7 20 -100 20
|
||||
l-100 0 0 215 0 215 -25 0 -25 0 0 -235z"/>
|
||||
<path d="M6811 4466 c-26 -31 14 -71 45 -45 8 7 14 22 12 33 -4 26 -40 33 -57
|
||||
12z"/>
|
||||
<path d="M8430 4245 l0 -235 25 0 25 0 0 108 c0 123 16 170 63 187 36 12 78
|
||||
-10 88 -45 4 -14 7 -76 8 -137 1 -106 2 -113 21 -113 19 0 20 7 20 139 0 131
|
||||
-1 142 -22 166 -28 31 -85 43 -128 25 -16 -7 -30 -16 -30 -21 0 -5 -4 -9 -10
|
||||
-9 -6 0 -10 35 -10 85 0 84 0 85 -25 85 l-25 0 0 -235z"/>
|
||||
<path d="M9578 4463 c-3 -4 -2 -79 0 -165 4 -147 5 -158 23 -158 18 0 19 10
|
||||
21 145 1 80 2 153 2 163 1 17 -38 31 -46 15z"/>
|
||||
<path d="M7338 4393 c-3 -44 -5 -48 -30 -51 -38 -4 -40 -42 -3 -42 l25 0 0
|
||||
-126 c0 -69 4 -134 10 -144 20 -37 120 -37 120 1 0 16 -5 18 -25 13 -47 -12
|
||||
-55 7 -55 137 l0 119 40 0 c33 0 40 3 40 20 0 17 -7 20 -40 20 l-40 0 0 50 c0
|
||||
43 -3 50 -19 50 -17 0 -20 -8 -23 -47z"/>
|
||||
<path d="M3983 4336 c-30 -14 -53 -42 -53 -65 0 -21 42 -11 62 14 38 48 134
|
||||
19 126 -37 -2 -18 -16 -25 -69 -38 -36 -9 -78 -24 -92 -33 -47 -31 -53 -120
|
||||
-10 -153 42 -32 118 -29 152 5 19 19 19 19 24 0 3 -10 13 -19 24 -19 17 0 18
|
||||
10 15 142 -3 134 -5 144 -27 167 -29 30 -105 38 -152 17z m135 -198 c-4 -40
|
||||
-11 -57 -32 -75 -33 -28 -79 -30 -106 -3 -41 41 -17 84 62 111 80 28 81 27 76
|
||||
-33z"/>
|
||||
<path d="M4335 4336 c-31 -13 -55 -51 -55 -86 0 -31 41 -67 105 -90 33 -12 65
|
||||
-26 72 -32 36 -29 -6 -88 -62 -88 -37 0 -75 28 -75 55 0 9 -9 15 -25 15 -34 0
|
||||
-33 -31 3 -70 55 -61 177 -47 207 23 26 63 0 107 -79 133 -94 30 -119 61 -78
|
||||
97 36 32 112 11 112 -31 0 -7 11 -12 25 -12 29 0 31 10 10 49 -24 47 -99 64
|
||||
-160 37z"/>
|
||||
<path d="M5229 4327 c-47 -31 -69 -79 -69 -152 0 -110 51 -170 145 -170 46 0
|
||||
58 4 84 29 55 53 27 80 -31 31 -56 -47 -126 -21 -146 54 -5 22 -7 43 -4 46 3
|
||||
3 54 5 114 5 l108 0 0 35 c0 113 -113 181 -201 122z m106 -23 c19 -8 45 -55
|
||||
45 -84 0 -19 -6 -20 -86 -20 l-86 0 6 33 c11 56 69 91 121 71z"/>
|
||||
<path d="M5583 4334 c-36 -18 -58 -62 -49 -99 7 -29 53 -60 111 -76 73 -20 95
|
||||
-59 55 -99 -39 -39 -130 -14 -130 35 0 9 -10 15 -26 15 -24 0 -25 -3 -19 -27
|
||||
10 -43 43 -71 91 -79 85 -12 149 29 149 96 0 50 -24 75 -89 96 -67 21 -96 40
|
||||
-96 63 0 26 32 51 66 51 35 0 47 -8 63 -37 12 -23 51 -32 51 -13 0 27 -32 69
|
||||
-61 79 -43 15 -78 14 -116 -5z"/>
|
||||
<path d="M5931 4332 c-90 -49 -107 -221 -29 -293 36 -35 87 -45 138 -30 35 10
|
||||
80 51 80 72 0 18 -40 8 -64 -16 -57 -57 -156 -4 -156 84 0 20 5 21 115 21 113
|
||||
0 115 0 115 23 0 116 -106 191 -199 139z m113 -44 c15 -13 29 -38 32 -55 l7
|
||||
-33 -85 0 c-47 0 -87 3 -91 6 -9 9 20 75 41 90 26 20 68 17 96 -8z"/>
|
||||
<path d="M6340 4343 c-8 -3 -25 -15 -37 -26 l-23 -20 0 21 c0 17 -6 22 -26 22
|
||||
-24 0 -26 -3 -20 -31 3 -17 6 -92 6 -165 0 -127 1 -134 20 -134 19 0 20 7 20
|
||||
104 0 120 11 161 51 181 38 20 65 19 89 -5 18 -18 20 -33 20 -150 l0 -130 25
|
||||
0 25 0 0 124 c0 67 -5 137 -11 155 -17 48 -84 74 -139 54z"/>
|
||||
<path d="M7030 4332 c-27 -13 -37 -26 -44 -55 -14 -53 13 -85 94 -115 35 -12
|
||||
70 -28 77 -34 34 -28 -7 -88 -60 -88 -40 0 -77 24 -77 51 0 14 -7 19 -25 19
|
||||
-33 0 -33 -29 0 -69 46 -54 165 -51 201 5 21 31 20 90 -1 114 -10 11 -40 27
|
||||
-69 36 -93 30 -118 61 -80 98 32 33 114 9 114 -32 0 -7 11 -12 25 -12 29 0 31
|
||||
10 10 49 -25 49 -102 65 -165 33z"/>
|
||||
<path d="M7798 4335 c-34 -19 -48 -44 -48 -84 0 -40 23 -60 107 -91 62 -23 68
|
||||
-28 71 -57 6 -60 -76 -86 -123 -38 -14 13 -25 29 -25 35 0 5 -9 10 -20 10 -29
|
||||
0 -26 -45 4 -75 46 -46 149 -45 192 2 28 30 32 87 9 120 -8 12 -39 29 -68 38
|
||||
-88 28 -98 35 -95 69 2 23 10 33 29 40 37 13 78 0 91 -29 7 -16 20 -25 33 -25
|
||||
18 0 21 5 18 24 -12 61 -113 96 -175 61z"/>
|
||||
<path d="M8139 4327 c-47 -31 -69 -80 -69 -150 0 -98 41 -159 115 -173 68 -12
|
||||
124 23 140 89 6 24 5 27 -19 27 -19 0 -26 -5 -26 -18 0 -25 -41 -62 -69 -62
|
||||
-58 0 -91 50 -91 135 0 87 33 135 94 135 25 0 66 -41 66 -66 0 -15 35 -19 44
|
||||
-6 2 4 -4 26 -14 49 -28 64 -108 83 -171 40z"/>
|
||||
<path d="M8870 4331 c-75 -40 -103 -163 -57 -251 53 -100 181 -106 239 -11 18
|
||||
28 23 51 23 106 0 55 -5 78 -23 106 -40 65 -116 86 -182 50z m122 -50 c32 -28
|
||||
33 -32 33 -106 0 -74 -1 -78 -33 -106 -38 -34 -69 -37 -104 -9 -37 28 -51 72
|
||||
-46 137 4 48 10 61 37 85 40 36 72 36 113 -1z"/>
|
||||
<path d="M9290 4343 c-8 -3 -25 -15 -37 -26 l-23 -20 0 21 c0 17 -6 22 -26 22
|
||||
-22 0 -25 -3 -20 -22 3 -13 6 -87 6 -165 0 -134 1 -143 19 -143 17 0 19 10 23
|
||||
118 4 124 13 152 55 171 35 16 61 13 83 -9 18 -18 20 -33 20 -150 l0 -130 25
|
||||
0 25 0 0 124 c0 67 -5 137 -11 155 -17 48 -84 74 -139 54z"/>
|
||||
<path d="M6810 4175 l0 -165 25 0 25 0 0 165 0 165 -25 0 -25 0 0 -165z"/>
|
||||
<path d="M9572 4068 c-32 -32 8 -80 48 -58 34 18 19 70 -20 70 -9 0 -21 -5
|
||||
-28 -12z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.4 KiB |
9
apps/sales/src/browserconfig.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square150x150logo src="/assets/icons/mstile-150x150.png"/>
|
||||
<TileColor>#da532c</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
||||
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 7.2 KiB |
@@ -7,9 +7,12 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<link rel="icon" type="image/x-icon" href="favicon.ico" />
|
||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600,700" rel="stylesheet" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/assets/icons/apple-touch-icon.png" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/assets/icons/favicon-32x32.png" />
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/assets/icons/favicon-16x16.png" />
|
||||
<link rel="mask-icon" href="/assets/icons/safari-pinned-tab.svg" color="#5bbad5" />
|
||||
<link rel="manifest" href="manifest.webmanifest" crossorigin="use-credentials" />
|
||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600,700" rel="stylesheet" />
|
||||
<meta name="theme-color" content="#1976d2" />
|
||||
<style>
|
||||
.app-loader {
|
||||
|
||||
@@ -2,118 +2,128 @@
|
||||
"name": "Hugendubel Instore Mitarbeiter App",
|
||||
"short_name": "Hima",
|
||||
"start_url": "https://isa-integration.paragon-data.net/",
|
||||
"theme_color": "#1976d2",
|
||||
"background_color": "#fafafa",
|
||||
"display": "fullscreen",
|
||||
"theme_color": "#ffffff",
|
||||
"background_color": "#ffffff",
|
||||
"display": "standalone",
|
||||
"lang": "de",
|
||||
"icons": [
|
||||
{
|
||||
"src": "assets/icons/ios/ios-appicon-76-76.png",
|
||||
"sizes": "76x76",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/ios/ios-appicon-120-120.png",
|
||||
"sizes": "120x120",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/ios/ios-appicon-152-152.png",
|
||||
"sizes": "152x152",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/ios/ios-appicon-180-180.png",
|
||||
"sizes": "180x180",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/ios/ios-appicon-1024-1024.png",
|
||||
"sizes": "1024x1024",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/ios/ios-launchimage-640-960.png",
|
||||
"sizes": "640x960",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/ios/ios-launchimage-640-1136.png",
|
||||
"sizes": "640x1136",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/ios/ios-launchimage-750-1334.png",
|
||||
"sizes": "750x1334",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/ios/ios-launchimage-768-1024.png",
|
||||
"sizes": "768x1024",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/ios/ios-launchimage-1024-768.png",
|
||||
"sizes": "1024x768",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/ios/ios-launchimage-1242-2208.png",
|
||||
"sizes": "1242x2208",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/ios/ios-launchimage-1334-750.png",
|
||||
"sizes": "1334x750",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/ios/ios-launchimage-1536-2048.png",
|
||||
"sizes": "1536x2048",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/ios/ios-launchimage-2048-1536.png",
|
||||
"sizes": "2048x1536",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/ios/ios-launchimage-2208-1242.png",
|
||||
"sizes": "2208x1242",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/android/android-launchericon-48-48.png",
|
||||
"sizes": "48x48",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/android/android-launchericon-72-72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/android/android-launchericon-96-96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/android/android-launchericon-128-128.png",
|
||||
"sizes": "128x128",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/android/android-launchericon-144-144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/android/android-launchericon-192-192.png",
|
||||
"src": "/assets/icons/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icons/android/android-launchericon-512-512.png",
|
||||
"src": "/assets/icons/android-chrome-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/ios/ios-appicon-76-76.png",
|
||||
"sizes": "76x76",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/ios/ios-appicon-120-120.png",
|
||||
"sizes": "120x120",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/ios/ios-appicon-152-152.png",
|
||||
"sizes": "152x152",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/ios/ios-appicon-180-180.png",
|
||||
"sizes": "180x180",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/ios/ios-appicon-1024-1024.png",
|
||||
"sizes": "1024x1024",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/ios/ios-launchimage-640-960.png",
|
||||
"sizes": "640x960",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/ios/ios-launchimage-640-1136.png",
|
||||
"sizes": "640x1136",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/ios/ios-launchimage-750-1334.png",
|
||||
"sizes": "750x1334",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/ios/ios-launchimage-768-1024.png",
|
||||
"sizes": "768x1024",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/ios/ios-launchimage-1024-768.png",
|
||||
"sizes": "1024x768",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/ios/ios-launchimage-1242-2208.png",
|
||||
"sizes": "1242x2208",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/ios/ios-launchimage-1334-750.png",
|
||||
"sizes": "1334x750",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/ios/ios-launchimage-1536-2048.png",
|
||||
"sizes": "1536x2048",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/ios/ios-launchimage-2048-1536.png",
|
||||
"sizes": "2048x1536",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/ios/ios-launchimage-2208-1242.png",
|
||||
"sizes": "2208x1242",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/android/android-launchericon-48-48.png",
|
||||
"sizes": "48x48",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/android/android-launchericon-72-72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/android/android-launchericon-96-96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/android/android-launchericon-128-128.png",
|
||||
"sizes": "128x128",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/android/android-launchericon-144-144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/android/android-launchericon-192-192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/assets/icons/android/android-launchericon-512-512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
|
||||
452
package-lock.json
generated
19
package.json
@@ -8,23 +8,8 @@
|
||||
"test:isa": "ng test sales",
|
||||
"lint": "ng lint",
|
||||
"e2e": "ng e2e",
|
||||
"build": "npm-run-all -l -n build:lib:* build:sales:dev",
|
||||
"build-prod": "npm-run-all -l -n build:lib:* build:sales:prod",
|
||||
"build:sales:dev": "ng build --configuration=development",
|
||||
"build:sales:prod": "ng build --prod",
|
||||
"build:lib": "npm-run-all -l -n build:lib:*",
|
||||
"build:lib:native-container": "ng build native-container",
|
||||
"build:lib:sso": "ng build sso",
|
||||
"build:lib:ui": "ng build ui",
|
||||
"build:lib:isa-remission": "ng build @isa/remission",
|
||||
"build:lib:swagger-availability": "ng build @swagger/availability",
|
||||
"build:lib:swagger-cat": "ng build @swagger/cat",
|
||||
"build:lib:swagger-checkout": "ng build @swagger/checkout",
|
||||
"build:lib:swagger-crm": "ng build @swagger/crm",
|
||||
"build:lib:swagger-isa": "ng build @swagger/isa",
|
||||
"build:lib:swagger-oms": "ng build @swagger/oms",
|
||||
"build:lib:swagger-print": "ng build @swagger/print",
|
||||
"build:lib:swagger-eis": "ng build @swagger/eis",
|
||||
"build": "ng build --configuration=development",
|
||||
"build-prod": "ng build --prod",
|
||||
"gen:swagger": "npm-run-all -l -n gen:swagger:*",
|
||||
"gen:swagger:availability": "ng-swagger-gen --config ng-swagger-gen/availability.json",
|
||||
"gen:swagger:cat": "ng-swagger-gen --config ng-swagger-gen/cat.json",
|
||||
|
||||
@@ -39,58 +39,31 @@
|
||||
"apps/sales/src/app/core/services/index.ts"
|
||||
],
|
||||
"@swagger/availability": [
|
||||
"dist/swagger/availability"
|
||||
],
|
||||
"@swagger/availability/*": [
|
||||
"dist/swagger/availability/*"
|
||||
"apps/swagger/availability/src/public-api.ts"
|
||||
],
|
||||
"@swagger/checkout": [
|
||||
"dist/swagger/checkout"
|
||||
],
|
||||
"@swagger/checkout/*": [
|
||||
"dist/swagger/checkout/*"
|
||||
"apps/swagger/checkout/src/public-api.ts"
|
||||
],
|
||||
"@swagger/crm": [
|
||||
"dist/swagger/crm"
|
||||
],
|
||||
"@swagger/crm/*": [
|
||||
"dist/swagger/crm/*"
|
||||
"apps/swagger/crm/src/public-api.ts"
|
||||
],
|
||||
"@swagger/isa": [
|
||||
"dist/swagger/isa"
|
||||
],
|
||||
"@swagger/isa/*": [
|
||||
"dist/swagger/isa/*"
|
||||
"apps/swagger/isa/src/public-api.ts"
|
||||
],
|
||||
"@swagger/oms": [
|
||||
"dist/swagger/oms"
|
||||
],
|
||||
"@swagger/oms/*": [
|
||||
"dist/swagger/oms/*"
|
||||
"apps/swagger/oms/src/public-api.ts"
|
||||
],
|
||||
"@swagger/print": [
|
||||
"dist/swagger/print"
|
||||
],
|
||||
"@swagger/print/*": [
|
||||
"dist/swagger/print/*"
|
||||
"apps/swagger/print/src/public-api.ts"
|
||||
],
|
||||
"@swagger/cat-search": [
|
||||
"dist/swagger/cat-search"
|
||||
],
|
||||
"@swagger/cat-search/*": [
|
||||
"dist/swagger/cat-search/*"
|
||||
"apps/swagger/cat-search/src/public-api.ts"
|
||||
],
|
||||
"@swagger/cat": [
|
||||
"dist/swagger/cat"
|
||||
],
|
||||
"@swagger/cat/*": [
|
||||
"dist/swagger/cat/*"
|
||||
"apps/swagger/cat/src/public-api.ts"
|
||||
],
|
||||
"@swagger/eis": [
|
||||
"dist/swagger/eis"
|
||||
],
|
||||
"@swagger/eis/*": [
|
||||
"dist/swagger/eis/*"
|
||||
"apps/swagger/eis/src/public-api.ts"
|
||||
],
|
||||
"shared": [
|
||||
"libs/shared/src"
|
||||
@@ -99,10 +72,7 @@
|
||||
"libs/shared/src/*"
|
||||
],
|
||||
"native-container": [
|
||||
"dist/native-container"
|
||||
],
|
||||
"native-container/*": [
|
||||
"dist/native-container/*"
|
||||
"apps/native-container/src/public-api.ts"
|
||||
],
|
||||
"@shelf-store": [
|
||||
"apps/sales/src/app/store/customer/shelf"
|
||||
@@ -114,10 +84,13 @@
|
||||
"apps/sales/src/app/modules/ui/*"
|
||||
],
|
||||
"@isa/remission": [
|
||||
"dist/isa/remission"
|
||||
"apps/isa/remission/src/public-api.ts"
|
||||
],
|
||||
"@isa/remission/*": [
|
||||
"dist/isa/remission/*"
|
||||
"@domain/crm": [
|
||||
"apps/domain/crm/src/public-api.ts"
|
||||
],
|
||||
"@domain/checkout": [
|
||||
"apps/domain/checkout/src/public-api.ts"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||