Unverified Commit eb09b06b authored by Ruslan Konviser's avatar Ruslan Konviser Committed by GitHub
Browse files

Merge pull request #1062 from ever-co/feature/merchant-carriers-#1029

Feature/merchant carriers #1029
parents e22ef118 491a50c2
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -192,5 +192,31 @@
				</div>
			</div>
		</div>

		<!-- TODO add translate -->
		<div
			*ngIf="hasRestrictedCarriers.value && carriersIds?.value.length"
			class="form-group row"
		>
			<label class="col-sm-2 control-label">Delivery</label>

			<div class="col-sm-9">
				<nb-radio-group
					[(value)]="delivery"
					class="row m-0"
					name="size"
				>
					<nb-radio name="size" [value]="'all'">
						Use All Carriers
					</nb-radio>
					<nb-radio name="size" [value]="'onlyStore'">
						Use Only Store Carriers
					</nb-radio>
					<nb-radio name="size" [value]="'preferStore'">
						Prefer Store Carriers
					</nb-radio>
				</nb-radio-group>
			</div>
		</div>
	</fieldset>
</div>
+71 −2
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@ export type WarehouseBasicInfo = Pick<
	| 'username'
	| 'hasRestrictedCarriers'
	| 'carriersIds'
	| 'useOnlyRestrictedCarriersForDelivery'
	| 'preferRestrictedCarriersForDelivery'
>;

