Mikhail Chusavitin ec182abe99 Competitor pricelist: aggregate all competitors, rebuild without re-import
- Add GetLatestQuotesAllCompetitors() repo method: latest quote per
  (competitor_id, partnumber) across all active competitors
- Add RebuildPricelist() service method: loads all quotes, applies each
  competitor's discount, aggregates with weighted_median per lot,
  creates single combined competitor pricelist
- Add POST /api/competitors/pricelist handler + route
- JS: "Создать прайслист" on competitor tab calls new endpoint instead
  of the generic one that required explicit items

This allows recreating the competitor pricelist after new lot mappings
are added, without requiring a new file upload.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 08:17:44 +03:00
2026-03-08 17:09:43 +03:00
2026-02-18 07:01:49 +03:00
2026-03-01 16:58:28 +03:00
2026-02-07 21:42:26 +03:00
2026-02-07 21:42:26 +03:00
2026-02-08 08:57:52 +03:00
2026-02-08 08:57:52 +03:00
2026-02-08 08:57:52 +03:00

PriceForge

Price and pricelist manager for MariaDB.

Quick Start

cp config.example.yaml config.yaml
# Edit config.yaml: database.host, name, user, password
make run

Commands

make run           # dev server
make build         # local build
make build-release # release build
make build-all     # cross-compile Linux/macOS/Windows
make test          # run tests
go run ./cmd/pfs -migrate   # run migrations
./bin/pfs -version          # check version
./scripts/release.sh        # build release archives

Requirements

  • Go 1.22+
  • MariaDB / MySQL

macOS Gatekeeper

xattr -d com.apple.quarantine /path/to/pfs-darwin-arm64
Description
No description provided
Readme 261 MiB
Languages
Go 47.2%
CSS 25.1%
JavaScript 16%
HTML 11.3%
Makefile 0.2%
Other 0.2%