{"version":3,"file":"efaps-pos-library.mjs","sources":["../../../../projects/efaps/pos-library/src/lib/model/balance.ts","../../../../projects/efaps/pos-library/src/lib/model/contact.ts","../../../../projects/efaps/pos-library/src/lib/model/currency.ts","../../../../projects/efaps/pos-library/src/lib/model/discount.ts","../../../../projects/efaps/pos-library/src/lib/model/document.ts","../../../../projects/efaps/pos-library/src/lib/model/employee.ts","../../../../projects/efaps/pos-library/src/lib/model/health.ts","../../../../projects/efaps/pos-library/src/lib/model/payment.ts","../../../../projects/efaps/pos-library/src/lib/model/product.ts","../../../../projects/efaps/pos-library/src/lib/model/request.ts","../../../../projects/efaps/pos-library/src/lib/model/spot.ts","../../../../projects/efaps/pos-library/src/lib/model/tax.ts","../../../../projects/efaps/pos-library/src/lib/model/user.ts","../../../../projects/efaps/pos-library/src/lib/model/workspace.ts","../../../../projects/efaps/pos-library/src/lib/services/pos-config.token.ts","../../../../projects/efaps/pos-library/src/lib/services/config.service.ts","../../../../projects/efaps/pos-library/src/lib/services/auth.service.ts","../../../../projects/efaps/pos-library/src/lib/guards/auth.guard.ts","../../../../projects/efaps/pos-library/src/lib/services/collect.service.ts","../../../../projects/efaps/pos-library/src/lib/services/company.service.ts","../../../../projects/efaps/pos-library/src/lib/services/workspace.service.ts","../../../../projects/efaps/pos-library/src/lib/guards/workspace.guard.ts","../../../../projects/efaps/pos-library/src/lib/interceptors/company.interceptor.ts","../../../../projects/efaps/pos-library/src/lib/interceptors/jwt.interceptor.ts","../../../../projects/efaps/pos-library/src/lib/services/loader.service.ts","../../../../projects/efaps/pos-library/src/lib/interceptors/loader.interceptor.ts","../../../../projects/efaps/pos-library/src/lib/services/utils.service.ts","../../../../projects/efaps/pos-library/src/lib/pipes/pos-currency.pipe.ts","../../../../projects/efaps/pos-library/src/lib/services/image.service.ts","../../../../projects/efaps/pos-library/src/lib/pipes/secure.pipe.ts","../../../../projects/efaps/pos-library/src/lib/services/admin.service.ts","../../../../projects/efaps/pos-library/src/lib/services/balance.service.ts","../../../../projects/efaps/pos-library/src/lib/services/barcode-scanner.service.ts","../../../../projects/efaps/pos-library/src/lib/services/tax.service.ts","../../../../projects/efaps/pos-library/src/lib/services/calculator.service.ts","../../../../projects/efaps/pos-library/src/lib/services/contact.service.ts","../../../../projects/efaps/pos-library/src/lib/services/document.service.ts","../../../../projects/efaps/pos-library/src/lib/services/discount.service.ts","../../../../projects/efaps/pos-library/src/lib/services/employee.service.ts","../../../../projects/efaps/pos-library/src/lib/services/enquiry.service.ts","../../../../projects/efaps/pos-library/src/lib/services/health.service.ts","../../../../projects/efaps/pos-library/src/lib/services/inventory.service.ts","../../../../projects/efaps/pos-library/src/lib/services/rx-stomp.service.ts","../../../../projects/efaps/pos-library/src/lib/services/msg.service.ts","../../../../projects/efaps/pos-library/src/lib/services/product.service.ts","../../../../projects/efaps/pos-library/src/lib/services/part-list.service.ts","../../../../projects/efaps/pos-library/src/lib/services/pos.service.ts","../../../../projects/efaps/pos-library/src/lib/services/payment.service.ts","../../../../projects/efaps/pos-library/src/lib/services/pos-file.service.ts","../../../../projects/efaps/pos-library/src/lib/services/print.service.ts","../../../../projects/efaps/pos-library/src/lib/services/promotion.service.ts","../../../../projects/efaps/pos-library/src/lib/services/spot.service.ts","../../../../projects/efaps/pos-library/src/lib/services/stocktaking.service.ts","../../../../projects/efaps/pos-library/src/lib/services/user.service.ts","../../../../projects/efaps/pos-library/src/lib/pos-library.module.ts","../../../../projects/efaps/pos-library/src/efaps-pos-library.ts"],"sourcesContent":["import { Currency } from \"./currency\";\nimport { User } from \"./user\";\n\nexport interface Balance {\n  id: string;\n  oid: string;\n  number: string;\n  startAt: Date;\n  endAt: Date;\n  status: \"OPEN\" | \"CLOSED\";\n  user?: User;\n}\n\nexport interface CashEntry {\n  id?: string;\n  balanceOid: string;\n  entryType: CashEntryType;\n  amount: number;\n  currency: Currency;\n}\n\nexport enum CashEntryType {\n  OPENING = \"OPENING\",\n  WITHDRAWAL = \"WITHDRAWAL\",\n  DEPOSIT = \"DEPOSIT\",\n}\n","export interface Contact {\n  id: string | null;\n  oid: string | null;\n  name: string;\n  idType: IdentificationType;\n  idNumber: string;\n  email?: string;\n  forename?: string;\n  firstLastName?: string;\n  secondLastName?: string;\n}\n\nexport enum IdentificationType {\n  RUC = \"RUC\",\n  DNI = \"DNI\",\n  CE = \"CE\",\n  PASSPORT = \"PASSPORT\",\n  OTHER = \"OTHER\",\n}\n","export enum Currency {\n  PEN = \"PEN\",\n  USD = \"USD\",\n}\n","export interface Discount {\n  type: DiscountType;\n  value: number;\n  productOid: string;\n  label: string;\n}\n\nexport enum DiscountType {\n  PERCENT = \"PERCENT\",\n  AMOUNT = \"AMOUNT\",\n}\n","import { Contact } from \"./contact\";\nimport { Currency } from \"./currency\";\nimport { Discount } from \"./discount\";\nimport { EmployeeRelation } from \"./employee\";\nimport { Payment } from \"./payment\";\nimport { Product } from \"./product\";\nimport { Spot } from \"./spot\";\nimport { TaxEntry } from \"./tax\";\n\nexport interface Document {\n  type?: \"ORDER\" | \"RECEIPT\" | \"INVOICE\" | \"TICKET\" | \"CREDITNOTE\";\n  id: string | null;\n  oid: string | null;\n  number: string | null;\n  date?: string;\n  currency: Currency;\n  items: DocItem[];\n  status: DocStatus;\n  netTotal: number;\n  crossTotal: number;\n  exchangeRate: number;\n  payableAmount: number;\n  taxes: TaxEntry[];\n  contactOid?: string;\n  contact?: Contact;\n  workspaceOid?: string;\n  discount: Discount | null;\n  note?: string;\n  employeeRelations?: EmployeeRelation[];\n}\n\nexport interface Payable extends Document {\n  balanceOid: string;\n  payments: Payment[];\n}\n\nexport interface Order extends Document {\n  payableOid?: string;\n  spot?: Spot;\n  shoutout?: string;\n  orderOptionKey?: string;\n}\n/* tslint:disable-next-line */\nexport interface Receipt extends Payable {}\n/* tslint:disable-next-line */\nexport interface Invoice extends Payable {}\n/* tslint:disable-next-line */\nexport interface Ticket extends Payable {}\n/* tslint:disable-next-line */\nexport interface CreditNote extends Payable {\n  sourceDocOid: string;\n}\n\nexport interface DocItem {\n  index: number;\n  parentIdx?: number | null;\n  product: Product;\n  standIn?: Product;\n  quantity: number;\n  netPrice: number;\n  netUnitPrice: number;\n  crossPrice: number;\n  crossUnitPrice: number;\n  currency: Currency;\n  exchangeRate: number;\n  remark?: string;\n  taxes: TaxEntry[];\n  bomOid?: string;\n}\n\nexport enum DocumentType {\n  RECEIPT = \"RECEIPT\",\n  INVOICE = \"INVOICE\",\n  TICKET = \"TICKET\",\n  CREDITNOTE = \"CREDITNOTE\",\n}\n\nexport enum DocStatus {\n  OPEN = \"OPEN\",\n  CLOSED = \"CLOSED\",\n  CANCELED = \"CANCELED\",\n}\n\nexport interface DocumentHead {\n  type?: \"ORDER\" | \"RECEIPT\" | \"INVOICE\" | \"TICKET\" | \"CREDITNOTE\";\n  id: string;\n  number: string;\n  netTotal: number;\n  crossTotal: number;\n}\n\nexport interface PayableHead extends DocumentHead {\n  order?: DocumentHead;\n}\n\nexport interface OrderWrapper extends Order {\n  spotLabel: string;\n  multiple: boolean;\n}\n\nexport interface ValidateForCreditNote {\n  payableOid: string;\n}\n\nexport interface ValidateForCreditNoteResponse {\n  valid: boolean;\n}\n","export interface Employee {\n  oid: String;\n  firstName: String;\n  surName: String;\n}\n\nexport enum EmployeeRelationType {\n  SELLER = \"SELLER\",\n}\n\nexport interface EmployeeRelation {\n  employeeOid: String;\n  type: EmployeeRelationType;\n}\n","export interface Health {\n  status: HealthStatus;\n}\n\nexport enum HealthStatus {\n  GREEN = \"GREEN\",\n  YELLOW = \"YELLOW\",\n  RED = \"RED\",\n}\n","import { Currency } from \"./currency\";\n\nexport enum PaymentType {\n  CASH = \"CASH\",\n  FREE = \"FREE\",\n  CARD = \"CARD\",\n  CHANGE = \"CHANGE\",\n  ELECTRONIC = \"ELECTRONIC\",\n  LOYALTY_POINTS = \"LOYALTY_POINTS\",\n  REDEEM_CREDITNOTE = \"REDEEM_CREDITNOTE\",\n}\n\nexport interface Payment {\n  type: PaymentType;\n  amount: number;\n  currency: Currency;\n  exchangeRate: number;\n  cardTypeId?: number;\n  cardLabel?: string;\n  mappingKey?: string;\n  collectOrderId?: string;\n  redeemDocOid?: string;\n}\n","import { Currency } from \"./currency\";\nimport { Flagged } from \"./flags\";\nimport { Tax } from \"./tax\";\n\nexport interface Product {\n  oid: string;\n  sku: string;\n  type: ProductType;\n  description: string;\n  note: string;\n  imageOid: string;\n  netPrice: number;\n  crossPrice: number;\n  currency: Currency;\n  categories: Product2Category[];\n  taxes: Tax[];\n  relations: ProductRelation[];\n  indicationSets: IndicationSet[];\n  barcodes: Barcode[];\n  bomGroupConfigs: BOMGroupConfig[];\n  configurationBOMs: ConfigurationBOM[];\n  individual?: ProductIndividual;\n}\n\nexport interface BOMGroupConfig extends Flagged {\n  oid: string;\n  productOid: string;\n  name: string;\n  description: string;\n  weight: number;\n  // flagged enum value with BOMGroupConfigFlag\n  flags: number;\n  minQuantity?: number;\n  maxQuantity?: number;\n}\n\nexport interface ConfigurationBOM extends Flagged {\n  oid: string;\n  toProductOid: string;\n  bomGroupOid: string;\n  position: number;\n  quantity: number;\n  uoM: string;\n  // flagged enum value with ConfigurationBOMFlag\n  flags: number;\n  actions?: BOMAction[];\n}\n\nexport interface BOMAction {\n  type: BOMActionType;\n  netAmount?: number;\n  crossAmount?: number;\n}\n\nexport interface Product2Category {\n  categoryOid: string;\n  weight: number;\n}\n\nexport interface Barcode {\n  type: string;\n  code: string;\n}\n\nexport interface ProductRelation {\n  type: ProductRelationType;\n  label: string;\n  productOid: string;\n  quantity: number;\n}\n\nexport interface RelationEntry {\n  label: string;\n  product: Product;\n}\n\nexport interface IndicationSet {\n  oid: string;\n  name: string;\n  description?: string;\n  required: boolean;\n  multiple: boolean;\n  imageOid?: string;\n  indications: Indication[];\n}\n\nexport interface Indication {\n  oid: string;\n  value: string;\n  description?: string;\n  imageOid?: string;\n  weight?: number;\n  defaultSelected?: boolean;\n}\n\nexport enum ProductType {\n  STANDART = \"STANDART\",\n  SERVICE = \"SERVICE\",\n  TEXT = \"TEXT\",\n  OTHER = \"OTHER\",\n  PARTLIST = \"PARTLIST\",\n  BATCH = \"BATCH\",\n  INDIVIDUAL = \"INDIVIDUAL\",\n}\n\nexport enum ProductRelationType {\n  ALTERNATIVE = \"ALTERNATIVE\",\n  SALESBOM = \"SALESBOM\",\n  INDIVIDUAL = \"INDIVIDUAL\",\n  BATCH = \"BATCH\",\n  OTHER = \"OTHER\",\n}\n\nexport enum BOMGroupConfigFlag {\n  optional = 1 << 0,\n  onlyOne = 1 << 1,\n  chargeable = 1 << 2,\n}\n\nexport enum ProductIndividual {\n  NONE = \"NONE\",\n  INDIVIDUAL = \"INDIVIDUAL\",\n  BATCH = \"BATCH\",\n}\n\nexport enum BOMActionType {\n  PRICEADJUSTMENT = \"PRICEADJUSTMENT\",\n}\n\nexport enum ConfigurationBOMFlag {\n  default = 1 << 0,\n}\n","import { HttpContextToken } from \"@angular/common/http\";\n\nexport const IGNORED_STATUSES = new HttpContextToken<number[]>(() => []);\n","import { Order } from \"./document\";\n\nexport enum SpotConfig {\n  NONE = \"NONE\",\n  BASIC = \"BASIC\",\n  EXTENDED = \"EXTENDED\",\n}\n\nexport interface Spot {\n  id: string;\n  oid?: string;\n  label: string;\n  orders?: Order[];\n  position?: Position;\n}\n\nexport interface SpotsLayout {\n  floors: Floor[];\n}\n\nexport interface Floor {\n  oid: string;\n  name: string;\n  imageOid: string;\n  spots: Spot[];\n}\n\nexport interface Position {\n  x: number;\n  y: number;\n}\n","import { Currency } from \"./currency\";\nexport interface Tax {\n  oid: string;\n  key: string;\n  catKey: string;\n  type: TaxType;\n  name: string;\n  percent?: number;\n  amount?: number;\n}\n\nexport interface TaxEntry {\n  tax: Tax;\n  base: number;\n  amount: number;\n  currency: Currency;\n  exchangeRate: number;\n}\n\nexport enum TaxType {\n  ADVALOREM = \"ADVALOREM\",\n  PERUNIT = \"PERUNIT\",\n}\n","export interface User {\n  employeeOid?: string;\n  username: string;\n  firstName: string;\n  surName: string;\n}\n\nexport enum Permission {\n  ADMIN = \"ADMIN\",\n  COLLECT = \"COLLECT\",\n  ORDER = \"ORDER\",\n  CREDITNOTE = \"CREDITNOTE\",\n  REDEEM_CREDITNOTE = \"REDEEM_CREDITNOTE\",\n}\n","import { Discount } from \"./discount\";\nimport { DocumentType } from \"./document\";\nimport { Flagged } from \"./flags\";\nimport { Floor, SpotConfig } from \"./spot\";\n\nexport interface Workspace extends Flagged {\n  oid: string;\n  name: string;\n  posOid: string;\n  docTypes: DocumentType[];\n  spotConfig: SpotConfig;\n  spotCount: number;\n  warehouseOid: string;\n  printCmds: PrintCmd[];\n  posLayout: PosLayout;\n  discounts: Discount[];\n  cards: Card[];\n  gridSize: PosGridSize;\n  floors: Floor[];\n  categoryOids?: String[];\n  // flagged enum value with WorkspaceFlag\n  flags: number;\n}\n\nexport interface PrintCmd {\n  printerOid: string;\n  target:\n    | \"JOB\"\n    | \"PRELIMINARY\"\n    | \"TICKET\"\n    | \"COPY\"\n    | \"BALANCE\"\n    | \"BALANCE_DETAILED\"\n    | \"SALESREPORT\";\n  targetOid: string;\n}\n\nexport interface Card {\n  label: string;\n  cardTypeId: number;\n}\n\nexport enum PosLayout {\n  GRID = \"GRID\",\n  LIST = \"LIST\",\n  BOTH = \"BOTH\",\n}\n\nexport enum PosGridSize {\n  SMALL = \"SMALL\",\n  MEDIUM = \"MEDIUM\",\n  LARGE = \"LARGE\",\n}\n\nexport enum WorkspaceFlag {\n  gridShowPrice = 1 << 0,\n  orderRequiresContact = 1 << 1,\n  roundPayableAmount = 1 << 2,\n  assignSeller = 1 << 3,\n  jobOnPayment = 1 << 4,\n  remote = 1 << 5,\n  assignShoutOut = 1 << 6,\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { PosConfig } from \"../model\";\n\nexport const PosConfigToken = new InjectionToken<PosConfig>(\"PosConfigToken\");\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { Observable, Subscriber } from \"rxjs\";\n\nimport { Extension, PersistenceService, PosConfig } from \"../model\";\nimport { PosConfigToken } from \"./pos-config.token\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class ConfigService {\n  public baseUrl: string;\n  public defaultProdImg: string;\n  public persistence: PersistenceService;\n  private _socketUrl: string;\n  private systemConfig: Map<string, any> = new Map();\n  private extensions: Extension[];\n\n  constructor(\n    @Inject(PosConfigToken) config: PosConfig,\n    private http: HttpClient,\n  ) {\n    this.baseUrl = config.baseUrl;\n    this._socketUrl = config.socketUrl;\n    this.defaultProdImg = config.defaultProdImg;\n    this.persistence = config.persistence;\n  }\n\n  get socketUrl() {\n    //absolute path is given\n    if (this._socketUrl.startsWith(\"ws\")) {\n      return this._socketUrl;\n    } else {\n      return `ws:///${window.location.host}${this._socketUrl}`;\n    }\n  }\n\n  getSystemConfig<T>(key: string): Observable<T> {\n    if (this.systemConfig.has(key)) {\n      return new Observable((subscriber: Subscriber<T>) => {\n        subscriber.next(this.systemConfig.get(key));\n      });\n    }\n    return new Observable((subscriber: Subscriber<T>) => {\n      const requestUrl = `${this.baseUrl}/config/system/${key}`;\n      this.http.get<T>(requestUrl).subscribe((value) => {\n        this.systemConfig.set(key, value);\n        subscriber.next(value);\n      });\n    });\n  }\n\n  getExtensions(): Observable<Extension[]> {\n    if (this.extensions) {\n      return new Observable((subscriber: Subscriber<Extension[]>) => {\n        subscriber.next(this.extensions);\n      });\n    }\n    return new Observable((subscriber: Subscriber<Extension[]>) => {\n      const requestUrl = `${this.baseUrl}/config/extensions`;\n      this.http.get<Extension[]>(requestUrl).subscribe((value) => {\n        this.extensions = value;\n        subscriber.next(value);\n      });\n    });\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { jwtDecode } from \"jwt-decode\";\nimport { BehaviorSubject, Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\n\nimport { CurrentUser, Permission, Tokens } from \"../model\";\nimport { ConfigService } from \"./config.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [HttpClient, ConfigService],\n})\nexport class AuthService {\n  private eventSource = new BehaviorSubject<string>(\"\");\n  currentEvent = this.eventSource.asObservable();\n\n  private refreshing = false;\n\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n  ) {}\n\n  get currentUser(): CurrentUser {\n    return this.config.persistence.currentUser();\n  }\n\n  login(username: string, password: string): Observable<boolean> {\n    const href = `${this.config.baseUrl}/authenticate`;\n    return this.http\n      .post<Tokens>(href, { userName: username, password: password })\n      .pipe(\n        map((response) => {\n          if (response.accessToken) {\n            this.currentUser.username = username;\n            this.currentUser.tokens = response;\n            this.currentUser.save();\n            this.eventSource.next(\"login\");\n            this.refreshing = false;\n            return true;\n          } else {\n            return false;\n          }\n        }),\n      );\n  }\n\n  private refreshToken() {\n    this.refreshing = true;\n    const href = `${this.config.baseUrl}/refreshauth`;\n    this.http\n      .post<Tokens>(href, { refreshToken: this.getRefreshToken() })\n      .subscribe({\n        next: (response) => {\n          if (response.accessToken) {\n            this.currentUser.tokens = response;\n            this.currentUser.save();\n            this.eventSource.next(\"refresh\");\n          } else {\n            this.logout();\n          }\n          this.refreshing = false;\n        },\n      });\n  }\n\n  logout(): void {\n    this.currentUser.clean();\n    this.eventSource.next(\"logout\");\n  }\n\n  getAccessToken(): string {\n    return (\n      this.currentUser &&\n      this.currentUser.tokens &&\n      this.currentUser.tokens.accessToken\n    );\n  }\n\n  private getRefreshToken(): string {\n    return (\n      this.currentUser &&\n      this.currentUser.tokens &&\n      this.currentUser.tokens.refreshToken\n    );\n  }\n\n  getCurrentUsername(): string {\n    return this.currentUser && this.currentUser.username;\n  }\n\n  private getTokenExpirationDate(_token: string): Date {\n    const decoded = <any>jwtDecode(_token);\n\n    if (decoded.exp === undefined) {\n      return null;\n    }\n\n    const date = new Date(0);\n    date.setUTCSeconds(decoded.exp);\n    return date;\n  }\n\n  isTokenExpired(_token?: string): boolean {\n    if (!_token) {\n      _token = this.getAccessToken();\n    }\n    if (!_token) {\n      return true;\n    }\n\n    const date = this.getTokenExpirationDate(_token);\n    if (date === undefined) {\n      return false;\n    }\n\n    if (\n      !this.refreshing &&\n      date.valueOf() - new Date().valueOf() < 2 * 60 * 1000\n    ) {\n      this.refreshToken();\n    }\n    return !(date.valueOf() > new Date().valueOf());\n  }\n\n  hasPermission(...permissions: Permission[]) {\n    if (this.isTokenExpired()) {\n      return false;\n    }\n    const decoded = <any>jwtDecode(this.getAccessToken());\n    const assignedPermissions: string[] = decoded.permissions;\n\n    let hasIt = false;\n    assignedPermissions.every((permission) => {\n      if (permissions.find((x) => x === Permission[permission])) {\n        hasIt = true;\n        return false;\n      }\n      return true;\n    });\n    return hasIt;\n  }\n}\n","import { inject } from \"@angular/core\";\nimport {\n  ActivatedRouteSnapshot,\n  CanActivateFn,\n  Router,\n  RouterStateSnapshot,\n} from \"@angular/router\";\nimport { Permission } from \"../model\";\nimport { AuthService } from \"../services/auth.service\";\n\nexport const authGuard: CanActivateFn = () => {\n  const authService: AuthService = inject(AuthService);\n  if (authService.isTokenExpired()) {\n    return inject(Router).createUrlTree([\"/login\"]);\n  }\n  return true;\n};\n\nexport const permissionGuard: CanActivateFn = (\n  route: ActivatedRouteSnapshot,\n  _state: RouterStateSnapshot,\n) => {\n  const permissions = route.data.permissions as Array<Permission>;\n  const authService: AuthService = inject(AuthService);\n  return authService.hasPermission(...permissions);\n};\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Decimal } from \"decimal.js\";\nimport { Observable } from \"rxjs\";\n\nimport { CollectOrder, CollectStart, Collector, Currency } from \"../model\";\nimport { ConfigService } from \"./config.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [HttpClient, ConfigService],\n})\nexport class CollectService {\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n  ) {}\n\n  getCollectors() {\n    const requestUrl = `${this.config.baseUrl}/collectors`;\n    return this.http.get<Collector[]>(requestUrl);\n  }\n\n  startCollect(\n    key: string,\n    amount: number,\n    currency: Currency,\n    details: any,\n    orderId?: string,\n  ): Observable<CollectStart> {\n    const amountStr = new Decimal(amount)\n      .toDecimalPlaces(2, Decimal.ROUND_HALF_UP)\n      .toString();\n    const collectOrder = {\n      amount: amountStr,\n      currency: currency,\n      details: details,\n      orderId: orderId,\n    };\n    const url = `${this.config.baseUrl}/collectors/${key}/start`;\n    return this.http.post<CollectStart>(url, collectOrder);\n  }\n\n  getCollectOrder(collectOrderId: string): Observable<CollectOrder> {\n    const url = `${this.config.baseUrl}/collectors/orders/${collectOrderId}`;\n    return this.http.get<CollectOrder>(url);\n  }\n\n  cancelCollectOrder(collectOrderId: string): Observable<CollectOrder> {\n    const url = `${this.config.baseUrl}/collectors/orders/${collectOrderId}/cancel`;\n    return this.http.post<CollectOrder>(url, null);\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { BehaviorSubject, Observable } from \"rxjs\";\n\nimport { Company } from \"../model\";\nimport { ConfigService } from \"./config.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [HttpClient, ConfigService],\n})\nexport class CompanyService {\n  public _currentCompany: Company = null;\n\n  private currentSource = new BehaviorSubject<Company>(this.currentCompany);\n  company = this.currentSource.asObservable();\n\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n  ) {\n    if (config.persistence) {\n      this._currentCompany = <any>config.persistence.currentCompany();\n    }\n  }\n\n  get currentCompany() {\n    return this._currentCompany && this._currentCompany.key\n      ? this._currentCompany\n      : null;\n  }\n\n  public getCompanies(): Observable<Company[]> {\n    const href = this.config.baseUrl + \"/companies\";\n    const requestUrl = `${href}`;\n    return this.http.get<Company[]>(requestUrl);\n  }\n\n  setCurrentCompany(company: Company): any {\n    this._currentCompany.key = company.key;\n    this._currentCompany.label = company.label;\n    if (this.config.persistence) {\n      (<any>this._currentCompany).save();\n    }\n    this.currentSource.next(this._currentCompany);\n  }\n\n  hasCompany(): boolean {\n    return this.currentCompany != null;\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { BehaviorSubject, Observable } from \"rxjs\";\n\nimport { PersistenceObject } from \"../model\";\nimport { PosLayout, SpotConfig, Workspace } from \"../model/index\";\nimport { AuthService } from \"./auth.service\";\nimport { CollectService } from \"./collect.service\";\nimport { CompanyService } from \"./company.service\";\nimport { ConfigService } from \"./config.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [\n    HttpClient,\n    AuthService,\n    ConfigService,\n    CompanyService,\n    CollectService,\n  ],\n})\nexport class WorkspaceService {\n  SpotConfig = SpotConfig;\n  private current: Workspace = null;\n  private currentSource = new BehaviorSubject<Workspace>(this.current);\n  currentWorkspace = this.currentSource.asObservable();\n  workspaces: PersistenceObject;\n  private autoPayment = false;\n\n  constructor(\n    private http: HttpClient,\n    private auth: AuthService,\n    private config: ConfigService,\n    private companyService: CompanyService,\n    private collectService: CollectService,\n  ) {\n    if (config.persistence) {\n      this.workspaces = config.persistence.workspaces();\n    }\n  }\n\n  public getWorkspaces(): Observable<Workspace[]> {\n    const url = `${this.config.baseUrl}/workspaces`;\n    return this.http.get<Workspace[]>(url);\n  }\n\n  public getWorkspace(_oid: string): Observable<Workspace> {\n    const url = `${this.config.baseUrl}/workspaces/${_oid}`;\n    return this.http.get<Workspace>(url);\n  }\n\n  public hasCurrent(): Promise<boolean> {\n    if (this.currentSource.getValue()) {\n      return new Promise<boolean>((resolve) => resolve(true));\n    }\n    var workspaceOid;\n    if (this.companyService.hasCompany()) {\n      if (!this.workspaces[this.companyService.currentCompany.key]) {\n        this.workspaces[this.companyService.currentCompany.key] = {};\n      }\n      workspaceOid =\n        this.workspaces[this.companyService.currentCompany.key][\n          this.auth.getCurrentUsername()\n        ];\n    } else {\n      workspaceOid = this.workspaces[this.auth.getCurrentUsername()];\n    }\n\n    if (workspaceOid) {\n      return new Promise<boolean>((resolve) => {\n        this.getWorkspace(workspaceOid).subscribe({\n          next: (ws) => {\n            this.setCurrent(ws);\n            resolve(true);\n          },\n          error: (err) => {\n            resolve(false);\n          },\n        });\n      });\n    }\n    return new Promise<boolean>((resolve) => resolve(false));\n  }\n\n  public logout() {\n    this.currentSource.next(null);\n  }\n\n  public setCurrent(_workspace: Workspace) {\n    this.current = _workspace;\n    this.currentSource.next(_workspace);\n    this.storeCurrentWorkspace(_workspace.oid);\n    this.collectService.getCollectors().subscribe({\n      next: (collectors) =>\n        (this.autoPayment = collectors && collectors.length > 0),\n    });\n  }\n\n  private storeCurrentWorkspace(_oid: string) {\n    if (this.companyService.hasCompany()) {\n      if (\n        this.workspaces[this.companyService.currentCompany.key] == undefined\n      ) {\n        this.workspaces[this.companyService.currentCompany.key] = {};\n      }\n      this.workspaces[this.companyService.currentCompany.key][\n        this.auth.getCurrentUsername()\n      ] = _oid;\n    } else {\n      this.workspaces[this.auth.getCurrentUsername()] = _oid;\n    }\n    this.workspaces.save();\n  }\n\n  public getLanguage() {\n    return \"es\";\n  }\n\n  public showSpots() {\n    return (\n      this.current &&\n      this.current.spotConfig &&\n      this.current.spotConfig != SpotConfig.NONE\n    );\n  }\n\n  public getSpotSize(): number {\n    return this.current && this.current.spotCount;\n  }\n\n  public showInventory() {\n    return (\n      this.current &&\n      this.current.warehouseOid &&\n      this.current.warehouseOid.length > 0\n    );\n  }\n\n  public allowPayment() {\n    return (\n      this.current && this.current.docTypes && this.current.docTypes.length > 0\n    );\n  }\n\n  public hasAutoPayment() {\n    return this.autoPayment;\n  }\n\n  public getWarehouseOid(): string {\n    return this.showInventory() && this.current.warehouseOid;\n  }\n\n  public getPosLayout(): PosLayout {\n    return this.current && this.current.posLayout\n      ? this.current.posLayout\n      : PosLayout.GRID;\n  }\n}\n","import { inject } from \"@angular/core\";\nimport { CanActivateFn, Router, UrlTree } from \"@angular/router\";\n\nimport { WorkspaceService } from \"../services/workspace.service\";\n\nexport const workspaceGuard: CanActivateFn = () =>\n  new Promise<boolean | UrlTree>((resolve) => {\n    const workspaceService: WorkspaceService = inject(WorkspaceService);\n    const router: Router = inject(Router);\n    workspaceService.hasCurrent().then(\n      (onfullFilled) => {\n        if (onfullFilled) {\n          resolve(true);\n        } else {\n          resolve(router.createUrlTree([\"/workspaces\"]));\n        }\n      },\n      (onRejected) => {\n        resolve(router.createUrlTree([\"/workspaces\"]));\n      },\n    );\n  });\n","import {\n  HttpEvent,\n  HttpHandler,\n  HttpInterceptor,\n  HttpRequest,\n} from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\nimport { CompanyService } from \"../services/company.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [CompanyService],\n})\nexport class CompanyInterceptor implements HttpInterceptor {\n  private currentCompany;\n\n  constructor(companyService: CompanyService) {\n    companyService.company.subscribe({\n      next: (company) => (this.currentCompany = company),\n    });\n  }\n\n  intercept(\n    request: HttpRequest<any>,\n    next: HttpHandler,\n  ): Observable<HttpEvent<any>> {\n    if (this.currentCompany && this.currentCompany.key) {\n      request = request.clone({\n        setHeaders: {\n          \"X-CONTEXT-COMPANY\": this.currentCompany.key,\n        },\n      });\n    }\n    return next.handle(request);\n  }\n}\n","import {\n  HttpEvent,\n  HttpHandler,\n  HttpInterceptor,\n  HttpRequest,\n} from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\nimport { AuthService } from \"../services/auth.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [AuthService],\n})\nexport class JwtInterceptor implements HttpInterceptor {\n  constructor(private authService: AuthService) {}\n\n  intercept(\n    request: HttpRequest<any>,\n    next: HttpHandler,\n  ): Observable<HttpEvent<any>> {\n    if (!this.authService.isTokenExpired()) {\n      request = request.clone({\n        setHeaders: {\n          Authorization: `Bearer ${this.authService.currentUser.tokens.accessToken}`,\n        },\n      });\n    }\n    return next.handle(request);\n  }\n}\n","import { Injectable, signal } from \"@angular/core\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class LoaderService {\n  isLoading = signal(false);\n\n  constructor() {}\n\n  show() {\n    this.isLoading.set(true);\n  }\n\n  hide() {\n    this.isLoading.set(false);\n  }\n}\n","import {\n  HttpEvent,\n  HttpHandler,\n  HttpInterceptor,\n  HttpRequest,\n} from \"@angular/common/http\";\nimport { Injectable, untracked } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { finalize } from \"rxjs/operators\";\n\nimport { LoaderService } from \"../services/loader.service\";\n\n@Injectable()\nexport class LoaderInterceptor implements HttpInterceptor {\n  private requests: HttpRequest<any>[] = [];\n\n  constructor(private loaderService: LoaderService) {}\n\n  intercept(\n    request: HttpRequest<any>,\n    next: HttpHandler,\n  ): Observable<HttpEvent<any>> {\n    untracked(() => this.loaderService.show());\n    this.requests.push(request);\n\n    return next\n      .handle(request)\n      .pipe(finalize(() => this.removeRequest(request)));\n  }\n\n  private removeRequest(request: HttpRequest<any>) {\n    const i = this.requests.indexOf(request);\n    if (i >= 0) {\n      this.requests.splice(i, 1);\n    }\n    if (this.requests.length < 1) {\n      this.loaderService.hide();\n    }\n  }\n}\n","import { registerLocaleData } from \"@angular/common\";\nimport localeEsPE from \"@angular/common/locales/es-PE\";\nimport { Injectable } from \"@angular/core\";\nimport {\n  BOMGroupConfigFlag,\n  ConfigurationBOMFlag,\n  Flagged,\n  Item,\n  WorkspaceFlag,\n} from \"../model\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class UtilsService {\n  private numberParser: NumberParser;\n  constructor() {\n    registerLocaleData(localeEsPE);\n    this.numberParser = new NumberParser(\"es-PE\");\n  }\n\n  parse(numberStr: string): number {\n    return this.numberParser.parse(numberStr);\n  }\n\n  toString(number: number | undefined): string {\n    if (number || number === 0) {\n      return number.toLocaleString(\"es-PE\", {\n        minimumFractionDigits: 2,\n        maximumFractionDigits: 2,\n      });\n    }\n    return \"\";\n  }\n\n  getCurrencySymbol(isoCode: string) {\n    return Intl.NumberFormat(\"es-PE\", { style: \"currency\", currency: isoCode })\n      .formatToParts()\n      .find((part) => part.type === \"currency\").value;\n  }\n}\n\nclass NumberParser {\n  private _group: RegExp;\n  private _decimal: RegExp;\n  private _numeral: RegExp;\n  private _index: (d: any) => number;\n\n  constructor(locale) {\n    const parts = new Intl.NumberFormat(locale).formatToParts(12345.6);\n    const numerals = [\n      ...new Intl.NumberFormat(locale, { useGrouping: false }).format(\n        9876543210,\n      ),\n    ].reverse();\n    const index = new Map(numerals.map((d, i) => [d, i]));\n    this._group = new RegExp(\n      `[${parts.find((d) => d.type === \"group\").value}]`,\n      \"g\",\n    );\n    this._decimal = new RegExp(\n      `[${parts.find((d) => d.type === \"decimal\").value}]`,\n    );\n    this._numeral = new RegExp(`[${numerals.join(\"\")}]`, \"g\");\n    this._index = (d) => index.get(d);\n  }\n\n  parse(string): number {\n    return (string = string\n      .trim()\n      .replace(this._group, \"\")\n      .replace(this._decimal, \".\")\n      .replace(this._numeral, this._index))\n      ? +string\n      : NaN;\n  }\n}\n\nexport type Flags = WorkspaceFlag | BOMGroupConfigFlag | ConfigurationBOMFlag;\n\nexport function hasFlag(value: number | Flagged, flag: Flags) {\n  let flags: number;\n  if (\"number\" != typeof value) {\n    flags = (value as Flagged).flags;\n  } else {\n    flags = value;\n  }\n  return flag === (flags & flag);\n}\n\nexport function isChildItem(item: Item): boolean {\n  return item.parentIdx != null;\n}\n","import { Injectable, Pipe, PipeTransform } from \"@angular/core\";\n\nimport { Currency } from \"../model\";\nimport { UtilsService } from \"../services/utils.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [UtilsService],\n})\n@Pipe({\n  name: \"posCurrency\",\n  standalone: false,\n})\nexport class PosCurrencyPipe implements PipeTransform {\n  constructor(private utilsService: UtilsService) {}\n\n  transform(value: number | undefined, currency: Currency): any {\n    return (\n      this.utilsService.getCurrencySymbol(Currency[currency]) +\n      this.utilsService.toString(value)\n    );\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { map, Observable, Subscriber } from \"rxjs\";\n\nimport { ConfigService } from \"./config.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [HttpClient, ConfigService],\n})\nexport class ImageService {\n  private cache: Map<string, string> = new Map<string, string>();\n\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n  ) {}\n\n  public loadImage(oid: string): Observable<string> {\n    if (this.cache.has(oid)) {\n      return this.getFromCache(oid);\n    }\n    const url = `${this.config.baseUrl}/images/${oid}`;\n    return this.http.get(url, { responseType: \"blob\" }).pipe(\n      map((imageBlob) => {\n        const objectUrl = URL.createObjectURL(imageBlob);\n        this.cache.set(oid, objectUrl);\n        return objectUrl;\n      }),\n    );\n  }\n\n  private getFromCache(oid: string): Observable<string> {\n    return new Observable((subscriber) => {\n      subscriber.next(this.cache.get(oid));\n      subscriber.complete();\n    });\n  }\n\n  getBase64Image(oid: string): Observable<String> {\n    if (this.cache.has(oid)) {\n      return this.getFromCache(oid);\n    }\n    const url = `${this.config.baseUrl}/images/${oid}`;\n    return new Observable<String>((subscriber: Subscriber<String>) => {\n      this.http.get(url, { responseType: \"blob\" }).subscribe((blob) => {\n        var reader = new FileReader();\n        reader.readAsDataURL(blob);\n        reader.onloadend = () => {\n          const base64 = reader.result;\n          subscriber.next(base64.toString());\n        };\n      });\n    });\n  }\n\n  clear() {\n    this.cache.forEach((value: string, _key: string) => {\n      URL.revokeObjectURL(value);\n    });\n    this.cache.clear();\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Injectable,\n  OnDestroy,\n  Pipe,\n  PipeTransform,\n} from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport { BehaviorSubject, Observable, Subscription } from \"rxjs\";\n\nimport { ConfigService } from \"../services/config.service\";\nimport { ImageService } from \"../services/image.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [ChangeDetectorRef, DomSanitizer, ImageService, ConfigService],\n})\n@Pipe({\n  name: \"secure\",\n  pure: false,\n  standalone: false,\n})\nexport class SecurePipe implements PipeTransform, OnDestroy {\n  private static defaultImage = \"assets/defaultProdImg.svg\";\n  private latestValue: any = null;\n  private latestReturnedValue: any = null;\n  private subscription: Subscription = null;\n  private obj: Observable<any> = null;\n\n  private previousUrl: string;\n  private result: BehaviorSubject<any> = new BehaviorSubject(\n    SecurePipe.defaultImage,\n  );\n  private resultObs: Observable<any> = this.result.asObservable();\n  private internalSubscription: Subscription = null;\n\n  constructor(\n    private ref: ChangeDetectorRef,\n    private sanitizer: DomSanitizer,\n    private imageService: ImageService,\n    config: ConfigService,\n  ) {\n    if (config.defaultProdImg) {\n      SecurePipe.defaultImage = config.defaultProdImg;\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.subscription) {\n      this.dispose();\n    }\n  }\n\n  transform(_url: string): any {\n    if (_url === \"null\") {\n      return SecurePipe.defaultImage;\n    }\n    const obj = this.internalTransform(_url);\n    return this.asyncTrasnform(obj);\n  }\n\n  private internalTransform(_url: string): Observable<any> {\n    if (!_url) {\n      return this.resultObs;\n    }\n\n    if (this.previousUrl !== _url) {\n      this.previousUrl = _url;\n      this.internalSubscription = this.imageService.loadImage(_url).subscribe({\n        next: (m) => {\n          const sanitized = this.sanitizer.bypassSecurityTrustUrl(m);\n          this.result.next(sanitized);\n        },\n        error: (error) => {\n          console.log(error);\n        },\n      });\n    }\n    return this.resultObs;\n  }\n\n  private asyncTrasnform(_obj: Observable<any>): any {\n    if (!this.obj) {\n      if (_obj) {\n        this._subscribe(_obj);\n      }\n      this.latestReturnedValue = this.latestValue;\n      return this.latestValue;\n    }\n    if (_obj !== this.obj) {\n      this.dispose();\n      return this.asyncTrasnform(_obj);\n    }\n    if (this.latestValue === this.latestReturnedValue) {\n      return this.latestReturnedValue;\n    }\n    this.latestReturnedValue = this.latestValue;\n    // maybe clone?\n    return this.latestValue;\n  }\n\n  private _subscribe(_obj: Observable<any>) {\n    const _this = this;\n    this.obj = _obj;\n\n    this.subscription = _obj.subscribe({\n      next: function (value) {\n        return _this._updateLatestValue(_obj, value);\n      },\n      error: (e: any) => {\n        throw e;\n      },\n    });\n  }\n\n  private dispose() {\n    this.subscription.unsubscribe();\n    if (this.internalSubscription) {\n      this.internalSubscription.unsubscribe();\n      this.internalSubscription = null;\n    }\n    this.latestValue = null;\n    this.latestReturnedValue = null;\n    this.subscription = null;\n    this.obj = null;\n  }\n\n  private _updateLatestValue(_async: any, _value: Object) {\n    if (_async === this.obj) {\n      this.latestValue = _value;\n      this.ref.markForCheck();\n    }\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable, ReplaySubject } from \"rxjs\";\n\nimport { Versions } from \"../model/versions\";\nimport { ConfigService } from \"./config.service\";\nimport { ImageService } from \"./image.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [HttpClient, ConfigService],\n})\nexport class AdminService {\n  private reloadSubject = new ReplaySubject<void>();\n  reloadEvent = this.reloadSubject.asObservable();\n\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n    private imageService: ImageService,\n  ) {}\n\n  reload(): Observable<any> {\n    this.imageService.clear();\n    const url = `${this.config.baseUrl}/admin/sync`;\n    this.reloadSubject.next();\n    return this.http.get(url);\n  }\n\n  version(): Observable<Versions> {\n    const url = `${this.config.baseUrl}/admin/versions`;\n    return this.http.get<Versions>(url);\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { BehaviorSubject, Observable } from \"rxjs\";\nimport { tap } from \"rxjs/operators\";\n\nimport { Balance, BalanceSummary, CashEntry } from \"../model\";\nimport { AuthService } from \"./auth.service\";\nimport { ConfigService } from \"./config.service\";\nimport { WorkspaceService } from \"./workspace.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [HttpClient, AuthService, ConfigService, WorkspaceService],\n})\nexport class BalanceService {\n  private balance: Balance = null;\n  private balanceSource = new BehaviorSubject<Balance>(this.balance);\n  currentBalance = this.balanceSource.asObservable();\n\n  constructor(\n    private http: HttpClient,\n    private authService: AuthService,\n    private config: ConfigService,\n    private workspaceService: WorkspaceService,\n  ) {\n    this.setup();\n    this.load();\n  }\n\n  private setup() {\n    this.authService.currentEvent.subscribe((event) => {\n      switch (event) {\n        case \"login\":\n          this.load();\n          break;\n        case \"logout\":\n          this.balanceSource.next(null);\n      }\n    });\n    this.workspaceService.currentWorkspace.subscribe((ws) => {\n      if (ws) {\n        this.load();\n      } else {\n        this.balanceSource.next(null);\n      }\n    });\n  }\n\n  private load() {\n    this.getCurrent(false).subscribe({\n      next: (balance) => {\n        this.balanceSource.next(balance);\n      },\n      error: (error) => {\n        if (error.status !== 404) {\n          console.log(error);\n        }\n      },\n    });\n  }\n\n  private getCurrent(_createNew?: boolean): Observable<Balance> {\n    const requestUrl = `${this.config.baseUrl}/balance/current`;\n    return this.http.get<Balance>(requestUrl, {\n      params: { createNew: _createNew.toString() },\n    });\n  }\n\n  init() {\n    this.getCurrent(true).subscribe((_balance) =>\n      this.balanceSource.next(_balance),\n    );\n  }\n\n  addCashEntries(\n    balance: Balance,\n    cashEntries: CashEntry[],\n  ): Observable<Object> {\n    const requestUrl = `${this.config.baseUrl}/balance/${balance.id}/cash`;\n    return this.http.post(requestUrl, cashEntries);\n  }\n\n  close(balance: Balance): Observable<Balance> {\n    const url = `${this.config.baseUrl}/balance/${balance.id}`;\n    return this.http\n      .put<Balance>(url, balance)\n      .pipe(tap(() => this.balanceSource.next(null)));\n  }\n\n  getSummary(balance: Balance): Observable<BalanceSummary> {\n    const url = `${this.config.baseUrl}/balance/${balance.id}/summary`;\n    return this.http.get<BalanceSummary>(url);\n  }\n\n  getBalances(): Observable<Balance[]> {\n    const url = `${this.config.baseUrl}/balance`;\n    return this.http.get<Balance[]>(url);\n  }\n\n  /*\n   * this should only  be used to veriy against the sever not to init\n   */\n  hasCurrent(): Observable<Boolean> {\n    return new Observable((observer) => {\n      this.getCurrent(false).subscribe({\n        next: (_balance) => {\n          observer.next(true);\n          observer.complete();\n        },\n        error: (error) => {\n          if (error.status == 404) {\n            observer.next(false);\n            observer.complete();\n          } else {\n            observer.error(error);\n          }\n        },\n      });\n    });\n  }\n}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\n\nimport { BarcodeOptions } from \"../model\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class BarcodeScannerService {\n  private currentSource = new BehaviorSubject<string>(null);\n  barcode = this.currentSource.asObservable();\n\n  private prevTime: number = 0;\n  private code: string = \"\";\n\n  private options = {\n    latency: 50,\n    minLength: 3,\n    endKeys: [\"Enter\"],\n    validKey: \"^(\\\\w|\\\\d)$\",\n  };\n  private validKeyRegex = new RegExp(this.options.validKey);\n\n  constructor() {}\n\n  handleKeyboardEvent(event: KeyboardEvent): void {\n    const { key, timeStamp } = event;\n    const timeDiff = timeStamp - this.prevTime;\n    this.prevTime = timeStamp;\n    if (!(event.altKey || event.ctrlKey)) {\n      const isValid = this.validKeyRegex.test(key);\n      const isEndKey = this.options.endKeys.includes(key);\n      if (timeDiff > this.options.latency) {\n        // Maybe a normal key press or start of barcode\n        if (!isEndKey && isValid) {\n          this.code = key;\n        } else this.code = \"\";\n      } else if (isValid) {\n        // Still scanning\n        this.code += key;\n      } else {\n        if (isEndKey) {\n          // End of barcode\n          if (this.code.length >= this.options.minLength) {\n            this.currentSource.next(this.code);\n          }\n        }\n        // Invalid character, reset\n        this.code = \"\";\n      }\n    }\n  }\n\n  setOptions(options: BarcodeOptions) {\n    this.options = Object.assign(this.options, options);\n    this.validKeyRegex = new RegExp(this.options.validKey);\n  }\n\n  getDefaultOptions(): BarcodeOptions {\n    return {\n      latency: 50,\n      minLength: 3,\n      endKeys: [\"Enter\"],\n      validKey: \"^(\\\\w|\\\\d)$\",\n    };\n  }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Decimal } from \"decimal.js\";\n\nimport { Document, Tax, TaxEntry, TaxType } from \"../model\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class TaxService {\n  constructor() {}\n\n  calcTax(net: Decimal, quantity: Decimal, ...taxes: Tax[]): Decimal {\n    let amount = new Decimal(0);\n    taxes.forEach((tax) => {\n      switch (tax.type) {\n        case TaxType.PERUNIT:\n          amount = amount.add(quantity.mul(new Decimal(tax.amount)));\n          break;\n        case TaxType.ADVALOREM:\n          amount = amount.add(\n            net.mul(new Decimal(tax.percent).div(new Decimal(100))),\n          );\n          break;\n      }\n    });\n    return amount;\n  }\n\n  calcTax4Document(document: Document): TaxEntry[] {\n    const taxEntries: TaxEntry[] = [];\n    const taxValues: Map<string, TaxEntry> = new Map();\n    document.items.forEach((_item) => {\n      _item.taxes.forEach((_taxEntry) => {\n        if (!taxValues.has(_taxEntry.tax.name)) {\n          taxValues.set(_taxEntry.tax.name, {\n            tax: _taxEntry.tax,\n            base: 0,\n            amount: 0,\n            currency: document.currency,\n            exchangeRate: document.exchangeRate,\n          });\n        }\n        const ce = taxValues.get(_taxEntry.tax.name);\n        ce.amount = new Decimal(ce.amount)\n          .plus(new Decimal(_taxEntry.amount))\n          .toDecimalPlaces(2, Decimal.ROUND_HALF_UP)\n          .toNumber();\n        ce.base = new Decimal(ce.base)\n          .plus(new Decimal(_taxEntry.base))\n          .toDecimalPlaces(2, Decimal.ROUND_HALF_UP)\n          .toNumber();\n        taxValues.set(_taxEntry.tax.name, ce);\n      });\n    });\n    taxValues.forEach((_value, _key) => {\n      taxEntries.push(_value);\n    });\n    return taxEntries;\n  }\n\n  calcTaxTotal4Document(document: Document, ...types: TaxType[]): Decimal {\n    let total = new Decimal(0);\n    document.taxes.forEach((entry) => {\n      if (types.length == 0 || types.includes(entry.tax.type)) {\n        total = total.plus(new Decimal(entry.amount));\n      }\n    });\n    return total.toDecimalPlaces(2, Decimal.ROUND_HALF_UP);\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport Decimal from \"decimal.js\";\nimport { Observable, map } from \"rxjs\";\nimport {\n  CalculatorConfig,\n  CalculatorPosResponse,\n  CalculatorRequest,\n  CalculatorResponse,\n  Document,\n  Item,\n  Product,\n  Tax,\n  TaxEntry,\n  TaxType,\n  WorkspaceFlag,\n} from \"../model\";\nimport { ConfigService } from \"./config.service\";\nimport { TaxService } from \"./tax.service\";\nimport { hasFlag, isChildItem } from \"./utils.service\";\nimport { WorkspaceService } from \"./workspace.service\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class CalculatorService {\n  calculatorConfig: CalculatorConfig = {\n    netPriceScale: 4,\n    itemTaxScale: 4,\n    crossPriceScale: 4,\n  };\n  private workspaceFlags: number = 0;\n  private workspaceOid: string;\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n    private workspaceService: WorkspaceService,\n    private taxService: TaxService,\n  ) {\n    this.workspaceService.currentWorkspace.subscribe((data) => {\n      if (data) {\n        this.workspaceFlags = data.flags;\n        this.workspaceOid = data.oid;\n      }\n    });\n    this.config\n      .getSystemConfig<any>(\"org.efaps.pos.Calculator.Config\")\n      .subscribe({\n        next: (value: any) => {\n          if (value) {\n            if (value.NetPriceScale) {\n              this.calculatorConfig.netPriceScale = parseInt(\n                value.NetPriceScale,\n              );\n            }\n            if (value.ItemTaxScale) {\n              this.calculatorConfig.itemTaxScale = parseInt(value.ItemTaxScale);\n            }\n            if (value.CrossPriceScale) {\n              this.calculatorConfig.crossPriceScale = parseInt(\n                value.CrossPriceScale,\n              );\n            }\n          }\n        },\n        error: (err) => {\n          console.log(err);\n        },\n      });\n  }\n\n  public calculate(calcReq: CalculatorRequest): Observable<CalculatorResponse> {\n    const url = `${this.config.baseUrl}/workspaces/${this.workspaceOid}/calculator`;\n    return this.http.post<CalculatorResponse>(url, calcReq);\n  }\n\n  public calculateDoc(\n    document: Document,\n    sourceDocIdent?: string,\n  ): Observable<Document> {\n    const positions = document.items.map((item) => {\n      return {\n        index: item.index,\n        parentIdx: item.parentIdx,\n        quantity: item.quantity,\n        productOid: item.product.oid,\n        bomOid: item.bomOid,\n      };\n    });\n    return this.calculate({\n      positions: positions,\n      sourceDocIdent: sourceDocIdent,\n    }).pipe(\n      map((response) => {\n        document.crossTotal = response.crossTotal;\n        document.netTotal = response.netTotal;\n        document.payableAmount = response.payableAmount;\n        document.taxes = response.taxes;\n        document.items.forEach((item, index) => {\n          // if we have a set index\n          let pos: CalculatorPosResponse;\n          if (item.index) {\n            pos = response.positions.find((pos) => {\n              return pos.index == item.index;\n            });\n          } else if (response.positions.length > index) {\n            pos = response.positions[index];\n          }\n          if (pos) {\n            item.crossPrice = pos.crossPrice;\n            item.crossUnitPrice = pos.crossUnitPrice;\n            item.netPrice = pos.netPrice;\n            item.netUnitPrice = pos.netUnitPrice;\n            item.quantity = pos.quantity;\n            item.taxes = pos.taxes;\n          }\n        });\n        return document;\n      }),\n    );\n  }\n\n  calculateItemNetPrice(item: Item): Decimal {\n    return isChildItem(item)\n      ? new Decimal(0)\n      : this.evalNetPrice(\n          new Decimal(item.quantity),\n          new Decimal(item.product.netPrice),\n        );\n  }\n\n  calculateItemCrossPrice(item: Item): Decimal {\n    return isChildItem(item)\n      ? new Decimal(0)\n      : this.calculateCrossPrice(item.quantity, item.product);\n  }\n\n  calculateCrossPrice(qty: Decimal | number, product: Product): Decimal {\n    let quantity: Decimal;\n    if (qty instanceof Decimal) {\n      quantity = qty;\n    } else {\n      quantity = new Decimal(qty);\n    }\n    const netUnitPrice = new Decimal(product.netPrice);\n    const netPrice = this.evalNetPrice(quantity, netUnitPrice);\n    const taxAmount = this.roundTaxAmount(\n      this.taxService.calcTax(netPrice, quantity, ...product.taxes),\n    );\n    return this.evalCrossPrice(netPrice, taxAmount);\n  }\n\n  evalNetPrice(quantity: Decimal, netUnitPrice: Decimal): Decimal {\n    return this.roundNetPrice(netUnitPrice.mul(quantity));\n  }\n\n  roundNetPrice(netPrice: Decimal) {\n    return netPrice.toDecimalPlaces(\n      this.calculatorConfig.netPriceScale,\n      Decimal.ROUND_HALF_UP,\n    );\n  }\n\n  roundTaxAmount(taxAmount: Decimal) {\n    return taxAmount.toDecimalPlaces(\n      this.calculatorConfig.itemTaxScale,\n      Decimal.ROUND_HALF_UP,\n    );\n  }\n\n  evalCrossPrice(netPrice: Decimal, taxAmount: Decimal) {\n    return this.roundCrossPrice(netPrice.add(taxAmount));\n  }\n\n  roundCrossPrice(crossPrice: Decimal) {\n    return crossPrice.toDecimalPlaces(\n      this.calculatorConfig.crossPriceScale,\n      Decimal.ROUND_HALF_UP,\n    );\n  }\n\n  calculateTotals(items: Item[]) {\n    let netTotal = new Decimal(0);\n    let crossTotal = new Decimal(0);\n    let payableAmount = new Decimal(0);\n    const taxes = new Map<string, Decimal>();\n\n    items.forEach((item) => {\n      const quantity = new Decimal(item.quantity);\n      const netUnitPrice = isChildItem(item)\n        ? new Decimal(0)\n        : new Decimal(item.product.netPrice);\n      const netPrice = isChildItem(item)\n        ? new Decimal(0)\n        : this.evalNetPrice(quantity, netUnitPrice);\n\n      let itemTaxAmount = new Decimal(0);\n      if (!isChildItem(item)) {\n        item.product.taxes.forEach((tax: Tax) => {\n          const taxAmount = this.taxService.calcTax(\n            netPrice,\n            new Decimal(item.quantity),\n            tax,\n          );\n          if (!taxes.has(tax.name)) {\n            taxes.set(tax.name, new Decimal(0));\n          }\n          taxes.set(tax.name, taxes.get(tax.name).plus(taxAmount));\n          itemTaxAmount = itemTaxAmount.plus(taxAmount);\n        });\n      }\n      const taxAmount = this.roundTaxAmount(itemTaxAmount);\n      const crossPrice = isChildItem(item)\n        ? new Decimal(0)\n        : this.evalCrossPrice(netPrice, taxAmount);\n\n      netTotal = netTotal.plus(netPrice);\n      crossTotal = crossTotal.plus(crossPrice);\n    });\n\n    netTotal = netTotal.toDecimalPlaces(2, Decimal.ROUND_HALF_UP);\n    taxes.forEach((val, key) => {\n      taxes.set(key, val.toDecimalPlaces(2, Decimal.ROUND_HALF_UP));\n    });\n\n    crossTotal = crossTotal.toDecimalPlaces(2, Decimal.ROUND_HALF_UP);\n\n    if (hasFlag(this.workspaceFlags, WorkspaceFlag.roundPayableAmount)) {\n      payableAmount = crossTotal.toDecimalPlaces(1, Decimal.ROUND_FLOOR);\n    } else {\n      payableAmount = crossTotal;\n    }\n    return {\n      netTotal,\n      taxes,\n      crossTotal,\n      payableAmount,\n    };\n  }\n\n  getItemTaxEntries(item: Item): TaxEntry[] {\n    if (isChildItem(item)) {\n      return [];\n    }\n    const entries: TaxEntry[] = [];\n    item.product.taxes.forEach((tax: Tax) => {\n      const quantity = new Decimal(item.quantity);\n      const netUnitPrice = new Decimal(item.product.netPrice);\n      const netPrice = this.evalNetPrice(quantity, netUnitPrice);\n      const taxAmount = this.taxService.calcTax(\n        netPrice,\n        new Decimal(item.quantity),\n        tax,\n      );\n      const base =\n        TaxType.PERUNIT === tax.type ? item.quantity : netPrice.toNumber();\n      entries.push({\n        tax: tax,\n        base: base,\n        amount: taxAmount.toNumber(),\n        currency: item.currency,\n        exchangeRate: item.exchangeRate,\n      });\n    });\n    return entries;\n  }\n\n  getTotalTaxEntries(items: Item[]): TaxEntry[] {\n    const taxValues: Map<string, TaxEntry> = new Map();\n    items.forEach((item) => {\n      this.getItemTaxEntries(item).forEach((taxEntry) => {\n        if (!taxValues.has(taxEntry.tax.name)) {\n          taxValues.set(taxEntry.tax.name, {\n            tax: taxEntry.tax,\n            base: 0,\n            amount: 0,\n            currency: item.currency,\n            exchangeRate: item.exchangeRate,\n          });\n        }\n        const currentEntry = taxValues.get(taxEntry.tax.name);\n        currentEntry.amount = new Decimal(currentEntry.amount)\n          .plus(new Decimal(taxEntry.amount))\n          .toNumber();\n        currentEntry.base = new Decimal(currentEntry.base)\n          .plus(new Decimal(taxEntry.base))\n          .toNumber();\n        taxValues.set(taxEntry.tax.name, currentEntry);\n      });\n    });\n    const taxEntries: TaxEntry[] = [];\n    taxValues.forEach((entry, _key) => {\n      entry.amount = new Decimal(entry.amount)\n        .toDecimalPlaces(2, Decimal.ROUND_HALF_UP)\n        .toNumber();\n      entry.base = new Decimal(entry.base)\n        .toDecimalPlaces(2, Decimal.ROUND_HALF_UP)\n        .toNumber();\n      taxEntries.push(entry);\n    });\n    return taxEntries;\n  }\n}\n","import { HttpClient, HttpContext } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\nimport { Contact, Page, PageRequest } from \"../model\";\nimport { ConfigService } from \"./config.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [HttpClient, ConfigService],\n})\nexport class ContactService {\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n  ) {}\n\n  public getContacts(pageable?: PageRequest): Observable<Page<Contact>> {\n    const requestUrl = `${this.config.baseUrl}/contacts`;\n    const params: any = pageable || {};\n    return this.http.get<Page<Contact>>(requestUrl, { params });\n  }\n\n  public getContact(id: string): Observable<Contact> {\n    const requestUrl = `${this.config.baseUrl}/contacts/${id}`;\n    return this.http.get<Contact>(requestUrl);\n  }\n\n  public searchContacts(\n    term: string,\n    _nameSearch: boolean,\n  ): Observable<Contact[]> {\n    const requestUrl = `${this.config.baseUrl}/contacts`;\n    return this.http.get<Contact[]>(requestUrl, {\n      params: { term, nameSearch: _nameSearch.toString() },\n    });\n  }\n\n  public createContact(\n    contact: Contact,\n    options?: {\n      context?: HttpContext;\n    },\n  ): Observable<Contact> {\n    const requestUrl = `${this.config.baseUrl}/contacts`;\n    return this.http.post<Contact>(requestUrl, contact, options);\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable, merge } from \"rxjs\";\nimport { catchError, map } from \"rxjs/operators\";\n\nimport {\n  Balance,\n  CreditNote,\n  Invoice,\n  Order,\n  Payable,\n  PayableHead,\n  Receipt,\n  Ticket,\n  ValidateForCreditNote,\n  ValidateForCreditNoteResponse,\n} from \"../model\";\nimport { ConfigService } from \"./config.service\";\nimport { WorkspaceService } from \"./workspace.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [HttpClient, ConfigService, WorkspaceService],\n})\nexport class DocumentService {\n  private workspaceOid: string;\n\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n    workspaceService: WorkspaceService,\n  ) {\n    workspaceService.currentWorkspace.subscribe((ws) => {\n      if (ws) {\n        this.workspaceOid = ws.oid;\n      }\n    });\n  }\n\n  public createReceipt(orderId: string, receipt: Receipt): Observable<Receipt> {\n    const url = `${this.config.baseUrl}/receipts`;\n    return this.http.post<Receipt>(url, receipt, {\n      params: { orderId: orderId, workspaceOid: this.workspaceOid },\n    });\n  }\n\n  public createInvoice(orderId: string, invoice: Invoice): Observable<Invoice> {\n    const url = `${this.config.baseUrl}/invoices`;\n    return this.http.post<Invoice>(url, invoice, {\n      params: { orderId: orderId, workspaceOid: this.workspaceOid },\n    });\n  }\n\n  public createTicket(orderId: string, ticket: Ticket): Observable<Ticket> {\n    const url = `${this.config.baseUrl}/tickets`;\n    return this.http.post<Ticket>(url, ticket, {\n      params: { orderId: orderId, workspaceOid: this.workspaceOid },\n    });\n  }\n\n  public createCreditNote(creditNote: CreditNote): Observable<CreditNote> {\n    const url = `${this.config.baseUrl}/creditnotes`;\n    return this.http.post<CreditNote>(url, creditNote, {\n      params: { workspaceOid: this.workspaceOid },\n    });\n  }\n\n  public createOrder(order: Order): Observable<Order> {\n    const url = `${this.config.baseUrl}/orders`;\n    return this.http.post<Order>(url, order, {\n      params: { workspaceOid: this.workspaceOid },\n    });\n  }\n\n  public updateOrder(order: Order): Observable<Order> {\n    const url = `${this.config.baseUrl}/orders/${order.id}`;\n    return this.http.put<Order>(url, order, {\n      params: { workspaceOid: this.workspaceOid },\n    });\n  }\n\n  public deleteOrder(_order: Order): Observable<void> {\n    const url = `${this.config.baseUrl}/orders/${_order.id}`;\n    return this.http.delete<void>(url);\n  }\n\n  public getOrders(): Observable<Order[]> {\n    const url = `${this.config.baseUrl}/orders`;\n    return this.http.get<Order[]>(url);\n  }\n\n  public getOpenOrders(): Observable<Order[]> {\n    const url = `${this.config.baseUrl}/orders`;\n    return this.http.get<Order[]>(url, { params: { status: \"OPEN\" } });\n  }\n\n  public findOrders(_term: string): Observable<Order[]> {\n    const url = `${this.config.baseUrl}/orders`;\n    return this.http.get<Order[]>(url, { params: { term: _term } });\n  }\n\n  public getOrders4Spots(): Observable<Order[]> {\n    const url = `${this.config.baseUrl}/orders`;\n    return this.http.get<Order[]>(url, { params: { spot: \"true\" } });\n  }\n\n  public getReceipt(id: string): Observable<Receipt> {\n    const url = `${this.config.baseUrl}/receipts/${id}`;\n    return this.http.get<Receipt>(url).pipe(\n      map((doc) => {\n        doc.type = \"RECEIPT\";\n        return doc;\n      }),\n    );\n  }\n\n  public getInvoice(id: string): Observable<Invoice> {\n    const url = `${this.config.baseUrl}/invoices/${id}`;\n    return this.http.get<Invoice>(url).pipe(\n      map((doc) => {\n        doc.type = \"INVOICE\";\n        return doc;\n      }),\n    );\n  }\n\n  public getTicket(id: string): Observable<Ticket> {\n    const url = `${this.config.baseUrl}/tickets/${id}`;\n    return this.http.get<Ticket>(url).pipe(\n      map((doc) => {\n        doc.type = \"TICKET\";\n        return doc;\n      }),\n    );\n  }\n\n  public getCreditNote(id: string): Observable<CreditNote> {\n    const url = `${this.config.baseUrl}/creditnotes/${id}`;\n    return this.http.get<CreditNote>(url).pipe(\n      map((doc) => {\n        doc.type = \"CREDITNOTE\";\n        return doc;\n      }),\n    );\n  }\n\n  public getCreditNotes4SourceDocument(\n    sourceDocOid: string,\n  ): Observable<CreditNote[]> {\n    const url = `${this.config.baseUrl}/creditnotes`;\n    return this.http\n      .get<CreditNote[]>(url, { params: { sourceDocOid: sourceDocOid } })\n      .pipe(\n        map((docs) => {\n          docs.map((doc) => {\n            doc.type = \"CREDITNOTE\";\n          });\n          return [...docs];\n        }),\n      );\n  }\n\n  public getPayableByIdent(ident: string): Observable<Payable> {\n    return merge(\n      this.getReceiptByIdent(ident, false),\n      this.getInvoiceByIdent(ident, false),\n    );\n  }\n\n  public getReceiptByIdent(\n    ident: string,\n    remote: boolean,\n  ): Observable<Receipt> {\n    const url = `${this.config.baseUrl}/receipts`;\n    return this.http.get<Receipt>(url, { params: { ident, remote } }).pipe(\n      map((doc) => {\n        doc.type = \"RECEIPT\";\n        return doc;\n      }),\n      catchError((error) => {\n        return new Observable<Receipt>((observer) => {\n          observer.error;\n        });\n      }),\n    );\n  }\n\n  public getInvoiceByIdent(\n    ident: string,\n    remote: boolean,\n  ): Observable<Invoice> {\n    const url = `${this.config.baseUrl}/invoices`;\n    return this.http.get<Invoice>(url, { params: { ident, remote } }).pipe(\n      map((doc) => {\n        doc.type = \"INVOICE\";\n        return doc;\n      }),\n      catchError((error) => {\n        return new Observable<Invoice>((observer) => {\n          observer.error;\n        });\n      }),\n    );\n  }\n\n  public getTicketByIdent(\n    ident: string,\n    remote: boolean,\n  ): Observable<Ticket> {\n    const url = `${this.config.baseUrl}/tickets`;\n    return this.http.get<Ticket>(url, { params: { ident, remote } }).pipe(\n      map((doc) => {\n        doc.type = \"TICKET\";\n        return doc;\n      }),\n      catchError((error) => {\n        return new Observable<Ticket>((observer) => {\n          observer.error;\n        });\n      }),\n    );\n  }\n\n  public getCreditNoteByIdent(\n    ident: string,\n    remote: boolean,\n  ): Observable<CreditNote> {\n    const url = `${this.config.baseUrl}/creditnotes`;\n    return this.http.get<CreditNote>(url, { params: { ident, remote } }).pipe(\n      map((doc) => {\n        doc.type = \"CREDITNOTE\";\n        return doc;\n      }),\n      catchError((error) => {\n        return new Observable<CreditNote>((observer) => {\n          observer.error;\n        });\n      }),\n    );\n  }\n\n\n  public getDocuments4Balance(_balance: Balance): Observable<PayableHead[]> {\n    return merge(\n      this.getReceipts4Balance(_balance),\n      this.getInvoices4Balance(_balance),\n      this.getTickets4Balance(_balance),\n      this.getCreditNotes4Balance(_balance),\n    );\n  }\n\n  private getReceipts4Balance(_balance: Balance): Observable<PayableHead[]> {\n    const url = `${this.config.baseUrl}/receipts`;\n    const balanceOid = _balance.oid ? _balance.oid : _balance.id;\n    return this.http.get<Receipt[]>(url, { params: { balanceOid } }).pipe(\n      map((docs) => {\n        docs.map((doc) => {\n          doc.type = \"RECEIPT\";\n        });\n        return [...docs];\n      }),\n    );\n  }\n\n  private getInvoices4Balance(_balance: Balance): Observable<PayableHead[]> {\n    const url = `${this.config.baseUrl}/invoices`;\n    const balanceOid = _balance.oid ? _balance.oid : _balance.id;\n    return this.http.get<Invoice[]>(url, { params: { balanceOid } }).pipe(\n      map((docs) => {\n        docs.map((doc) => {\n          doc.type = \"INVOICE\";\n        });\n        return [...docs];\n      }),\n    );\n  }\n\n  private getTickets4Balance(_balance: Balance): Observable<PayableHead[]> {\n    const url = `${this.config.baseUrl}/tickets`;\n    const balanceOid = _balance.oid ? _balance.oid : _balance.id;\n    return this.http.get<Ticket[]>(url, { params: { balanceOid } }).pipe(\n      map((docs) => {\n        docs.map((doc) => {\n          doc.type = \"TICKET\";\n        });\n        return [...docs];\n      }),\n    );\n  }\n\n  private getCreditNotes4Balance(_balance: Balance): Observable<PayableHead[]> {\n    const url = `${this.config.baseUrl}/creditnotes`;\n    const balanceOid = _balance.oid ? _balance.oid : _balance.id;\n    return this.http.get<CreditNote[]>(url, { params: { balanceOid } }).pipe(\n      map((docs) => {\n        docs.map((doc) => {\n          doc.type = \"CREDITNOTE\";\n        });\n        return [...docs];\n      }),\n    );\n  }\n\n  public findPayables(_term: string): Observable<PayableHead[]> {\n    return merge(\n      this.findReceipts(_term),\n      this.findInvoices(_term),\n      this.findTickets(_term),\n      this.findCreditNotes(_term),\n    );\n  }\n\n  private findReceipts(_term: string): Observable<PayableHead[]> {\n    const url = `${this.config.baseUrl}/receipts`;\n    return this.http.get<PayableHead[]>(url, { params: { term: _term } }).pipe(\n      map((docs) => {\n        docs.map((doc) => {\n          doc.type = \"RECEIPT\";\n        });\n        return [...docs];\n      }),\n    );\n  }\n\n  private findInvoices(_term: string): Observable<PayableHead[]> {\n    const url = `${this.config.baseUrl}/invoices`;\n    return this.http.get<PayableHead[]>(url, { params: { term: _term } }).pipe(\n      map((docs) => {\n        docs.map((doc) => {\n          doc.type = \"INVOICE\";\n        });\n        return [...docs];\n      }),\n    );\n  }\n\n  private findTickets(_term: string): Observable<PayableHead[]> {\n    const url = `${this.config.baseUrl}/tickets`;\n    return this.http.get<PayableHead[]>(url, { params: { term: _term } }).pipe(\n      map((docs) => {\n        docs.map((doc) => {\n          doc.type = \"TICKET\";\n        });\n        return [...docs];\n      }),\n    );\n  }\n\n  private findCreditNotes(_term: string): Observable<PayableHead[]> {\n    const url = `${this.config.baseUrl}/creditnotes`;\n    return this.http.get<PayableHead[]>(url, { params: { term: _term } }).pipe(\n      map((docs) => {\n        docs.map((doc) => {\n          doc.type = \"CREDITNOTE\";\n        });\n        return [...docs];\n      }),\n    );\n  }\n\n  retrieveReceipts(number: string): Observable<Receipt[]> {\n    const url = `${this.config.baseUrl}/receipts`;\n    return this.http.get<Receipt[]>(url, { params: { number: number } }).pipe(\n      map((docs) => {\n        docs.map((doc) => {\n          doc.type = \"RECEIPT\";\n        });\n        return [...docs];\n      }),\n    );\n  }\n\n  retrieveInvoices(number: string): Observable<Invoice[]> {\n    const url = `${this.config.baseUrl}/invoices`;\n    return this.http.get<Invoice[]>(url, { params: { number: number } }).pipe(\n      map((docs) => {\n        docs.map((doc) => {\n          doc.type = \"INVOICE\";\n        });\n        return [...docs];\n      }),\n    );\n  }\n\n  retrieveCreditNotes(number: string): Observable<CreditNote[]> {\n    const url = `${this.config.baseUrl}/creditnotes`;\n    return this.http.get<CreditNote[]>(url, { params: { number: number } }).pipe(\n      map((docs) => {\n        docs.map((doc) => {\n          doc.type = \"CREDITNOTE\";\n        });\n        return [...docs];\n      }),\n    );\n  }\n\n   retrieveTickets(number: string): Observable<Ticket[]> {\n    const url = `${this.config.baseUrl}/tickets`;\n    return this.http.get<Ticket[]>(url, { params: { number: number } }).pipe(\n      map((docs) => {\n        docs.map((doc) => {\n          doc.type = \"TICKET\";\n        });\n        return [...docs];\n      }),\n    );\n  }\n\n  validateForCreditNote(\n    dto: ValidateForCreditNote,\n  ): Observable<ValidateForCreditNoteResponse> {\n    const url = `${this.config.baseUrl}/creditnotes/validate`;\n    return this.http.post<ValidateForCreditNoteResponse>(url, dto);\n  }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Decimal } from \"decimal.js\";\n\nimport {\n  Currency,\n  Discount,\n  DiscountType,\n  DocItem,\n  Document,\n  Order,\n  Product,\n  ProductType,\n  TaxType,\n  WorkspaceFlag,\n} from \"../model\";\nimport { DocumentService } from \"./document.service\";\nimport { TaxService } from \"./tax.service\";\nimport { hasFlag } from \"./utils.service\";\nimport { WorkspaceService } from \"./workspace.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [TaxService, DocumentService],\n})\nexport class DiscountService {\n  private workspaceFlags: number = 0;\n\n  constructor(\n    private taxService: TaxService,\n    private documentService: DocumentService,\n    workspaceService: WorkspaceService,\n  ) {\n    workspaceService.currentWorkspace.subscribe((data) => {\n      if (data) {\n        this.workspaceFlags = data.flags;\n      }\n    });\n  }\n\n  applyDiscount(order: Order, discount: Discount | null): Document {\n    if (order.discount) {\n      order.items = order.items.filter(\n        (item) => item.product.oid != order.discount.productOid,\n      );\n      order.discount = null;\n      this.recalculate(order);\n    }\n\n    if (discount && discount.type === DiscountType.PERCENT) {\n      order = this.applyPercent(order, discount);\n    }\n    if (discount && discount.type === DiscountType.AMOUNT) {\n      order = this.applyAmount(order, discount);\n    }\n    this.documentService.updateOrder(this.recalculate(order)).subscribe();\n    return order;\n  }\n\n  private applyAmount(order: Order, discount: Discount): Order {\n    const targetCross = new Decimal(order.crossTotal).minus(\n      new Decimal(discount.value),\n    );\n    const percentage = new Decimal(100).mul(\n      new Decimal(1).minus(\n        targetCross.dividedBy(new Decimal(order.crossTotal)),\n      ),\n    );\n\n    order = this.applyPercent(order, {\n      ...discount,\n      value: percentage.toNumber(),\n    });\n    order.discount = discount;\n    return order;\n  }\n\n  private applyPercent(order: Order, discount: Discount): Order {\n    const factor = new Decimal(discount.value).div(new Decimal(100));\n\n    const net = new Decimal(order.netTotal)\n      .mul(factor)\n      .toDecimalPlaces(2, Decimal.ROUND_HALF_UP)\n      .neg();\n    const adValoremTaxtotal = this.taxService.calcTaxTotal4Document(\n      order,\n      TaxType.ADVALOREM,\n    );\n    const cross = new Decimal(order.netTotal)\n      .add(adValoremTaxtotal)\n      .mul(factor)\n      .toDecimalPlaces(2, Decimal.ROUND_HALF_UP)\n      .neg();\n    const item: DocItem = {\n      index: order.items.length + 1,\n      product: this.getDiscountProduct(discount, order.currency),\n      quantity: 1,\n      netPrice: net.toNumber(),\n      netUnitPrice: net.toNumber(),\n      crossPrice: cross.toNumber(),\n      crossUnitPrice: cross.toNumber(),\n      currency: order.currency,\n      exchangeRate: order.exchangeRate,\n      taxes: [],\n    };\n\n    order.taxes.forEach((taxEntry) => {\n      switch (taxEntry.tax.type) {\n        case TaxType.PERUNIT:\n          break;\n        case TaxType.ADVALOREM:\n          const base = new Decimal(taxEntry.base)\n            .mul(factor)\n            .neg()\n            .toDecimalPlaces(2, Decimal.ROUND_HALF_UP);\n          const amount = new Decimal(taxEntry.amount)\n            .mul(factor)\n            .neg()\n            .toDecimalPlaces(2, Decimal.ROUND_HALF_UP);\n          item.taxes.push({\n            tax: taxEntry.tax,\n            base: base.toNumber(),\n            amount: amount.toNumber(),\n            currency: taxEntry.currency,\n            exchangeRate: taxEntry.exchangeRate,\n          });\n          break;\n      }\n    });\n    order.items.push(item);\n    order.discount = discount;\n    return order;\n  }\n\n  private recalculate(order: Order): Order {\n    let crossTotal = new Decimal(0);\n    let netTotal = new Decimal(0);\n    order.items.forEach((item) => {\n      crossTotal = crossTotal.plus(new Decimal(item.crossPrice));\n      netTotal = netTotal.plus(new Decimal(item.netPrice));\n    });\n    order.taxes = this.taxService.calcTax4Document(order);\n    order.crossTotal = netTotal\n      .plus(this.taxService.calcTaxTotal4Document(order))\n      .toDecimalPlaces(2, Decimal.ROUND_HALF_UP)\n      .toNumber();\n    order.netTotal = netTotal\n      .toDecimalPlaces(2, Decimal.ROUND_HALF_UP)\n      .toNumber();\n\n    if (hasFlag(this.workspaceFlags, WorkspaceFlag.roundPayableAmount)) {\n      let roundedCross = new Decimal(order.crossTotal).toDecimalPlaces(\n        1,\n        Decimal.ROUND_FLOOR,\n      );\n      order.payableAmount = roundedCross.toNumber();\n    } else {\n      order.payableAmount = order.crossTotal;\n    }\n    return order;\n  }\n\n  private getDiscountProduct(discount: Discount, currency: Currency): Product {\n    return {\n      oid: discount.productOid,\n      sku: \"\",\n      type: ProductType.TEXT,\n      description: \"Descuento\",\n      note: null,\n      imageOid: \"\",\n      netPrice: 0,\n      crossPrice: 0,\n      currency: currency,\n      categories: [],\n      taxes: [],\n      relations: [],\n      indicationSets: [],\n      barcodes: [],\n      bomGroupConfigs: [],\n      configurationBOMs: [],\n    };\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { Employee } from \"../model\";\nimport { ConfigService } from \"./config.service\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class EmployeeService {\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n  ) {}\n\n  public getEmployees(): Observable<Employee[]> {\n    const requestUrl = `${this.config.baseUrl}/employees`;\n    return this.http.get<Employee[]>(requestUrl);\n  }\n\n  public getEmployee(oid: String): Observable<Employee> {\n    const requestUrl = `${this.config.baseUrl}/employees/${oid}`;\n    return this.http.get<Employee>(requestUrl);\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { DNI, Page, PageRequest, RUC } from \"../model\";\nimport { ConfigService } from \"./config.service\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class EnquiryService {\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n  ) {}\n\n  public findRUCs(term: string, pageable?: PageRequest): Observable<Page<RUC>> {\n    const url = `${this.config.baseUrl}/enquiry/ruc`;\n    const params: any = pageable || {};\n    params.term = term;\n    return this.http.get<Page<RUC>>(url, { params });\n  }\n\n  public getDNI(number: string): Observable<DNI> {\n    const url = `${this.config.baseUrl}/enquiry/dni/${number}`;\n    return this.http.get<DNI>(url);\n  }\n\n  public getRUC(number: string): Observable<RUC> {\n    const url = `${this.config.baseUrl}/enquiry/ruc/${number}`;\n    return this.http.get<RUC>(url);\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { BehaviorSubject, Observable } from \"rxjs\";\nimport { Health } from \"../model\";\nimport { ConfigService } from \"./config.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [HttpClient, ConfigService],\n})\nexport class HealthService {\n  private healthSource = new BehaviorSubject<Health>(null);\n  currentHealth = this.healthSource.asObservable();\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n  ) {}\n\n  public getHealth(): Observable<Health> {\n    const requestUrl = `${this.config.baseUrl}/health`;\n    return this.http.get<Health>(requestUrl);\n  }\n\n  public monitor(interval: number): Observable<Health> {\n    setInterval(() => {\n      this.getHealth().subscribe({\n        next: (health) => this.healthSource.next(health),\n        error: (err) => this.healthSource.next(null),\n      });\n    }, interval * 1000);\n    return this.currentHealth;\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\nimport {\n  InventoryEntry,\n  ValidateStock,\n  ValidateStockResponse,\n  Warehouse,\n} from \"../model/index\";\nimport { ConfigService } from \"./config.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [HttpClient, ConfigService],\n})\nexport class InventoryService {\n  constructor(\n    private config: ConfigService,\n    private http: HttpClient,\n  ) {}\n\n  public getWarehouses(): Observable<Warehouse[]> {\n    const requestUrl = `${this.config.baseUrl}/inventory/warehouses`;\n    return this.http.get<Warehouse[]>(requestUrl);\n  }\n\n  public getInventory(warehouseOid: string): Observable<InventoryEntry[]> {\n    const requestUrl = `${this.config.baseUrl}/inventory`;\n    return this.http.get<InventoryEntry[]>(requestUrl, {\n      params: { warehouseOid },\n    });\n  }\n\n  public getInventory4Product(\n    productOid: string,\n  ): Observable<InventoryEntry[]> {\n    const requestUrl = `${this.config.baseUrl}/inventory`;\n    return this.http.get<InventoryEntry[]>(requestUrl, {\n      params: { productOid },\n    });\n  }\n\n  public validateStock(dto: ValidateStock): Observable<ValidateStockResponse> {\n    const requestUrl = `${this.config.baseUrl}/inventory/validate`;\n    return this.http.post<ValidateStockResponse>(requestUrl, dto);\n  }\n}\n","import { Injectable } from \"@angular/core\";\nimport { RxStomp } from \"@stomp/rx-stomp\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class RxStompService extends RxStomp {\n  constructor() {\n    super();\n  }\n}\n","import { Injectable } from \"@angular/core\";\nimport { RxStompConfig } from \"@stomp/rx-stomp\";\n\nimport { AuthService } from \"./auth.service\";\nimport { ConfigService } from \"./config.service\";\nimport { RxStompService } from \"./rx-stomp.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [ConfigService, RxStompService, AuthService],\n})\nexport class MsgService {\n  ordersEdited = new Set();\n\n  constructor(\n    private configService: ConfigService,\n    private stompService: RxStompService,\n    private authService: AuthService,\n  ) {\n    this.authService.currentEvent.subscribe(() => {\n      this.disconnect();\n    });\n  }\n\n  init() {\n    if (!this.stompService.connected()) {\n      const stompConfig: RxStompConfig = {\n        brokerURL: this.configService.socketUrl,\n        connectHeaders: {\n          login: this.authService.currentUser.tokens.accessToken,\n        },\n        heartbeatIncoming: 0,\n        heartbeatOutgoing: 20000,\n        reconnectDelay: 5000,\n        debug: (str) => {\n          console.log(new Date(), str);\n        },\n      };\n      this.stompService.configure(stompConfig);\n      this.stompService.activate();\n      this.stompService.watch(\"/app/orders/start.edit\").subscribe((message) => {\n        JSON.parse(message.body).forEach((orderId) => {\n          this.ordersEdited.add(orderId);\n        });\n      });\n      this.stompService\n        .watch(\"/topic/orders/start.edit\")\n        .subscribe((message) => {\n          this.ordersEdited.add(message.body);\n        });\n      this.stompService\n        .watch(\"/topic/orders/finish.edit\")\n        .subscribe((message) => {\n          this.ordersEdited.delete(message.body);\n        });\n    }\n  }\n\n  disconnect() {\n    if (this.stompService.connected()) {\n      this.stompService.deactivate();\n    }\n  }\n\n  publishStartEditOrder(orderId: string) {\n    this.init();\n    this.stompService.publish({\n      destination: \"/app/orders/start.edit\",\n      body: orderId,\n    });\n  }\n\n  publishFinishEditOrder(orderId: string) {\n    this.init();\n    this.stompService.publish({\n      destination: \"/app/orders/finish.edit\",\n      body: orderId,\n    });\n  }\n\n  subscribeToCollectOrder(collectOrderId: string) {\n    this.init();\n    return this.stompService.watch(`/topic/collectOrder/${collectOrderId}`);\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\n\nimport {\n  Category,\n  CategoryNode,\n  Page,\n  PageRequest,\n  Product,\n  ProductType,\n  Workspace,\n} from \"../model\";\nimport { ConfigService } from \"./config.service\";\nimport { WorkspaceService } from \"./workspace.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [HttpClient, ConfigService],\n})\nexport class ProductService {\n  workspace: Workspace;\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n    workspaceService: WorkspaceService,\n  ) {\n    workspaceService.currentWorkspace.subscribe({\n      next: (workspace) => {\n        this.workspace = workspace;\n      },\n    });\n  }\n\n  public getProducts(pageable?: PageRequest): Observable<Page<Product>> {\n    const requestUrl = `${this.config.baseUrl}/products`;\n    const params: any = pageable || {};\n    return this.http.get<Page<Product>>(requestUrl, { params });\n  }\n\n  public findProducts(\n    term: string,\n    textsearch?: boolean,\n  ): Observable<Product[]> {\n    let requestUrl;\n    if (typeof textsearch !== \"undefined\") {\n      requestUrl = `${this.config.baseUrl}/products?term=${term}&textsearch=${textsearch}`;\n    } else {\n      requestUrl = `${this.config.baseUrl}/products?term=${term}`;\n    }\n    return this.http.get<Product[]>(requestUrl);\n  }\n\n  public getCategoryTree(): Observable<CategoryNode[]> {\n    return this.getCategories().pipe(\n      map((categories) => {\n        const rootCategories = categories\n          .filter((cat) => cat.parentOid == null)\n          .sort(this.categorySort)\n          .map((cat) => {\n            return {\n              oid: cat.oid,\n              name: cat.name,\n              imageOid: cat.imageOid,\n              weight: cat.weight,\n              parentOid: cat.parentOid,\n              children: [],\n            };\n          });\n        rootCategories.forEach((rootCategory) =>\n          this.addChildNodes(categories, rootCategory),\n        );\n\n        return rootCategories;\n      }),\n    );\n  }\n\n  private addChildNodes(categories: Category[], node: CategoryNode) {\n    const childCategories = categories\n      .filter((cat) => cat.parentOid == node.oid)\n      .sort(this.categorySort)\n      .map((cat) => {\n        return {\n          oid: cat.oid,\n          name: cat.name,\n          imageOid: cat.imageOid,\n          weight: cat.weight,\n          parentOid: cat.parentOid,\n          children: [],\n        };\n      });\n    childCategories.forEach((rootCategory) =>\n      this.addChildNodes(categories, rootCategory),\n    );\n    node.children = childCategories;\n  }\n\n  private categorySort = (n1: Category, n2: Category) => {\n    const w1 = n1.weight ? 0 : n1.weight;\n    const w2 = n2.weight ? 0 : n2.weight;\n    return w1 - w2;\n  };\n\n  public getCategories(): Observable<Category[]> {\n    const href = this.config.baseUrl + \"/categories\";\n    const requestUrl = `${href}`;\n    return this.http.get<Category[]>(requestUrl).pipe(\n      map((categories) => {\n        return categories.filter((category) => {\n          if (\n            this.workspace &&\n            this.workspace.categoryOids &&\n            this.workspace.categoryOids.length > 0\n          ) {\n            return (\n              this.workspace.categoryOids.findIndex(\n                (oid) => oid === category.oid,\n              ) > -1\n            );\n          }\n          return true;\n        });\n      }),\n    );\n  }\n\n  public getProduct(_oid: string): Observable<Product> {\n    const requestUrl = `${this.config.baseUrl}/products/${_oid}`;\n    return this.http.get<Product>(requestUrl);\n  }\n\n  public getCategory(_oid: string): Observable<Category> {\n    const requestUrl = `${this.config.baseUrl}/categories/${_oid}`;\n    return this.http.get<Category>(requestUrl);\n  }\n\n  public getProductsByCategory(_oid: string): Observable<Product[]> {\n    const requestUrl = `${this.config.baseUrl}/products?category=${_oid}`;\n    return this.http.get<Product[]>(requestUrl);\n  }\n\n  public getProductsByBarcode(_barcode: string): Observable<Product[]> {\n    const requestUrl = `${this.config.baseUrl}/products?barcode=${_barcode}`;\n    return this.http.get<Product[]>(requestUrl);\n  }\n\n  public getProductsByType(type: ProductType): Observable<Product[]> {\n    const requestUrl = `${this.config.baseUrl}/products?type=${type}`;\n    return this.http.get<Product[]>(requestUrl);\n  }\n\n  static isStockable(product: Product): boolean {\n    switch (product.type) {\n      case ProductType.STANDART:\n        return true;\n      default:\n        return false;\n    }\n  }\n}\n","import { Injectable } from \"@angular/core\";\nimport clone from \"just-clone\";\nimport { BehaviorSubject, Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\n\nimport { Item, Product, ProductRelationType, ProductType } from \"../model\";\nimport { AdminService } from \"./admin.service\";\nimport { AuthService } from \"./auth.service\";\nimport { ProductService } from \"./product.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [AdminService, AuthService, ProductService],\n})\nexport class PartListService {\n  private partLists: Product[];\n  private partListComb = [];\n  private partListSource = new BehaviorSubject<Product>(null);\n  detectedPartList = this.partListSource.asObservable();\n\n  constructor(\n    adminService: AdminService,\n    authService: AuthService,\n    private productService: ProductService,\n  ) {\n    this.productService.getProductsByType(ProductType.PARTLIST).subscribe({\n      next: (products) => {\n        this.partLists = products;\n      },\n    });\n    adminService.reloadEvent.subscribe({\n      next: (_) => {\n        this.reset();\n      },\n    });\n    authService.currentEvent.subscribe({\n      next: (event) => {\n        if (event == \"logout\") {\n          this.reset();\n        }\n      },\n    });\n  }\n\n  public reset() {\n    this.partLists = undefined;\n    this.partListComb = [];\n  }\n\n  public updateTicket(ticket: Item[]): Observable<Item[]> {\n    if (this.partLists == undefined) {\n      return this.productService.getProductsByType(ProductType.PARTLIST).pipe(\n        map((products) => {\n          this.partLists = products;\n          return this.updateTicketInternal(ticket);\n        }),\n      );\n    } else {\n      const items = this.updateTicketInternal(ticket);\n      return new Observable<Item[]>((observer) => {\n        observer.next(items);\n      });\n    }\n  }\n\n  private updateTicketInternal(ticket: Item[]): Item[] {\n    if (ticket.length > 0 && this.partLists.length > 0) {\n      this.partLists.forEach((partList) => {\n        let tempTicket = clone(ticket);\n        let isFound = [];\n        let salebomcount = 0;\n        partList.relations.forEach((relation) => {\n          const toBeRemoved = [];\n          if (ProductRelationType.SALESBOM == relation.type) {\n            salebomcount++;\n            let currentQuantity: number = relation.quantity;\n            for (let i = 0; i < tempTicket.length; i++) {\n              const item = tempTicket[i];\n              if (item.product.oid == relation.productOid) {\n                if (item.quantity == currentQuantity) {\n                  toBeRemoved.push(i);\n                  isFound.push(true);\n                  break;\n                } else if (item.quantity > currentQuantity) {\n                  item.quantity = item.quantity - currentQuantity;\n                  isFound.push(true);\n                  break;\n                } else if (item.quantity < currentQuantity) {\n                  toBeRemoved.push(i);\n                  currentQuantity = currentQuantity - item.quantity;\n                }\n              }\n            }\n          }\n          tempTicket = this.cleanUpTicket(tempTicket, toBeRemoved);\n        });\n        if (salebomcount > 0 && salebomcount == isFound.length) {\n          tempTicket.push({\n            index: tempTicket.length,\n            product: partList,\n            quantity: 1,\n            price: partList.crossPrice,\n            remark: \"\",\n            currency: ticket[0].currency,\n            exchangeRate: ticket[0].exchangeRate,\n          });\n          ticket = tempTicket;\n        }\n      });\n    }\n    return ticket;\n  }\n\n  private cleanUpTicket(ticket: Item[], toBeRemoved: number[]): Item[] {\n    const cleanedUpTicket = [];\n    for (let i = 0; i < ticket.length; i++) {\n      if (!toBeRemoved.includes(i)) {\n        cleanedUpTicket.push(ticket[i]);\n      }\n    }\n    return cleanedUpTicket;\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable, signal } from \"@angular/core\";\nimport { BehaviorSubject, Observable, map, switchMap } from \"rxjs\";\n\nimport {\n  CalculatorRequest,\n  CalculatorResponse,\n  Currency,\n  DocItem,\n  DocStatus,\n  EmployeeRelation,\n  EmployeeRelationType,\n  Item,\n  Order,\n  Pos,\n  PromoInfo,\n} from \"../model\";\nimport { CalculatorService } from \"./calculator.service\";\nimport { ConfigService } from \"./config.service\";\nimport { DocumentService } from \"./document.service\";\nimport { PartListService } from \"./part-list.service\";\nimport { TaxService } from \"./tax.service\";\nimport { WorkspaceService } from \"./workspace.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [\n    HttpClient,\n    ConfigService,\n    WorkspaceService,\n    DocumentService,\n    TaxService,\n  ],\n})\nexport class PosService {\n  private order: Order = null;\n  private orderSource = new BehaviorSubject<Order>(this.order);\n  currentOrder = this.orderSource.asObservable();\n\n  private ticket: Item[] = [];\n  private ticketSource = new BehaviorSubject<Item[]>(this.ticket);\n  currentTicket = this.ticketSource.asObservable();\n\n  private netTotal = 0;\n  private netTotalSource = new BehaviorSubject<number>(this.netTotal);\n  currentNetTotal = this.netTotalSource.asObservable();\n\n  private taxes: Map<string, number> = new Map();\n  private taxesSource = new BehaviorSubject<Map<string, number>>(this.taxes);\n  currentTaxes = this.taxesSource.asObservable();\n\n  private crossTotal = 0;\n  private crossTotalSource = new BehaviorSubject<number>(this.crossTotal);\n  currentCrossTotal = this.crossTotalSource.asObservable();\n\n  private payableAmount = 0;\n  private payableAmountSource = new BehaviorSubject<number>(this.payableAmount);\n  currentPayableAmount = this.payableAmountSource.asObservable();\n\n  public promotionInfo = signal<PromoInfo | null>(null);\n\n  public currency = Currency.USD;\n  private currencySource = new BehaviorSubject<Currency>(this.currency);\n  currentCurrency = this.currencySource.asObservable();\n\n  public exchangeRate = 1;\n  private exchangeRateSource = new BehaviorSubject<number>(this.exchangeRate);\n  currentExchangeRate = this.exchangeRateSource.asObservable();\n\n  private _multiplier: number = 1;\n  private multiplierSource = new BehaviorSubject<number>(this._multiplier);\n  multiplier = this.multiplierSource.asObservable();\n\n  private currentPos: Pos;\n\n  private _contactOid: string | null;\n\n  private employeeRelations: EmployeeRelation[] | undefined;\n\n  public shoutOut: string | undefined;\n\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n    private workspaceService: WorkspaceService,\n    private documentService: DocumentService,\n    private partListService: PartListService,\n    private calculatorService: CalculatorService,\n  ) {\n    this.workspaceService.currentWorkspace.subscribe((data) => {\n      if (data) {\n        if (!(this.currentPos && this.currentPos.oid === data.posOid)) {\n          this.getPos(data.posOid).subscribe((_pos) => {\n            this.currentPos = _pos;\n            this.currencySource.next(_pos.currency);\n          });\n          this.changeTicket([]);\n        }\n      }\n    });\n    this.currentTicket.subscribe((_ticket) => (this.ticket = _ticket));\n    this.currentNetTotal.subscribe((netTotal) => (this.netTotal = netTotal));\n    this.currentCrossTotal.subscribe(\n      (crossTotal) => (this.crossTotal = crossTotal),\n    );\n    this.currentPayableAmount.subscribe(\n      (payableAmount) => (this.payableAmount = payableAmount),\n    );\n    this.currentCurrency.subscribe((currency) => (this.currency = currency));\n    this.currentExchangeRate.subscribe(\n      (exchangeRate) => (this.exchangeRate = exchangeRate),\n    );\n    this.multiplier.subscribe({\n      next: (multiplier) => (this._multiplier = multiplier),\n    });\n  }\n\n  public getPoss(): Observable<Pos[]> {\n    const url = `${this.config.baseUrl}/poss`;\n    return this.http.get<Pos[]>(url);\n  }\n\n  public getPos(_oid: string): Observable<Pos> {\n    const url = `${this.config.baseUrl}/poss/${_oid}`;\n    return this.http.get<Pos>(url);\n  }\n\n  public setOrder(order: Order) {\n    if (order.discount) {\n      order.items = order.items.filter(\n        (item) => item.product.oid != order.discount.productOid,\n      );\n      order.discount = null;\n    }\n    this.contactOid = order.contactOid;\n    this.shoutOut = order.shoutout;\n    this.orderSource.next(order);\n    const items: Item[] = [];\n    order.items\n      .sort((a, b) => (a.index < b.index ? -1 : 1))\n      .forEach((docItem) => {\n        items.push({\n          index: docItem.index,\n          parentIdx: docItem.parentIdx,\n          product: docItem.product,\n          standIn: docItem.standIn,\n          quantity: docItem.quantity,\n          price: docItem.crossPrice,\n          currency: this.currency,\n          exchangeRate: this.exchangeRate,\n          remark: docItem.remark,\n        });\n      });\n    this.changeTicket(items);\n  }\n\n  public setMultiplier(multiplier: number) {\n    this.multiplierSource.next(multiplier);\n  }\n\n  changeTicket(ticket: Item[]) {\n    if (ticket.length == 0) {\n      this.netTotalSource.next(0);\n      this.crossTotalSource.next(0);\n      this.payableAmountSource.next(0);\n      this.taxesSource.next(new Map<string, number>());\n      this.ticketSource.next(ticket);\n    } else {\n      this.partListService.updateTicket(ticket).subscribe({\n        next: (ticket) => {\n          this.calculatorService.calculate(this.calcReq(ticket)).subscribe({\n            next: (calcResp) => {\n              this.updateTotals(calcResp);\n              this.updateTicket(ticket, calcResp);\n              this.promotionInfo.set(calcResp.promotionInfo);\n            },\n          });\n        },\n      });\n    }\n  }\n\n  private updateTicket(ticket: Item[], calcResp: CalculatorResponse) {\n    for (let index = 0; index < ticket.length; index++) {\n      const item = ticket[index];\n      const position = calcResp.positions[index];\n      item.price = position.crossPrice;\n    }\n    this.ticketSource.next(ticket);\n  }\n\n  private updateTotals(calcResp: CalculatorResponse) {\n    this.netTotalSource.next(calcResp.netTotal);\n    this.crossTotalSource.next(calcResp.crossTotal);\n    this.payableAmountSource.next(calcResp.payableAmount);\n\n    const taxesNum = new Map<string, number>();\n    calcResp.taxes.forEach((entry) => {\n      taxesNum.set(entry.tax.name, entry.amount);\n    });\n    this.taxesSource.next(taxesNum);\n  }\n\n  public createOrder(): Observable<Order> {\n    return this.calculatorService.calculate(this.calcReq()).pipe(\n      switchMap((calcResp) => {\n        return this.documentService.createOrder({\n          id: null,\n          oid: null,\n          number: null,\n          currency: this.currency,\n          exchangeRate: this.exchangeRate,\n          items: this.toDocItems(calcResp),\n          status: DocStatus.OPEN,\n          netTotal: calcResp.netTotal,\n          crossTotal: calcResp.crossTotal,\n          payableAmount: calcResp.payableAmount,\n          taxes: calcResp.taxes,\n          discount: null,\n          payableOid: null,\n          contactOid: this.contactOid,\n          employeeRelations: this.employeeRelations,\n          shoutout: this.shoutOut,\n        });\n      }),\n    );\n  }\n\n  private calcReq(items?: Item[]): CalculatorRequest {\n    let itemsToMap: Item[];\n    if (items == undefined) {\n      itemsToMap = this.ticket;\n    } else {\n      itemsToMap = items;\n    }\n    return {\n      positions: itemsToMap.map((item) => {\n        return {\n          quantity: item.quantity,\n          productOid: item.product.oid,\n        };\n      }),\n    };\n  }\n\n  private toDocItems(calcResp: CalculatorResponse): DocItem[] {\n    const docItems = new Array<DocItem>();\n    for (let index = 0; index < this.ticket.length; index++) {\n      const item = this.ticket[index];\n      const position = calcResp.positions[index];\n      item.price = position.crossPrice;\n      docItems.push(<DocItem>{\n        index: item.index,\n        parentIdx: item.parentIdx,\n        product: item.product,\n        standIn: item.standIn,\n        quantity: item.quantity,\n        netUnitPrice: position.netUnitPrice,\n        netPrice: position.netPrice,\n        crossUnitPrice: position.crossUnitPrice,\n        crossPrice: position.crossPrice,\n        remark: item.remark,\n        taxes: position.taxes,\n      });\n    }\n    return docItems;\n  }\n\n  public updateOrder(order: Order): Observable<Order> {\n    return this.calculatorService.calculate(this.calcReq()).pipe(\n      switchMap((calcResp) => {\n        return this.documentService.updateOrder(\n          Object.assign(order, {\n            items: this.toDocItems(calcResp),\n            netTotal: calcResp.netTotal,\n            crossTotal: calcResp.crossTotal,\n            payableAmount: calcResp.payableAmount,\n            taxes: calcResp.taxes,\n            employeeRelations: this.employeeRelations,\n            shoutout: this.shoutOut,\n            contactOid: this.contactOid,\n          }),\n        );\n      }),\n    );\n  }\n\n  public calculateOrder(order: Order): Observable<Order> {\n    return this.calculatorService.calculate(this.calcReq()).pipe(\n      map((calcResp) => {\n        return Object.assign(order, {\n          items: this.toDocItems(calcResp),\n          netTotal: calcResp.netTotal,\n          crossTotal: calcResp.crossTotal,\n          payableAmount: calcResp.payableAmount,\n          taxes: calcResp.taxes,\n          employeeRelations: this.employeeRelations,\n          shoutout: this.shoutOut,\n          contactOid: this.contactOid,\n        });\n      }),\n    );\n  }\n\n  public reset() {\n    this.changeTicket([]);\n    this.orderSource.next(null);\n  }\n\n  public set contactOid(contactOid: string | null) {\n    this._contactOid = contactOid;\n  }\n\n  public get contactOid(): string | null {\n    return this._contactOid;\n  }\n\n  public addEmployeeRelation(relation: EmployeeRelation) {\n    if (this.employeeRelations == null) {\n      this.employeeRelations = [];\n    }\n    this.employeeRelations.push(relation);\n  }\n\n  public removeEmployeeRelation(relation: EmployeeRelation) {\n    if (this.employeeRelations) {\n      const index = this.employeeRelations.findIndex((object) => {\n        return (\n          object.employeeOid === relation.employeeOid &&\n          object.type == relation.type\n        );\n      });\n      if (index !== -1) {\n        this.employeeRelations.splice(index, 1);\n      }\n      if (this.employeeRelations.length == 0) {\n        this.employeeRelations = undefined;\n      }\n    }\n  }\n\n  public removeEmployeeRelationsByType(relationType: EmployeeRelationType) {\n    if (this.employeeRelations) {\n      this.employeeRelations = this.employeeRelations.filter(\n        (object) => object.type != relationType,\n      );\n      if (this.employeeRelations.length == 0) {\n        this.employeeRelations = undefined;\n      }\n    }\n  }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Decimal } from \"decimal.js\";\nimport { BehaviorSubject } from \"rxjs\";\n\nimport { Currency, Document, Payment } from \"../model/index\";\nimport { PosService } from \"./pos.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [PosService],\n})\nexport class PaymentService {\n  private document: Document = null;\n  private documentSource = new BehaviorSubject<Document>(this.document);\n  currentDocument = this.documentSource.asObservable();\n\n  private payments: Payment[] = [];\n  private paymentsSource = new BehaviorSubject<Payment[]>(this.payments);\n  currentPayments = this.paymentsSource.asObservable();\n\n  private total = 0;\n  private totalSource = new BehaviorSubject<number>(this.total);\n  currentTotal = this.totalSource.asObservable();\n\n  currency: Currency;\n\n  constructor(private posService: PosService) {\n    this.posService.currentCurrency.subscribe((_data) => {\n      if (_data) {\n        this.currency = _data;\n      }\n    });\n  }\n\n  updateDocument(_doc: Document) {\n    this.documentSource.next(_doc);\n  }\n\n  updatePayments(_payments: Payment[]) {\n    this.calculateTotals(_payments);\n    this.paymentsSource.next(_payments);\n  }\n\n  calculateTotals(_payments: Payment[]) {\n    let total = new Decimal(0);\n    _payments.forEach((_payment: Payment) => {\n      total = total.plus(new Decimal(_payment.amount));\n    });\n    this.totalSource.next(\n      total.toDecimalPlaces(2, Decimal.ROUND_HALF_UP).toNumber(),\n    );\n  }\n\n  reset() {\n    this.paymentsSource.next([]);\n    this.documentSource.next(null);\n    this.totalSource.next(0);\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { PosFile } from \"../model\";\nimport { ConfigService } from \"./config.service\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class PosFileService {\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n  ) {}\n\n  public getFile(oid: string): Observable<PosFile> {\n    const requestUrl = `${this.config.baseUrl}/pos-files/${oid}`;\n    return this.http.get<PosFile>(requestUrl);\n  }\n\n  public findByTag(tag: string, valueRegex: String): Observable<PosFile[]> {\n    const requestUrl = `${this.config.baseUrl}/pos-files`;\n    const params: any = { tag: tag, value: valueRegex };\n    return this.http.get<PosFile[]>(requestUrl, { params });\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\nimport { Document, Order, PrintResponse } from \"../model\";\nimport { ConfigService } from \"./config.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [HttpClient, ConfigService],\n})\nexport class PrintService {\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n  ) {}\n\n  printJobs(workspaceOid: string, order: Order): Observable<PrintResponse[]> {\n    const requestUrl = `${this.config.baseUrl}/print/jobs`;\n    return this.http.post<PrintResponse[]>(requestUrl, null, {\n      params: {\n        documentId: order.id,\n        workspaceOid,\n      },\n    });\n  }\n\n  getPreview(_key: string): Observable<any> {\n    const requestUrl = `${this.config.baseUrl}/print/preview/${_key}`;\n    return this.http.get(requestUrl, { responseType: \"blob\" });\n  }\n\n  printPreliminary(\n    workspaceOid: string,\n    doc: Document,\n  ): Observable<PrintResponse[]> {\n    const requestUrl = `${this.config.baseUrl}/print/preliminary`;\n    return this.http.post<PrintResponse[]>(requestUrl, null, {\n      params: {\n        documentId: doc.id,\n        workspaceOid,\n      },\n    });\n  }\n\n  printCopy(workspaceOid: string, doc: Document): Observable<PrintResponse[]> {\n    const requestUrl = `${this.config.baseUrl}/print/copy`;\n    return this.http.post<PrintResponse[]>(requestUrl, null, {\n      params: {\n        documentId: doc.id,\n        workspaceOid,\n      },\n    });\n  }\n\n  printTicket(\n    workspaceOid: string,\n    doc: Document,\n  ): Observable<PrintResponse[]> {\n    const requestUrl = `${this.config.baseUrl}/print/ticket`;\n    return this.http.post<PrintResponse[]>(requestUrl, null, {\n      params: {\n        documentId: doc.id,\n        workspaceOid,\n      },\n    });\n  }\n\n  printBalance(\n    workspaceOid: string,\n    balanceId: string,\n    detailed?: boolean,\n  ): Observable<PrintResponse[]> {\n    const requestUrl = `${this.config.baseUrl}/print/balance`;\n    return this.http.post<PrintResponse[]>(requestUrl, null, {\n      params: {\n        balanceId,\n        workspaceOid,\n        detailed,\n      },\n    });\n  }\n\n  printSalesReport(\n    workspaceOid: string,\n    date: string,\n  ): Observable<PrintResponse[]> {\n    const requestUrl = `${this.config.baseUrl}/print/sales-report`;\n    return this.http.post<PrintResponse[]>(requestUrl, null, {\n      params: {\n        workspaceOid,\n        date,\n      },\n    });\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { PromoInfo, Promotion } from \"../model\";\nimport { ConfigService } from \"./config.service\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class PromotionService {\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n  ) {}\n\n  public getPromotion(oid: string): Observable<Promotion> {\n    const requestUrl = `${this.config.baseUrl}/promotions/${oid}`;\n    return this.http.get<Promotion>(requestUrl);\n  }\n\n  public getPromotionInfoForDocument(\n    documentId: string,\n  ): Observable<PromoInfo> {\n    const requestUrl = `${this.config.baseUrl}/promotions/info`;\n    return this.http.get<PromoInfo>(requestUrl, { params: { documentId } });\n  }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Observable, forkJoin } from \"rxjs\";\n\nimport { Position, Spot, SpotsLayout, Workspace } from \"../model\";\nimport { ConfigService } from \"./config.service\";\nimport { DocumentService } from \"./document.service\";\nimport { WorkspaceService } from \"./workspace.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [DocumentService, WorkspaceService],\n})\nexport class SpotService {\n  public positions: any = {};\n  private workspace: Workspace;\n\n  constructor(\n    private documentService: DocumentService,\n    private workspaceService: WorkspaceService,\n    config: ConfigService,\n  ) {\n    if (config.persistence) {\n      this.positions = config.persistence.spotPositions();\n    }\n    workspaceService.currentWorkspace.subscribe({\n      next: (workspace) => (this.workspace = workspace),\n    });\n  }\n\n  public getSpots(): Observable<Spot[]> {\n    return new Observable((observer) => {\n      this.documentService.getOrders4Spots().subscribe((_orders) => {\n        const spots: Spot[] = [];\n        for (let i = 0; i < this.workspaceService.getSpotSize(); i++) {\n          const orders = _orders.filter((o) => o.spot && o.spot.id === \"\" + i);\n          spots.push({ id: \"\" + i, label: \"M \" + (i + 1), orders: orders });\n        }\n        observer.next(spots);\n        observer.complete();\n      });\n    });\n  }\n\n  public getLayout(): Observable<SpotsLayout> {\n    let layout: SpotsLayout = {\n      floors: this.workspace.floors,\n    };\n    return new Observable((observer) => {\n      this.documentService.getOrders4Spots().subscribe((_orders) => {\n        layout.floors.forEach((floor) => {\n          floor.spots\n            .sort((s1, s2) => {\n              return s1.label.localeCompare(s2.label);\n            })\n            .forEach((spot) => {\n              if (spot.oid) {\n                spot.id = spot.oid;\n              }\n              const orders = _orders.filter(\n                (o) => o.spot && o.spot.id === spot.id,\n              );\n              spot.orders = orders;\n              spot.position = this.positions[spot.id];\n            });\n        });\n        observer.next(layout);\n        observer.complete();\n      });\n    });\n  }\n\n  setPosition(spot: Spot, position: Position): void {\n    this.positions[spot.id] = position;\n    this.positions.save();\n  }\n\n  public swap(origin: Spot, target: Spot) {\n    const orders = origin.orders;\n    const obsv = [];\n    orders.forEach((order) => {\n      order.spot = { id: target.id, label: target.label };\n      obsv.push(this.documentService.updateOrder(order));\n    });\n    return forkJoin(obsv);\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport {\n  AddStocktakingEntry,\n  Page,\n  PageRequest,\n  Stocktaking,\n  StocktakingEntry,\n} from \"../model\";\nimport { ConfigService } from \"./config.service\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class StocktakingService {\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n  ) {}\n\n  getCurrent(warehouseOid: string): Observable<Stocktaking> {\n    const requestUrl = `${this.config.baseUrl}/stocktakings/current`;\n    const params: any = { warehouseOid };\n    return this.http.get<Stocktaking>(requestUrl, { params });\n  }\n\n  createStocktaking(warehouseOid: string): Observable<Stocktaking> {\n    const requestUrl = `${this.config.baseUrl}/stocktakings`;\n    return this.http.post<Stocktaking>(requestUrl, warehouseOid);\n  }\n\n  closeStocktaking(stocktakingId: string): Observable<Stocktaking> {\n    const requestUrl = `${this.config.baseUrl}/stocktakings/${stocktakingId}`;\n    return this.http.put<Stocktaking>(requestUrl, {});\n  }\n\n  getOpenStocktakings(): Observable<Stocktaking[]> {\n    const requestUrl = `${this.config.baseUrl}/stocktakings`;\n    const params: any = { status: \"OPEN\" };\n    return this.http.get<Stocktaking[]>(requestUrl, { params });\n  }\n\n  getStocktakings(\n    expand?: boolean,\n    pageable?: PageRequest,\n  ): Observable<Page<Stocktaking>> {\n    const requestUrl = `${this.config.baseUrl}/stocktakings`;\n    const params: any = pageable || {};\n    params.expand = expand;\n    return this.http.get<Page<Stocktaking>>(requestUrl, { params });\n  }\n\n  addEntry(\n    stocktakingId: string,\n    entry: AddStocktakingEntry,\n  ): Observable<String> {\n    const requestUrl = `${this.config.baseUrl}/stocktakings/${stocktakingId}/entries`;\n    return this.http.post(requestUrl, entry, { responseType: \"text\" });\n  }\n\n  deleteEntry(stocktakingId: string, entryId: string): Observable<Object> {\n    const requestUrl = `${this.config.baseUrl}/stocktakings/${stocktakingId}/entries/${entryId}`;\n    return this.http.delete(requestUrl);\n  }\n\n  getEntries(\n    stocktakingId: string,\n    pageable?: PageRequest,\n  ): Observable<Page<StocktakingEntry>> {\n    const requestUrl = `${this.config.baseUrl}/stocktakings/${stocktakingId}/entries`;\n    const params: any = pageable || {};\n    return this.http.get<Page<StocktakingEntry>>(requestUrl, { params });\n  }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\nimport { User } from \"../model/index\";\nimport { ConfigService } from \"./config.service\";\n\n@Injectable({\n  providedIn: \"root\",\n  deps: [HttpClient, ConfigService],\n})\nexport class UserService {\n  constructor(\n    private http: HttpClient,\n    private config: ConfigService,\n  ) {}\n\n  public getUsers(): Observable<User[]> {\n    const href = this.config.baseUrl + \"/users\";\n    const requestUrl = `${href}`;\n    return this.http.get<User[]>(requestUrl);\n  }\n\n  public current(): Observable<User> {\n    const href = this.config.baseUrl + \"/users/current\";\n    const requestUrl = `${href}`;\n    return this.http.get<User>(requestUrl);\n  }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { HTTP_INTERCEPTORS } from \"@angular/common/http\";\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\n\nimport { CompanyInterceptor } from \"./interceptors/company.interceptor\";\nimport { JwtInterceptor } from \"./interceptors/jwt.interceptor\";\nimport { PosConfig } from \"./model\";\nimport { PosCurrencyPipe } from \"./pipes/pos-currency.pipe\";\nimport { SecurePipe } from \"./pipes/secure.pipe\";\nimport { EnquiryService, LoaderService } from \"./services\";\nimport { AdminService } from \"./services/admin.service\";\nimport { AuthService } from \"./services/auth.service\";\nimport { BalanceService } from \"./services/balance.service\";\nimport { CollectService } from \"./services/collect.service\";\nimport { CompanyService } from \"./services/company.service\";\nimport { ConfigService } from \"./services/config.service\";\nimport { ContactService } from \"./services/contact.service\";\nimport { DiscountService } from \"./services/discount.service\";\nimport { DocumentService } from \"./services/document.service\";\nimport { ImageService } from \"./services/image.service\";\nimport { InventoryService } from \"./services/inventory.service\";\nimport { MsgService } from \"./services/msg.service\";\nimport { PaymentService } from \"./services/payment.service\";\nimport { PosConfigToken } from \"./services/pos-config.token\";\nimport { PosService } from \"./services/pos.service\";\nimport { PrintService } from \"./services/print.service\";\nimport { ProductService } from \"./services/product.service\";\nimport { RxStompService } from \"./services/rx-stomp.service\";\nimport { SpotService } from \"./services/spot.service\";\nimport { TaxService } from \"./services/tax.service\";\nimport { UserService } from \"./services/user.service\";\nimport { UtilsService } from \"./services/utils.service\";\nimport { WorkspaceService } from \"./services/workspace.service\";\n\n@NgModule({\n  declarations: [PosCurrencyPipe, SecurePipe],\n  imports: [CommonModule],\n  exports: [PosCurrencyPipe, SecurePipe],\n})\nexport class PosLibraryModule {\n  static forRoot(config: PosConfig): ModuleWithProviders<PosLibraryModule> {\n    return {\n      ngModule: PosLibraryModule,\n      providers: [\n        {\n          provide: PosConfigToken,\n          useValue: config,\n        },\n        ConfigService,\n        AdminService,\n        AuthService,\n        BalanceService,\n        ContactService,\n        CollectService,\n        CompanyService,\n        DiscountService,\n        DocumentService,\n        ImageService,\n        EnquiryService,\n        InventoryService,\n        LoaderService,\n        MsgService,\n        PaymentService,\n        PosService,\n        PrintService,\n        ProductService,\n        SpotService,\n        RxStompService,\n        TaxService,\n        UserService,\n        UtilsService,\n        WorkspaceService,\n        {\n          provide: HTTP_INTERCEPTORS,\n          useClass: JwtInterceptor,\n          multi: true,\n        },\n        {\n          provide: HTTP_INTERCEPTORS,\n          useClass: CompanyInterceptor,\n          multi: true,\n        },\n      ],\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ConfigService","i2.AuthService","i3.ConfigService","i4.CompanyService","i5.CollectService","i1.CompanyService","i1.AuthService","i1.LoaderService","i1.UtilsService","map","i1","i2.ImageService","i3.ImageService","i4.WorkspaceService","Decimal","i3.WorkspaceService","i4.TaxService","i1.TaxService","i2.DocumentService","i1.ConfigService","i2","i2.RxStompService","i3.AuthService","i1.AdminService","i3.ProductService","i4.DocumentService","i5.PartListService","i6.CalculatorService","i1.PosService","i1.DocumentService","i2.WorkspaceService"],"mappings":"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"}