@Component({
@@ -44,6 +46,8 @@ export class BasicInfoFormComponent implements OnInit {

	carriersOptions: IMultiSelectOption[];

	private _delivery: 'all' | 'onlyStore' | 'preferStore' = 'all';

	static buildForm(formBuilder: FormBuilder): FormGroup {
		// would be used in the parent component and injected into this.form
		return formBuilder.group({
@@ -78,6 +82,8 @@ export class BasicInfoFormComponent implements OnInit {
			username: ['', [Validators.required]],

			hasRestrictedCarriers: [false, [Validators.required]],
			useOnlyRestrictedCarriersForDelivery: [false],
			preferRestrictedCarriersForDelivery: [false],
			carriersIds: [[]]
		});
	}
@@ -95,6 +101,8 @@ export class BasicInfoFormComponent implements OnInit {

			hasRestrictedCarriers: boolean;
			carriersIds: string[];
			useOnlyRestrictedCarriersForDelivery: boolean;
			preferRestrictedCarriersForDelivery: boolean;
		};

		if (!basicInfo.logo) {
@@ -112,20 +120,54 @@ export class BasicInfoFormComponent implements OnInit {
						hasRestrictedCarriers: basicInfo.hasRestrictedCarriers,
						carriersIds: basicInfo.carriersIds
				  }
				: {})
				: {}),
			...(basicInfo.hasRestrictedCarriers &&
			basicInfo.carriersIds &&
			basicInfo.carriersIds.length
				? {
						useOnlyRestrictedCarriersForDelivery:
							basicInfo.useOnlyRestrictedCarriersForDelivery,
						preferRestrictedCarriersForDelivery:
							basicInfo.preferRestrictedCarriersForDelivery
				  }
				: {
						useOnlyRestrictedCarriersForDelivery: false,
						preferRestrictedCarriersForDelivery: false
				  })
		};
	}

	setValue<T extends WarehouseBasicInfo>(basicInfo: T) {
		FormHelpers.deepMark(this.form, 'dirty');

		basicInfo = Object.assign(
			{
				useOnlyRestrictedCarriersForDelivery: false,
				preferRestrictedCarriersForDelivery: false
			},
			basicInfo
		);

		this.form.setValue(
			pick(basicInfo, [
				...Object.keys(this.getValue()),
				'hasRestrictedCarriers',
				'carriersIds'
				'carriersIds',
				'useOnlyRestrictedCarriersForDelivery',
				'preferRestrictedCarriersForDelivery'
			])
		);

		const onlyStore = basicInfo.useOnlyRestrictedCarriersForDelivery;
		const preferStore = basicInfo.preferRestrictedCarriersForDelivery;

		if (onlyStore) {
			this.delivery = 'onlyStore';
		} else if (preferStore) {
			this.delivery = 'preferStore';
		} else {
			this.delivery = 'all';
		}
	}

	getPassword(): string {
@@ -169,6 +211,33 @@ export class BasicInfoFormComponent implements OnInit {
		return this.form.get('carriersIds');
	}

	get useOnlyRestrictedCarriersForDelivery() {
		return this.form.get('useOnlyRestrictedCarriersForDelivery');
	}

	get preferRestrictedCarriersForDelivery() {
		return this.form.get('preferRestrictedCarriersForDelivery');
	}

	get delivery() {
		return this._delivery;
	}

	set delivery(value) {
		this._delivery = value;
		this.useOnlyRestrictedCarriersForDelivery.setValue(false);
		this.preferRestrictedCarriersForDelivery.setValue(false);

		switch (value) {
			case 'onlyStore':
				this.useOnlyRestrictedCarriersForDelivery.setValue(true);
				break;
			case 'preferStore':
				this.preferRestrictedCarriersForDelivery.setValue(true);
				break;
		}
	}

	get showLogoMeta() {
		return this.logo && this.logo.value !== '';
	}
+26 −0
Original line number Diff line number Diff line
@@ -154,5 +154,31 @@
				</div>
			</div>
		</div>

		<!-- TODO add translate -->
		<div
			*ngIf="hasRestrictedCarriers.value && carriersIds?.value.length"
			class="form-group row"
		>
			<label class="col-sm-2 control-label">Delivery</label>

			<div class="col-sm-9">
				<nb-radio-group
					[(value)]="delivery"
					class="row m-0"
					name="size"
				>
					<nb-radio name="size" [value]="'all'">
						Use All Carriers
					</nb-radio>
					<nb-radio name="size" [value]="'onlyStore'">
						Use Only Store Carriers
					</nb-radio>
					<nb-radio name="size" [value]="'preferStore'">
						Prefer Store Carriers
					</nb-radio>
				</nb-radio-group>
			</div>
		</div>
	</fieldset>
</div>
+71 −2
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@ export type WarehouseManageTabsDetails = Pick<
	| 'carriersIds'
	| 'isManufacturing'
	| 'isCarrierRequired'
	| 'useOnlyRestrictedCarriersForDelivery'
	| 'preferRestrictedCarriersForDelivery'
>;

@Component({
@@ -67,6 +69,8 @@ export class WarehouseManageTabsDetailsComponent
		)
	);

	private _delivery: 'all' | 'onlyStore' | 'preferStore' = 'all';

	constructor(
		private readonly _carrierRouter: CarrierRouter,
		private readonly _translateService: TranslateService
@@ -99,6 +103,33 @@ export class WarehouseManageTabsDetailsComponent
		return this.form.get('isCarrierRequired');
	}

	get useOnlyRestrictedCarriersForDelivery() {
		return this.form.get('useOnlyRestrictedCarriersForDelivery');
	}

	get preferRestrictedCarriersForDelivery() {
		return this.form.get('preferRestrictedCarriersForDelivery');
	}

	get delivery() {
		return this._delivery;
	}

	set delivery(value) {
		this._delivery = value;
		this.useOnlyRestrictedCarriersForDelivery.setValue(false);
		this.preferRestrictedCarriersForDelivery.setValue(false);

		switch (value) {
			case 'onlyStore':
				this.useOnlyRestrictedCarriersForDelivery.setValue(true);
				break;
			case 'preferStore':
				this.preferRestrictedCarriersForDelivery.setValue(true);
				break;
		}
	}

	static buildForm(formBuilder: FormBuilder): FormGroup {
		// would be used in the parent component and injected into this.form
		return formBuilder.group({
@@ -128,6 +159,8 @@ export class WarehouseManageTabsDetailsComponent
			isManufacturing: [true, [Validators.required]],
			isCarrierRequired: [true, [Validators.required]],
			hasRestrictedCarriers: [false, [Validators.required]],
			useOnlyRestrictedCarriersForDelivery: [false],
			preferRestrictedCarriersForDelivery: [false],
			carriersIds: [[]]
		});
	}
@@ -149,6 +182,8 @@ export class WarehouseManageTabsDetailsComponent
			isCarrierRequired: boolean;
			hasRestrictedCarriers: boolean;
			carriersIds: string[];
			useOnlyRestrictedCarriersForDelivery: boolean;
			preferRestrictedCarriersForDelivery: boolean;
		};

		return {
@@ -162,20 +197,54 @@ export class WarehouseManageTabsDetailsComponent
						hasRestrictedCarriers: basicInfo.hasRestrictedCarriers,
						carriersIds: basicInfo.carriersIds
				  }
				: {})
				: {}),
			...(basicInfo.hasRestrictedCarriers &&
			basicInfo.carriersIds &&
			basicInfo.carriersIds.length
				? {
						useOnlyRestrictedCarriersForDelivery:
							basicInfo.useOnlyRestrictedCarriersForDelivery,
						preferRestrictedCarriersForDelivery:
							basicInfo.preferRestrictedCarriersForDelivery
				  }
				: {
						useOnlyRestrictedCarriersForDelivery: false,
						preferRestrictedCarriersForDelivery: false
				  })
		};
	}

	setValue<T extends WarehouseManageTabsDetails>(basicInfo: T) {
		FormHelpers.deepMark(this.form, 'dirty');

		basicInfo = Object.assign(
			{
				useOnlyRestrictedCarriersForDelivery: false,
				preferRestrictedCarriersForDelivery: false
			},
			basicInfo
		);

		this.form.setValue(
			_.pick(basicInfo, [
				...Object.keys(this.getValue()),
				'hasRestrictedCarriers',
				'carriersIds'
				'carriersIds',
				'useOnlyRestrictedCarriersForDelivery',
				'preferRestrictedCarriersForDelivery'
			])
		);

		const onlyStore = basicInfo.useOnlyRestrictedCarriersForDelivery;
		const preferStore = basicInfo.preferRestrictedCarriersForDelivery;

		if (onlyStore) {
			this.delivery = 'onlyStore';
		} else if (preferStore) {
			this.delivery = 'preferStore';
		} else {
			this.delivery = 'all';
		}
	}

	deleteImg() {
+6 −0
Original line number Diff line number Diff line
@@ -44,6 +44,8 @@ type Warehouse {
	usedCarriersIds: [String!]
	carriers: [Carrier!] # Resolved, if hasRestrictedCarriers is false -> returns null
	orderBarcodeType: Int
	useOnlyRestrictedCarriersForDelivery: Boolean
	preferRestrictedCarriersForDelivery: Boolean
}

input WarehouseCreateInput {
@@ -76,6 +78,8 @@ input WarehouseCreateInput {
	hasRestrictedCarriers: Boolean
	carriersIds: [String!]
	usedCarriersIds: [String!]
	useOnlyRestrictedCarriersForDelivery: Boolean
	preferRestrictedCarriersForDelivery: Boolean
}

input WarehousesFindInput {
@@ -109,6 +113,8 @@ input WarehousesFindInput {
	hasRestrictedCarriers: Boolean
	carriersIds: [String!]
	usedCarriersIds: [String!]
	useOnlyRestrictedCarriersForDelivery: Boolean
	preferRestrictedCarriersForDelivery: Boolean
}

type Query {
Loading