- Update DB scripts to add Original Prefix and Suffix columns to Course Materials
- Update fmIDL to add Original Prefix and Suffix properties to the Course Material IDL Object
- Add Course Service function retrievePrefixSuffixList to retrieve all possible Callnumber Prefix and Suffixes
- Add UI Entries for CN Prefix and Suffix on the Associate Materials Page
Signed-off-by: Kyle Huckins <khuckins@catalyte.io>
<field reporter:label="Original Circ Modifier" name="original_circ_modifier" reporter:datatype="link" />
<field reporter:label="Original Shelving Location" name="original_location" reporter:datatype="link" />
<field reporter:label="Original Callnumber" name="original_callnumber" reporter:datatype="link" />
+ <field reporter:label="Original Callnumber Prefix" name="original_callnumber_prefix" reporter:datatype="link" />
+ <field reporter:label="Original Callnumber Suffix" name="original_callnumber_suffix" reporter:datatype="link" />
</fields>
<links>
<link field="course" reltype="has_a" key="id" map="" class="acmc" />
<link field="item" reltype="has_a" key="id" map="" class="acp" />
<link field="record" reltype="has_a" key="id" map="" class="bre" />
<link field="original_callnumber" reltype="has_a" key="id" map="" class="acn" />
+ <link field="original_callnumber_prefix" reltype="has_a" key="id" map="" class="acnp" />
+ <link field="original_callnumber_suffix" reltype="has_a" key="id" map="" class="acns" />
<link field="original_status" reltype="has_a" key="id" map="" class="ccs" />
<link field="original_circ_modifier" reltype="has_a" key="code" map="" class="ccm" />
<link field="original_location" reltype="has_a" key="id" map="" class="acpl" />
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">
+ <label for="associate-item-temp-call-number-prefix" i18n>Call Number Prefix</label>
+ </div>
+ </div>
+ <eg-combobox [smallFormControl]="true" [(ngModel)]="tempCallNumberPrefix" label="associate-item-temp-call-number-prefix"
+ [disabled]="currentCourse && currentCourse.is_archived() == 't'" class="flex-grow-1">
+ <eg-combobox-entry *ngFor="let prefix of prefixList"
+ [entryId]="prefix.id()" [entryLabel]="prefix.label()">
+ </eg-combobox-entry>
+ </eg-combobox>
+ <div class="input-group-append">
+ <div class="input-group-text">
+ <input type="checkbox" [(ngModel)]="isModifyingCallNumberPrefix"
+ [disabled]="currentCourse && currentCourse.is_archived() == 't'"
+ aria-label="Checkbox for setting a temporary Call Number Prefix" />
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="d-flex" [ngClass]="isDialog() ? 'col-md-6' : 'col-md-12 mt-3'">
+ <div class="input-group">
+ <div class="input-group-prepend">
+ <div class="input-group-text">
+ <label for="associate-item-temp-call-number-suffix" i18n>Call Number Suffix</label>
+ </div>
+ </div>
+ <eg-combobox [smallFormControl]="true" [(ngModel)]="tempCallNumberSuffix" label="associate-item-temp-call-number-suffix"
+ [disabled]="currentCourse && currentCourse.is_archived() == 't'" class="flex-grow-1">
+ <eg-combobox-entry *ngFor="let suffix of suffixList"
+ [entryId]="suffix.id()" [entryLabel]="suffix.label()">
+ </eg-combobox-entry>
+ </eg-combobox>
+ <div class="input-group-append">
+ <div class="input-group-text">
+ <input type="checkbox" [(ngModel)]="isModifyingCallNumberSuffix"
+ [disabled]="currentCourse && currentCourse.is_archived() == 't'"
+ aria-label="Checkbox for setting a temporary Call Number Suffix" />
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="d-flex" [ngClass]="isDialog() ? 'col-md-6' : 'col-md-12 mt-3'">
+ <div class="input-group">
+ <div class="input-group-prepend">
+ <div class="input-group-text">
<span i18n>Circulation Modifier</span>
</div>
</div>
@ViewChild('materialAddDifferentLibraryString', { static: true })
materialAddDifferentLibraryString: StringComponent;
materialsDataSource: GridDataSource;
+ @Input() prefixList: any[] = [];
+ @Input() suffixList: any[] = [];
@Input() barcodeInput: String;
@Input() relationshipInput: String;
@Input() tempCallNumber: String;
+ @Input() tempCallNumberPrefix: String;
+ @Input() tempCallNumberSuffix: String;
@Input() tempStatus: Number;
@Input() tempLocation: Number;
@Input() tempCircMod: String;
@Input() isModifyingStatus: Boolean;
@Input() isModifyingCircMod: Boolean;
@Input() isModifyingCallNumber: Boolean;
+ @Input() isModifyingCallNumberPrefix: Boolean;
+ @Input() isModifyingCallNumberSuffix: Boolean;
@Input() isModifyingLocation: Boolean;
bibId: number;
}
ngOnInit() {
+ let prefixSuffixList = this.course.retrievePrefixSuffixList();
+ console.log(prefixSuffixList);
+ this.prefixList = prefixSuffixList.prefixList;
+ this.suffixList = prefixSuffixList.suffixList;
this.associateBriefRecord = (newRecord: string) => {
return this.net.request(
'open-ils.courses',
barcode: barcode.trim(),
relationship: relationship,
isModifyingCallNumber: this.isModifyingCallNumber,
+ isModifyingCallNumberPrefix: this.isModifyingCallNumberPrefix,
+ isModifyingCallNumberSuffix: this.isModifyingCallNumberSuffix,
isModifyingCircMod: this.isModifyingCircMod,
isModifyingLocation: this.isModifyingLocation,
isModifyingStatus: this.isModifyingStatus,
item = associatedMaterial.item;
let new_cn = item.call_number().label();
if (this.tempCallNumber) { new_cn = this.tempCallNumber; }
+ if (this.tempCallNumberPrefix) {
+ item.call_number().prefix(this.tempCallNumberPrefix);
+ }
+ if (this.tempCallNumberSuffix) {
+ item.call_number().suffix(this.tempCallNumberSuffix);
+ }
this.course.updateItem(item, this.currentCourse.owning_lib(),
new_cn, args.isModifyingCallNumber
).then(resp => {
if (args.isModifyingCallNumber) {
material.original_callnumber(item.call_number());
}
+ if (args.isModifyingCallNumberPrefix) {
+ material.original_callnumber(item.call_number());
+ material.original_callnumber_prefix(item.call_number().prefix());
+ }
+ if (args.isModifyingCallNumberSuffix) {
+ material.original_callnumber(item.call_number());
+ material.original_callnumber_suffix(item.call_number().suffix);
+ }
const response = {
item: item,
material: this.pcrud.create(material).toPromise()
resetItemFields(material, course_lib) {
this.pcrud.retrieve('acp', material.item(),
- {flesh: 3, flesh_fields: {acp: ['call_number']}}).subscribe(copy => {
+ {flesh: 3, flesh_fields: {acp: ['call_number'], acn: ['prefix', 'suffix']}}).subscribe(copy => {
if (material.original_status()) {
copy.status(material.original_status());
}
if (material.original_location()) {
copy.location(material.original_location());
}
+ if (material.original_callnumber_prefix()) {
+ copy.call_number().prefix(material.original_callnumber_prefix);
+ }
+ if (material.original_callnumber_suffix()) {
+ copy.call_number().suffix(material.original_callnumber_suffix);
+ }
if (material.original_callnumber()) {
this.pcrud.retrieve('acn', material.original_callnumber()).subscribe(cn => {
- this.updateItem(copy, course_lib, cn.label(), true);
+ this.updateItem(copy, course_lib, cn, true);
});
} else {
- this.updateItem(copy, course_lib, copy.call_number().label(), false);
+ this.updateItem(copy, course_lib, copy.call_number(), false);
}
});
}
+ retrievePrefixSuffixList() {
+ const prefixList = [];
+ const suffixList = [];
+ this.pcrud.retrieveAll("acnp").subscribe(prefix => {
+ prefixList.push(prefix);
+ });
+ this.pcrud.retrieveAll("acns").subscribe(suffix => {
+ suffixList.push(suffix);
+ });
+ console.log(prefixList);
+ console.log(suffixList);
+ return {prefixList, suffixList};
+ }
+
updateItem(item: IdlObject, courseLib, callNumber, updatingVolume) {
return new Promise((resolve, reject) => {
this.pcrud.update(item).subscribe(() => {
if (updatingVolume) {
const cn = item.call_number();
+ console.log(cn);
const callNumberLibrary = this.org.canHaveVolumes(courseLib) ? courseLib.id() : cn.owning_lib();
return this.net.request(
'open-ils.cat', 'open-ils.cat.call_number.find_or_create',
resolve(item);
});
}, err => {
+ console.log(err);
reject(err);
}, () => {
resolve(item);
original_status INT REFERENCES config.copy_status,
original_circ_modifier TEXT, --REFERENCES config.circ_modifier
original_callnumber INT REFERENCES asset.call_number,
+ original_callnumber_prefix INT REFERENCES asset.call_number_prefix,
+ original_callnumber_suffix INT REFERENCES asset.call_number_suffix,
unique (course, item, record)
);
--- /dev/null
+BEGIN;\r
+\r
+SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);\r
+\r
+ALTER TABLE asset.course_module_course_materials\r
+ ADD COLUMN original_callnumber_prefix INT REFERENCES asset.call_number_prefix,\r
+ ADD COLUMN original_callnumber_suffix INT REFERENCES asset.call_number_suffix\r
+ \r
+COMMIT;
\ No newline at end of file