Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5b40b4b76c | |||
| 820db917ce | |||
| 85377e9e1a | |||
| 5df9d62614 | |||
| 09e5435e95 | |||
| 3b28a7c400 | |||
| 57d6b1a607 | |||
| 8b5fa414d7 | |||
| 0412ca1321 | |||
| f5abf68bb6 | |||
| 3f1fd7e942 | |||
| 00739cec56 | |||
| 7cdd500cb6 | |||
| 2d920f0257 | |||
| 5f00e63f71 | |||
| fd75bc88dc | |||
| 2eb1b38f25 | |||
| 11b0d06f50 | |||
| 01f4f3d8c0 |
59
.gitignore
vendored
Normal file
59
.gitignore
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
# Python
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
*.so
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
|
||||
# Virtual Environment
|
||||
venv/
|
||||
.venv/
|
||||
env/
|
||||
ENV/
|
||||
.env
|
||||
|
||||
# IDE specific files
|
||||
.idea/
|
||||
.vscode/
|
||||
*.swp
|
||||
*.swo
|
||||
.DS_Store
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# Local development settings
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
# Log files
|
||||
*.log
|
||||
logs/
|
||||
|
||||
# Coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
coverage.xml
|
||||
*.cover
|
||||
|
||||
credentials.json
|
||||
17
Dockerfile
Normal file
17
Dockerfile
Normal file
@@ -0,0 +1,17 @@
|
||||
FROM python:3.9-slim-bookworm
|
||||
|
||||
# Install cron
|
||||
RUN apt-get update && apt-get -y install cron
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY . .
|
||||
|
||||
# Make entrypoint script executable
|
||||
RUN chmod +x /app/entrypoint.sh
|
||||
|
||||
# Set the entrypoint
|
||||
ENTRYPOINT ["/app/entrypoint.sh"]
|
||||
24
app1.py
24
app1.py
@@ -1,24 +0,0 @@
|
||||
import gspread
|
||||
from google.oauth2.service_account import Credentials
|
||||
|
||||
# Zasięgi uprawnień (Sheets + Drive)
|
||||
SCOPES = [
|
||||
"https://www.googleapis.com/auth/spreadsheets",
|
||||
"https://www.googleapis.com/auth/drive"
|
||||
]
|
||||
|
||||
# Wczytanie poświadczeń
|
||||
creds = Credentials.from_service_account_file("credentials.json", scopes=SCOPES)
|
||||
|
||||
# Połączenie z Google Sheets
|
||||
client = gspread.authorize(creds)
|
||||
|
||||
# Otworzenie arkusza po nazwie
|
||||
sheet = client.open("Składalnia lista gitar przychodzących ").sheet1 # sheet1 = pierwsza zakładka
|
||||
|
||||
# Pobranie wszystkich danych
|
||||
rows = sheet.get_all_values()
|
||||
|
||||
# Wyświetlenie pierwszych 5 wierszy
|
||||
for row in rows[:5]:
|
||||
print(row)
|
||||
33
app2.py
33
app2.py
@@ -1,33 +0,0 @@
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
# konfiguracja logowania
|
||||
LOGIN_URL = "http://192.168.0.152/mayo2/login.php"
|
||||
DANE_LOGOWANIA = {
|
||||
"login": "twoj_login",
|
||||
"pass": "twoje_haslo",
|
||||
"baza": "2", # lub "2"
|
||||
}
|
||||
|
||||
# Tworzymy sesję
|
||||
s = requests.Session()
|
||||
|
||||
# Logujemy się
|
||||
resp = s.post(LOGIN_URL, data=DANE_LOGOWANIA)
|
||||
if "Zaloguj się" in resp.text:
|
||||
print("❌ Logowanie nieudane — sprawdź login/hasło")
|
||||
else:
|
||||
print("✅ Zalogowano poprawnie")
|
||||
|
||||
# Pobieramy stronę po zalogowaniu
|
||||
url = "http://192.168.0.152/mayo2/index.php?id_zestawu=32574&id_zamowienia=7466&modul=14&pozycja="
|
||||
page = s.get(url)
|
||||
page.encoding = "utf-8"
|
||||
|
||||
soup = BeautifulSoup(page.text, "html.parser")
|
||||
|
||||
# Szukamy modelu
|
||||
model_input = soup.find("input", {"name": "s_nr_kat"})
|
||||
model = model_input.get("value") if model_input else None
|
||||
|
||||
print("Model:", model)
|
||||
41
app3.py
41
app3.py
@@ -1,41 +0,0 @@
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
# 1) jeśli masz body jako string:
|
||||
# html = "<body>....</body>"
|
||||
|
||||
# 2) albo wczytaj z pliku lokalnego:
|
||||
with open("guitar2.html", "r", encoding="utf-8") as f:
|
||||
html = f.read()
|
||||
|
||||
soup = BeautifulSoup(html, "html.parser")
|
||||
|
||||
# model — najpierw input[name="s_nr_kat"]
|
||||
model = None
|
||||
inp = soup.find("input", {"name": "s_nr_kat"})
|
||||
if inp and inp.has_attr("value"):
|
||||
model = inp["value"].strip()
|
||||
|
||||
# jeśli trzeba, fallback: znajdź <b>Model</b> i pobierz input w następnym <td>
|
||||
if not model:
|
||||
b = next((b for b in soup.find_all("b") if b.get_text(strip=True).lower() == "model"), None)
|
||||
if b:
|
||||
td = b.find_parent("td")
|
||||
if td:
|
||||
next_td = td.find_next_sibling("td")
|
||||
if next_td:
|
||||
inp2 = next_td.find("input")
|
||||
if inp2 and inp2.has_attr("value"):
|
||||
model = inp2["value"].strip()
|
||||
|
||||
# nr zamówienia — span.czarnobiale (może zawierać <b>)
|
||||
order = None
|
||||
span = soup.find("span", class_="czarnobiale")
|
||||
if span:
|
||||
order = span.get_text(strip=True)
|
||||
|
||||
# dodatkowe oczyszczanie (usuwa ewentualne spacje)
|
||||
if order:
|
||||
order = order.replace("\n", " ").strip()
|
||||
|
||||
print("Model:", model)
|
||||
print("Nr zam.:", order)
|
||||
10
config.py
Normal file
10
config.py
Normal file
@@ -0,0 +1,10 @@
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv()
|
||||
|
||||
DOC_NAME = os.getenv("DOC_NAME")
|
||||
MAYO_URL = os.getenv("MAYO_URL")
|
||||
LOGIN = os.getenv("MAYO_LOGIN")
|
||||
PASSWORD = os.getenv("MAYO_PASSWORD")
|
||||
RESULT_DOC = "gitary 2025"
|
||||
15
config.yaml
Normal file
15
config.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
name: GoogleSheet Bot
|
||||
version: "1.0.0"
|
||||
slug: googlesheet_bot
|
||||
description: Bot do automatyzacji zadań w Arkuszach Google.
|
||||
arch:
|
||||
- aarch64
|
||||
- amd64
|
||||
- armhf
|
||||
- armv7
|
||||
- i386
|
||||
init: false
|
||||
startup: application
|
||||
boot: auto
|
||||
options: {}
|
||||
schema: []
|
||||
1
crontab
Normal file
1
crontab
Normal file
@@ -0,0 +1 @@
|
||||
0 9,13,16 * * * cd /app && /usr/local/bin/python main.py
|
||||
10
docker-compose.yml
Normal file
10
docker-compose.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
version: '3.8'
|
||||
services:
|
||||
gsheet-bot:
|
||||
build: .
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./credentials.json:/app/credentials.json:ro
|
||||
environment:
|
||||
- TZ=Europe/Warsaw
|
||||
|
||||
11
entrypoint.sh
Normal file
11
entrypoint.sh
Normal file
@@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Load the cron job
|
||||
crontab /app/crontab
|
||||
|
||||
# Create the log file and set permissions
|
||||
touch /var/log/cron.log
|
||||
chmod 0666 /var/log/cron.log
|
||||
|
||||
# Start cron in the foreground
|
||||
cron -f
|
||||
@@ -1,3 +1,4 @@
|
||||
import logging
|
||||
import gspread
|
||||
from google.oauth2.service_account import Credentials
|
||||
|
||||
@@ -11,7 +12,7 @@ class GSheetAPI:
|
||||
"""Inicjalizuje klienta API przy tworzeniu obiektu."""
|
||||
creds = Credentials.from_service_account_file(credentials_file, scopes=SCOPES)
|
||||
self.client = gspread.authorize(creds)
|
||||
print("✅ Połączono z Google Sheets API.")
|
||||
logging.info("✅ Połączono z Google Sheets API.")
|
||||
|
||||
def list_sheets(self, doc_name):
|
||||
"""Zwraca listę arkuszy w danym dokumencie."""
|
||||
@@ -32,9 +33,9 @@ class GSheetAPI:
|
||||
try:
|
||||
ws = spreadsheet.worksheet(sheet_name)
|
||||
except gspread.exceptions.WorksheetNotFound:
|
||||
print(f"➕ Tworzę nowy arkusz: {sheet_name}")
|
||||
logging.info(f"➕ Tworzę nowy arkusz: {sheet_name}")
|
||||
ws = spreadsheet.add_worksheet(title=sheet_name, rows=100, cols=10)
|
||||
ws.append_row(["#", "Link", "Nr zamówienia", "Model", "Wykończenie", "Kolor Top", "Kolor Body", "Kolor Neck", "Kolor Head", "Finish"])
|
||||
ws.append_row(["#", "Link", "Nr zamówienia", "Model", "Wykończenie", "Kolor Top", "Kolor Body", "Kolor Neck", "Kolor Head", "Finish K/C", "Finish S"])
|
||||
return ws
|
||||
|
||||
def batch_append_unique_rows(self, doc_name, sheet_name, rows_data):
|
||||
@@ -43,38 +44,35 @@ class GSheetAPI:
|
||||
których nr zamówienia (kolumna 3) już istnieje.
|
||||
"""
|
||||
if not rows_data:
|
||||
print("ℹ️ Brak danych do dodania.")
|
||||
logging.info("ℹ️ Brak danych do dodania.")
|
||||
return
|
||||
|
||||
ws = self.ensure_worksheet(doc_name, sheet_name)
|
||||
|
||||
# 1. Pobierz wszystkie istniejące numery zamówień w JEDNYM zapytaniu
|
||||
print("🔍 Sprawdzam istniejące numery zamówień w arkuszu docelowym...")
|
||||
logging.info("🔍 Sprawdzam istniejące numery zamówień w arkuszu docelowym...")
|
||||
# existing_orders = set(ws.col_values(3))
|
||||
existing_orders = {str(x).strip() for x in ws.col_values(3)}
|
||||
|
||||
print(f"Znaleziono {len(existing_orders)} istniejących numerów.\n existing_orders: {existing_orders}")
|
||||
logging.debug(f"Znaleziono {len(existing_orders)} istniejących numerów.\n existing_orders: {existing_orders}")
|
||||
|
||||
# 2. Filtruj nowe wiersze, aby znaleźć tylko te unikalne
|
||||
unique_rows_to_add = []
|
||||
for row in rows_data:
|
||||
order_number = str(row[2]).strip()
|
||||
# print(f"order_number: '{order_number}'", end="")
|
||||
if order_number not in existing_orders:
|
||||
# print(f" not in existing_order!", end="")
|
||||
unique_rows_to_add.append(row)
|
||||
# Dodaj nowo dodany numer do seta, aby uniknąć duplikatów w ramach jednej paczki
|
||||
existing_orders.add(order_number)
|
||||
# print(" ")
|
||||
|
||||
# 3. Dodaj wszystkie unikalne wiersze w JEDNYM zapytaniu
|
||||
if unique_rows_to_add:
|
||||
print(f"📝 Dodaję {len(unique_rows_to_add)} nowych unikalnych wierszy do arkusza {sheet_name}...")
|
||||
logging.info(f"📝 Dodaję {len(unique_rows_to_add)} nowych unikalnych wierszy do arkusza {sheet_name}...")
|
||||
ws.append_rows(unique_rows_to_add, value_input_option="USER_ENTERED") # type: ignore
|
||||
print("✅ Zakończono dodawanie.")
|
||||
logging.info("✅ Zakończono dodawanie.")
|
||||
else:
|
||||
print("ℹ️ Nie znaleziono żadnych nowych wierszy do dodania.")
|
||||
logging.info("ℹ️ Nie znaleziono żadnych nowych wierszy do dodania.")
|
||||
|
||||
skipped_count = len(rows_data) - len(unique_rows_to_add)
|
||||
if skipped_count > 0:
|
||||
print(f"⏭️ Pominięto {skipped_count} wierszy, które już istniały w arkuszu.")
|
||||
logging.info(f"⏭️ Pominięto {skipped_count} wierszy, które już istniały w arkuszu.")
|
||||
128
guitar1.html
128
guitar1.html
@@ -1,128 +0,0 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<form name="set_data" method="post"
|
||||
action="index.php?modul=14&update=true&id_zestawu=32574&id_zamowienia=7466"></form>
|
||||
<td bgcolor="#D9E0EA" width="50"> <b>Grupa</b></td>
|
||||
<td width="220" bgcolor="#F2ECE6"> <select name="s_grupa">
|
||||
<option selected="" value="7">Gitary elektryczne</option>
|
||||
<option value="8">Gitary basowe</option>
|
||||
<option value="9">Gitary klasyczne</option>
|
||||
<option value="10">Gitary akustyczne</option>
|
||||
</select></td>
|
||||
<td width="50" bgcolor="#D9E0EA"> <b>Model</b> </td>
|
||||
<td colspan="1" width="300" bgcolor="#F2ECE6"> <input style="width:97%;" name="s_nr_kat" type="text"
|
||||
value="Regius 7"></td>
|
||||
<td bgcolor="#D9E0EA" width="50"> <b>Nr ser.</b> </td>
|
||||
<td bgcolor="#F2ECE6" colspan="1"> <input type="text" style="width:97%;" name="serial_num"
|
||||
value="RF2503051">
|
||||
</td>
|
||||
<td bgcolor="#D9E0EA" witdh="50" colspan="2"><a href="javascript:set_data.submit();"><b>DZZ</b></a></td>
|
||||
<td colspan="4" bgcolor="#F2ECE6"><input onclick="NewCal('dzz','yyyymmdd',false, 24);" type="text"
|
||||
style="width:102px;font-size:90%;padding:0px;" id="dzz" name="dzz" value="2023-04-17"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td bgcolor="#D9E0EA"> <b>Opis</b></td>
|
||||
<td colspan="3" bgcolor="#F2ECE6"><input style="margin-left:5px;" size="60" name="s_nazwa" type="text"
|
||||
value="H-H/FlamedAlder/CurlyPoplar4A/Ebony/11-Maple/T-DRED-G"></td>
|
||||
<td width="10" bgcolor="#D9E0EA"> <b>Odbiorca</b></td>
|
||||
<td bgcolor="#F2ECE6"> <input style="width:97%;" name="s_odbiorca" type="text" value="PO-77242"></td>
|
||||
<td bgcolor="#D9E0EA" witdh="50"> <b>P</b></td>
|
||||
<td bgcolor="#F2ECE6"><a href="javascript:potwierdz_zestaw()" class="Tips2 link_" title=""><span
|
||||
style="color:red;font-size: 18px;">■</span></a><input type="checkbox" name="status_p"
|
||||
id="cb_status_p" style="display:none;"></td>
|
||||
<td width="30" bgcolor="#D9E0EA"> <b>NTB </b> </td>
|
||||
<td bgcolor="#F2ECE6"><input type="checkbox" name="custom" checked=""></td>
|
||||
<td width="35" bgcolor="#D9E0EA"> <b>CITES </b> </td>
|
||||
<td bgcolor="#F2ECE6"><input type="checkbox" id="cites_cb" name="cites_cb" onchange="cites_cb_change();"></td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td colspan="12" align="center" bgcolor="#f9f9f9">
|
||||
<hr>
|
||||
<div id="dodaj_pozycje"><select class="button1" name="grupa"
|
||||
onchange="document.forms['addd'].grupa.value=this.options[this.options.selectedIndex].value;addd.submit();">
|
||||
<option value="Dodaj">Dodaj element</option>
|
||||
<option value="20">AKCESORIA - Kolor</option>
|
||||
<option value="48">DREWNO - Główka</option>
|
||||
<option value="79">DREWNO - Korpus</option>
|
||||
<option value="15">DREWNO - Podstrunnica</option>
|
||||
<option value="13">DREWNO - Szyjka</option>
|
||||
<option value="78">DREWNO - Top</option>
|
||||
<option value="12">DREWNO - Top + Korpus</option>
|
||||
<option value="37">ELEKTRONIKA</option>
|
||||
<option value="25">Gałki</option>
|
||||
<option value="62">KOLOR - Główka</option>
|
||||
<option value="60">KOLOR - Korpus</option>
|
||||
<option value="61">KOLOR - Szyjka</option>
|
||||
<option value="59">KOLOR - Top</option>
|
||||
<option value="82">KOLOR - Wykończenie [K/C]</option>
|
||||
<option value="81">KOLOR - Wykończenie [S]</option>
|
||||
<option value="36">KONFIGURACJA - Potencjometry</option>
|
||||
<option value="14">KONFIGURACJA - Przetworniki</option>
|
||||
<option value="53">KONFIGURACJA - Puszka na bat.</option>
|
||||
<option value="11">Konstrukcja</option>
|
||||
<option value="24">LAMÓWKA (binding)</option>
|
||||
<option value="27">LAMÓWKA (binding) / Kolor</option>
|
||||
<option value="77">LOGO</option>
|
||||
<option value="83">MARKERY - BOK</option>
|
||||
<option value="84">MARKERY - FRONT</option>
|
||||
<option value="17">MARKERY - STARY</option>
|
||||
<option value="45">MOSTEK - Bas</option>
|
||||
<option value="16">MOSTEK - Gitara</option>
|
||||
<option value="43">MOSTEK - Kostki</option>
|
||||
<option value="51">NUMERY SERYJNE</option>
|
||||
<option value="57">Osłony, Blachy</option>
|
||||
<option value="76">PLEK</option>
|
||||
<option value="21">PŁYTKI - Kolor</option>
|
||||
<option value="73">PROFIL SZYJKI</option>
|
||||
<option value="50">PROGI</option>
|
||||
<option value="19">PROGI - Ilość</option>
|
||||
<option value="26">PRZEŁĄCZNIKI I GNIAZDA</option>
|
||||
<option value="34">PRZETWORNIKI - Bas</option>
|
||||
<option value="33">PRZETWORNIKI - Gitara</option>
|
||||
<option value="55">Radius</option>
|
||||
<option value="58">Ramki</option>
|
||||
<option value="72">Scalloping</option>
|
||||
<option value="42">Siodełko</option>
|
||||
<option value="54">Skala</option>
|
||||
<option value="67">STROIKI - Bas</option>
|
||||
<option value="38">STROIKI - Gitara</option>
|
||||
<option value="74">Strój</option>
|
||||
<option value="40">Struny</option>
|
||||
<option value="47">WERSJA</option>
|
||||
<option value="75">WYKOŃCZENIE / LAKIER</option>
|
||||
<option value="63">WYMIARY</option>
|
||||
<option value="41">WYPOSAŻENIE DODATKOWE</option>
|
||||
</select> </div> <!--<input class="button1" type="button" value="Changelog"
|
||||
onclick="javascript:okno('view_changelog.php?id_zestawu=32574&id_zamowienia=7466&pozycja=', 'Zamówienie', 730, 900)">
|
||||
-->
|
||||
<input class="button1" type="button" value="Potwierdzenie A4"
|
||||
onclick="javascript:okno('cirrus_print.php?pattern=3&id_zestawu=32574&id_zamowienia=7466&pozycja=', 'Druk', 680, 730)"
|
||||
)"="">
|
||||
|
||||
|
||||
<input class="button1" type="button" value="Potwierdzenie COA"
|
||||
onclick="javascript:okno('cirrus_print.php?pattern=8&id_zestawu=32574&id_zamowienia=7466&pozycja=', 'Druk', 680, 730)"
|
||||
)"="">
|
||||
|
||||
<input class="button1" type="button" value="Wydruk produkcja"
|
||||
onclick="javascript:okno('view_set_prn2.php?id_zestawu=32574&id_zamowienia=7466&pozycja=', 'Zamówienie', 730, 900)">
|
||||
|
||||
<input class="button1" type="button" value="Wydruk składalnia"
|
||||
onclick="javascript:okno('view_set_prn4.php?id_zestawu=32574&id_zamowienia=7466&pozycja=', 'Zamówienie', 730, 750)">
|
||||
|
||||
<input class="button1" type="button" value="Wydruk pomniejszony"
|
||||
onclick="javascript:okno('accesory_list_prn.php?id_zestawu=32574&id_zamowienia=7466&pozycja=', 'Zamówienie', 730, 750)">
|
||||
|
||||
<!--<input class="button1" type="button" value="Zapisz formularz" onclick="javascript:set_data.submit()">-->
|
||||
<input class="button1" type="submit" value="Zapisz formularz" onclick="javascript:set_data.submit()">
|
||||
|
||||
<input class="button1" type="button" value=" Powrót "
|
||||
onclick="javascript:document.location.href='index.php?modul=4&id_zamowienia=7466'">
|
||||
<hr>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
378
guitar2.html
378
guitar2.html
@@ -1,378 +0,0 @@
|
||||
<body id="cialo" onload="init()">
|
||||
<!-- <div id="calBody">calBody</div> -->
|
||||
|
||||
<div id="content">
|
||||
|
||||
<div id="top" style="vertical-align: top">
|
||||
<table style="color:white; font-size:80%; width:100%;" cellpadding="2" cellspacing="0"><tbody><tr>
|
||||
<td width="40" style="padding-right:0px;"><img src="mayo-logo.png" alt="" style="max-height:90px;height:90px;margin-top:5px;margin-bottom:6px;"></td>
|
||||
<td valign="bottom" style="padding-bottom:8px;padding-left:20px;">Mayones Guitars & Basses - System Obsługi Zamówień</td>
|
||||
<td valign="middle" style=";padding-right:9px;text-align: right;">
|
||||
<a href="logout.php" style="color:white;">Wyloguj: <b>
|
||||
<span style="font-size: 16px;">
|
||||
kielpint </span></b>
|
||||
</a>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</div>
|
||||
|
||||
<table cellpadding="0" cellspacing="0"><tbody><tr>
|
||||
<td valign="top">
|
||||
<div id="skroty"><ul>
|
||||
<!-- <br style="line-height:1px;"> -->
|
||||
|
||||
<li style="padding-top:0px;padding-bottom:0px;"><a href="index.php">Zamówienia</a></li><li><a href="index.php?modul=6&">Gitary</a></li><li><a href="index.php?modul=25&">Gitary zamówione</a></li><li><a href="index.php?modul=49&">Zlecenia</a></li><li><a href="index.php?modul=56&">Listy produkcyjne</a></li><li><a href="index.php?modul=11&f_grupa=0">Elementy</a></li><li><a href="index.php?modul=3&">Akcesoria</a></li><li><a href="index.php?modul=48&">Kategorie</a></li><li><a href="index.php?modul=13&">Grupy</a></li><li><a href="index.php?modul=26&">Serie</a></li><li><a href="index.php?modul=41&">Kolory</a></li><li><a href="index.php?modul=28&">Dostawcy</a></li><li><a href="index.php?modul=54&">Wzorce wydruku</a></li><li><a href="index.php?modul=55&">Pracownicy</a></li><li style="padding-top:10px;padding-bottom:10px;"><a class="wew" href="index.php?modul=50&">Zamówienia wew.</a></li><li style="padding-top:0px;padding-bottom:10px;"><a href="http://serwis.mayones.com/" style="color:#E91E63 ;">SERWIS</a></li><li></li><li><a href="logout.php" style="color:green;">Wyloguj (kielpint)</a></li><li><a href="index.php?modul=99&" style="color:green;">Zmień hasło</a></li><ul> <br></ul></ul></div>
|
||||
</td>
|
||||
|
||||
<td valign="top">
|
||||
<div id="tresc">
|
||||
|
||||
|
||||
<script type="text/javascript" src="js/datetimepicker.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
|
||||
function potwierdz_zestaw() {
|
||||
document.getElementById("cb_status_p").checked=true;
|
||||
set_data.submit();
|
||||
}
|
||||
|
||||
|
||||
function view_img(img_name) {
|
||||
//document[img_name].src = upForm.imgfile.value;
|
||||
//document[img_name].width = 150;
|
||||
//$(img_name).src = $('imgfile').value;
|
||||
//alert($('imgfile').value);
|
||||
//alert($('imgfile').getProperty('src'));
|
||||
//var imgProps = $('myImage').getProperty('src'); // returns: 'mootools.png'.
|
||||
//$(img_name).set('style','width:150px;');
|
||||
}
|
||||
|
||||
function cites_cb_change() {
|
||||
if ($('cites_cb').checked ) {
|
||||
$$('.cites_block').removeClass('block_hide');
|
||||
if ($('cites_status').value==0) $('cites_status').value=1;
|
||||
}
|
||||
else {
|
||||
$$('.cites_block').addClass('block_hide');
|
||||
$('cites_status').value=0;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<center>
|
||||
<table class="std" style="margin-top:10px;"><tbody><tr><td valign="top" bgcolor="#D9E0EA" width="100"><b> Dot. zam.:</b></td><td valign="top" bgcolor="#F2ECE6" align="center"> <span class="czarnobiale"> <b>0077/2024/1 </b></span><b> </b> z datą realizacji: <b><span class="czarnobiale" style="background-color: dimgrey;">2024-02-29</span></b></td><td valign="top" align="center" bgcolor="#F2ECE6" width="35%"><span style="font-weight:bold;">USA | Chicago Music Exchange | USA</span></td><td rowspan="2" class=" Tips2 row_" style="background-color: yellow;text-align: center;" title=""><a href="javascript:okno('comment_pick6.php?id_zestawu=32574', 'Komentarz', 730, 330);sprawdzaj2();" class="link_"><span>-</span></a></td></tr></tbody></table><table class="std" style="margin-top:10px;"><tbody><tr><form name="set_data" method="post" action="index.php?modul=14&update=true&id_zestawu=32574&id_zamowienia=7466"></form><td bgcolor="#D9E0EA" width="50"> <b>Grupa</b></td><td width="220" bgcolor="#F2ECE6"> <select name="s_grupa"><option selected="" value="7">Gitary elektryczne</option><option value="8">Gitary basowe</option><option value="9">Gitary klasyczne</option><option value="10">Gitary akustyczne</option></select></td><td width="50" bgcolor="#D9E0EA"> <b>Model</b> </td><td colspan="1" width="300" bgcolor="#F2ECE6"> <input style="width:97%;" name="s_nr_kat" type="text" value="Regius 7"></td><td bgcolor="#D9E0EA" width="50"> <b>Nr ser.</b> </td><td bgcolor="#F2ECE6" colspan="1"> <input type="text" style="width:97%;" name="serial_num" value="RF2503051">
|
||||
</td><td bgcolor="#D9E0EA" witdh="50" colspan="2"><a href="javascript:set_data.submit();"><b>DZZ</b></a></td><td colspan="4" bgcolor="#F2ECE6"><input onclick="NewCal('dzz','yyyymmdd',false, 24);" type="text" style="width:102px;font-size:90%;padding:0px;" id="dzz" name="dzz" value="2023-04-17"></td></tr><tr><td bgcolor="#D9E0EA"> <b>Opis</b></td><td colspan="3" bgcolor="#F2ECE6"><input style="margin-left:5px;" size="60" name="s_nazwa" type="text" value="H-H/FlamedAlder/CurlyPoplar4A/Ebony/11-Maple/T-DRED-G"></td><td width="10" bgcolor="#D9E0EA"> <b>Odbiorca</b></td><td bgcolor="#F2ECE6"> <input style="width:97%;" name="s_odbiorca" type="text" value="PO-77242"></td><td bgcolor="#D9E0EA" witdh="50"> <b>P</b></td><td bgcolor="#F2ECE6"><a href="javascript:potwierdz_zestaw()" class="Tips2 link_" title=""><span style="color:red;font-size: 18px;">■</span></a><input type="checkbox" name="status_p" id="cb_status_p" style="display:none;"></td><td width="30" bgcolor="#D9E0EA"> <b>NTB </b> </td> <td bgcolor="#F2ECE6"><input type="checkbox" name="custom" checked=""></td>
|
||||
<td width="35" bgcolor="#D9E0EA"> <b>CITES </b> </td>
|
||||
<td bgcolor="#F2ECE6"><input type="checkbox" id="cites_cb" name="cites_cb" onchange="cites_cb_change();"></td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td colspan="12" align="center" bgcolor="#f9f9f9">
|
||||
<hr>
|
||||
<div id="dodaj_pozycje"><select class="button1" name="grupa" onchange="document.forms['addd'].grupa.value=this.options[this.options.selectedIndex].value;addd.submit();"><option value="Dodaj">Dodaj element</option><option value="20">AKCESORIA - Kolor</option><option value="48">DREWNO - Główka</option><option value="79">DREWNO - Korpus</option><option value="15">DREWNO - Podstrunnica</option><option value="13">DREWNO - Szyjka</option><option value="78">DREWNO - Top</option><option value="12">DREWNO - Top + Korpus</option><option value="37">ELEKTRONIKA</option><option value="25">Gałki</option><option value="62">KOLOR - Główka</option><option value="60">KOLOR - Korpus</option><option value="61">KOLOR - Szyjka</option><option value="59">KOLOR - Top</option><option value="82">KOLOR - Wykończenie [K/C]</option><option value="81">KOLOR - Wykończenie [S]</option><option value="36">KONFIGURACJA - Potencjometry</option><option value="14">KONFIGURACJA - Przetworniki</option><option value="53">KONFIGURACJA - Puszka na bat.</option><option value="11">Konstrukcja</option><option value="24">LAMÓWKA (binding)</option><option value="27">LAMÓWKA (binding) / Kolor</option><option value="77">LOGO</option><option value="83">MARKERY - BOK</option><option value="84">MARKERY - FRONT</option><option value="17">MARKERY - STARY</option><option value="45">MOSTEK - Bas</option><option value="16">MOSTEK - Gitara</option><option value="43">MOSTEK - Kostki</option><option value="51">NUMERY SERYJNE</option><option value="57">Osłony, Blachy</option><option value="76">PLEK</option><option value="21">PŁYTKI - Kolor</option><option value="73">PROFIL SZYJKI</option><option value="50">PROGI</option><option value="19">PROGI - Ilość</option><option value="26">PRZEŁĄCZNIKI I GNIAZDA</option><option value="34">PRZETWORNIKI - Bas</option><option value="33">PRZETWORNIKI - Gitara</option><option value="55">Radius</option><option value="58">Ramki</option><option value="72">Scalloping</option><option value="42">Siodełko</option><option value="54">Skala</option><option value="67">STROIKI - Bas</option><option value="38">STROIKI - Gitara</option><option value="74">Strój</option><option value="40">Struny</option><option value="47">WERSJA</option><option value="75">WYKOŃCZENIE / LAKIER</option><option value="63">WYMIARY</option><option value="41">WYPOSAŻENIE DODATKOWE</option></select> </div> <!--<input class="button1" type="button" value="Changelog"
|
||||
onclick="javascript:okno('view_changelog.php?id_zestawu=32574&id_zamowienia=7466&pozycja=', 'Zamówienie', 730, 900)">
|
||||
-->
|
||||
<input class="button1" type="button" value="Potwierdzenie A4" onclick="javascript:okno('cirrus_print.php?pattern=3&id_zestawu=32574&id_zamowienia=7466&pozycja=', 'Druk', 680, 730)" )"="">
|
||||
|
||||
|
||||
<input class="button1" type="button" value="Potwierdzenie COA" onclick="javascript:okno('cirrus_print.php?pattern=8&id_zestawu=32574&id_zamowienia=7466&pozycja=', 'Druk', 680, 730)" )"="">
|
||||
|
||||
<input class="button1" type="button" value="Wydruk produkcja" onclick="javascript:okno('view_set_prn2.php?id_zestawu=32574&id_zamowienia=7466&pozycja=', 'Zamówienie', 730, 900)">
|
||||
|
||||
<input class="button1" type="button" value="Wydruk składalnia" onclick="javascript:okno('view_set_prn4.php?id_zestawu=32574&id_zamowienia=7466&pozycja=', 'Zamówienie', 730, 750)">
|
||||
|
||||
<input class="button1" type="button" value="Wydruk pomniejszony" onclick="javascript:okno('accesory_list_prn.php?id_zestawu=32574&id_zamowienia=7466&pozycja=', 'Zamówienie', 730, 750)">
|
||||
|
||||
<!--<input class="button1" type="button" value="Zapisz formularz" onclick="javascript:set_data.submit()">-->
|
||||
<input class="button1" type="submit" value="Zapisz formularz" onclick="javascript:set_data.submit()">
|
||||
|
||||
<input class="button1" type="button" value=" Powrót " onclick="javascript:document.location.href='index.php?modul=4&id_zamowienia=7466'">
|
||||
<hr>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody></table>
|
||||
<table class="std cites_block block_hide" cellpadding="3" cellspacing="2" style="font-size:70%;margin-bottom:0px;"><tbody><tr><td align="left" style="font-size: 130%;" colspan="7">CITES </td></tr><tr><td bgcolor="bisque">Status: </td><td bgcolor="bisque"><select name="cites_status" id="cites_status" class="button1"><option value="0" selected="">nie wymaga</option><option value="1">CERTYFIKAT | NIEZŁOŻONY</option><option value="2">CERTYFIKAT | ZŁOŻONY</option><option value="3">CERTYFIKAT | GOTOWE</option></select></td><td bgcolor="bisque" style="width:100px;">Data wystąpienia: </td><td bgcolor="bisque"><input onclick="NewCal('cites_data_zl','yyyymmdd',false, 24);" size="12" name="cites_data_zl" id="cites_data_zl" type="text" value=""></td><td bgcolor="bisque" style="width:100px;">Data otrzymania: </td><td bgcolor="bisque"><input onclick="NewCal('cites_data_ot','yyyymmdd',false, 24);" size="12" name="cites_data_ot" id="cites_data_ot" type="text" value=""></td></tr><tr><td bgcolor="bisque"> Komentarz:</td><td colspan="5"><textarea id="komentarz_area" rows="2" cols="99" name="cites_komentarz" type="text"></textarea></td></tr></tbody></table><hr class="cites_block block_hide"><table border="0" width="100%" cellpadding="1" cellspacing="2" class="std"><tbody><tr><td colspan="4" align="left" style="font-size:130%;font-family:verdana;padding-top:10px;padding-bottom:3px;">SZYJKA</td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=55">Radius </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - <span style="color:#117711;">GITARA SETIUS/REGIUS/CUSTOM</span> / 16 </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195847&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195847&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=13">DREWNO - Szyjka </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - Klon amerykański-Mahoń-Wenge-Amazakoe (11 części) </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195830&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195830&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=15">DREWNO - Podstrunnica </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - <span style="color:#117711;">EBN</span> / EBONY (Heban) </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195829&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195829&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=48">DREWNO - Główka </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"><span style="color:red;"> - <span style="color:red;">CP-4A</span> / Curly Poplar 4A </span></td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195861&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195861&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=63">WYMIARY </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - <span style="color:#117711;">GITARA REGIUS 7/PRO 7</span> / Szyjka szerokość I : 49 mm </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195842&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195842&id_zamowienia=7466')">Usuń</a></td></tr><tr><td bgcolor="#F1F1E9"> - <span style="color:#117711;">GITARA REGIUS 7/PRO 7</span> / Szyjka szerokość XII : 62 mm </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195843&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195843&id_zamowienia=7466')">Usuń</a></td></tr><tr><td bgcolor="#F1F1E9"> - <span style="color:#117711;">GITARA REGIUS 7/PRO 7</span> / Szyjka szerokość XXIV : 69 mm </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195844&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195844&id_zamowienia=7466')">Usuń</a></td></tr><tr><td bgcolor="#F1F1E9"> - <span style="color:#117711;">GITARA SETIUS/REGIUS/CUSTOM</span> / Szyjka grubość I : 20 mm </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195845&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195845&id_zamowienia=7466')">Usuń</a></td></tr><tr><td bgcolor="#F1F1E9"> - <span style="color:#117711;">GITARA SETIUS/REGIUS/CUSTOM</span> / Szyjka grubość XII : 21 mm </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195846&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195846&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=83">MARKERY - BOK </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"><span style="color:red;"> - <span style="color:red;">SB-20</span> / Kropeczki (boczne) / 2mm / Fluorescencyjne / Niebieskie / Nie do jasnych krawędzi </span></td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195827&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195827&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=84">MARKERY - FRONT </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - Bez markerów </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195859&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195859&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=50">PROGI </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - FERD WAGNER / <span style="color:#117711;">FW 9685 / 667851</span> / Stainless Steel / 2,80×3,34 (1,45) / EXTRA JUMBO [JD brak] / <b>STANDARD</b> </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195852&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195852&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td colspan="4" align="left" style="font-size:130%;font-family:verdana;padding-top:10px;padding-bottom:3px;">KONSTRUKCJA</td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=11">Konstrukcja </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - neck-thru-body (szyjka przez korpus) </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195832&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195832&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=54">Skala </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - <span style="color:#117711;">GITARA STANDARD</span> / 645mm (25,4") </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195848&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195848&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td colspan="4" align="left" style="font-size:130%;font-family:verdana;padding-top:10px;padding-bottom:3px;">OGÓLNE</td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=24">LAMÓWKA (binding) </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - Korpus / Szyjka / Główka </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195850&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195850&id_zamowienia=7466')">Usuń</a></td></tr><tr><td bgcolor="#F1F1E9"><span style="color:red;"> - 3 częściowa / 2 x ABS Czarny + Akryl Czarny Perloid </span></td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195857&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195857&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td colspan="4" align="left" style="font-size:130%;font-family:verdana;padding-top:10px;padding-bottom:3px;">KORPUS</td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=78">DREWNO - Top </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"><span style="color:red;"> - <span style="color:red;">CP-4A</span> / Curly Poplar 4A </span></td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195862&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195862&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=79">DREWNO - Korpus </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"><span style="color:red;"> - <span style="color:red;">ALD-F</span> / FLAMED ALDER (body) / Olcha Płomienista </span></td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195826&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195826&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=14">KONFIGURACJA - Przetworniki </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - H-H </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195828&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195828&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=36">KONFIGURACJA - Potencjometry </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"><span style="color:red;"> - <span style="color:red;">CG-05T</span> / 1 x Volume - W MIEJSCU TONE </span></td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195839&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195839&id_zamowienia=7466')">Usuń</a></td></tr><tr><td bgcolor="#F1F1E9"> - Przełącznik Ślizgowy </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195860&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195860&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td colspan="4" align="left" style="font-size:130%;font-family:verdana;padding-top:10px;padding-bottom:3px;">KOLOR</td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=59">KOLOR - Top </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"><span style="color:red;"> - <span style="color:red;">T-DRED-G</span> / Trans Dirty-Red Gloss (transparent brudny czerwony połysk) </span></td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195858&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195858&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=60">KOLOR - Korpus </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"><span style="color:red;"> - <span style="color:red;">T-ANTIQUE-BLK-M</span> / Antique Black Matt </span></td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195854&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195854&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=61">KOLOR - Szyjka </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"><span style="color:red;"> - <span style="color:red;">T-ANTIQUE-BLK-M</span> / Antique Black Matt </span></td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195863&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195863&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=62">KOLOR - Główka </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"><span style="color:red;"> - <span style="color:red;">T-DRED-G</span> / Trans Dirty-Red Gloss (transparent brudny czerwony połysk) </span></td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195833&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195833&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=82">KOLOR - Wykończenie [K/C] </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - <span style="color:#117711;">G+M</span> / Gloss+Matt </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195836&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195836&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td colspan="4" align="left" style="font-size:130%;font-family:verdana;padding-top:10px;padding-bottom:3px;">ELEKTRONIKA</td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=33">PRZETWORNIKI - Gitara </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - VELVETRONE / <span style="color:#117711;">H15+H13-7-SET / STD</span> / Ironside + Solium | 7 string | Humbucker Set </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1196020&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1196020&id_zamowienia=7466')">Usuń</a></td></tr><tr><td bgcolor="#F1F1E9"><span style="color:red;"> - / <span style="color:red;">SPECIAL</span> / - PINS: GOLD SCREWS </span></td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1196021&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1196021&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=37">ELEKTRONIKA </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - MAYONES / Treble Bleed Mod </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195849&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195849&id_zamowienia=7466')">Usuń</a></td></tr><tr><td bgcolor="#F1F1E9"> - BOURNS / <span style="color:#117711;">PDA241-HTR01-504A2 | STD</span> / Potencjometr / Volume / 500kA </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1342399&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1342399&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=26">PRZEŁĄCZNIKI I GNIAZDA </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - SWITCHCRAFT / <span style="color:#117711;">C12B</span> / Gniazdo Jack </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195834&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195834&id_zamowienia=7466')">Usuń</a></td></tr><tr><td bgcolor="#F1F1E9"> - ELECTROSWITCH / <span style="color:#117711;">5-way | STD</span> / Przełącznik / Electroswitch 5-poz Multipole (ślizgowy) - Konieczna REZERWACJA [wyklucza split na volume push-pull] </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1342400&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1342400&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td colspan="4" align="left" style="font-size:130%;font-family:verdana;padding-top:10px;padding-bottom:3px;">AKCESORIA</td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=16">MOSTEK - Gitara </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - HIPSHOT / <span style="color:#117711;">41075B</span> / 7 String / Fixed .175 / BLK </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195853&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195853&id_zamowienia=7466')">Usuń</a></td></tr><tr><td bgcolor="#F1F1E9"><span style="color:red;"> - / <span style="color:red;">HYBRID GLD I</span> / Mieszany/Mixed | BLK+GLD </span></td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195864&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195864&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=38">STROIKI - Gitara </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - HIPSHOT / <span style="color:#117711;">6G000-D07-B</span> / GripLock 3+4 / Black / Regius </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195841&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195841&id_zamowienia=7466')">Usuń</a></td></tr><tr><td bgcolor="#F1F1E9"><span style="color:red;"> - / <span style="color:red;">HYBRID GLD I</span> / Mieszany/Mixed | BLK+GLD </span></td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195865&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195865&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=42">Siodełko </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - <span style="color:#117711;">BT-6700-00</span> / Grafitowe / Graph-Tech BT-6700-00 (do 7-ki) </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195835&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195835&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=25">Gałki </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"><span style="color:red;"> - O-Ring </span></td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195837&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195837&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=20">AKCESORIA - Kolor </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"><span style="color:red;"> - <span style="color:red;">HYBRID GLD I</span> / Mieszany/Mixed | BLK+GLD | (czarny mostek, złote siodełka, złote klucze, czarne motylki, czarne nakrętki, czarne śruby) </span></td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195851&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195851&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr><tr><td colspan="4" align="left" style="font-size:130%;font-family:verdana;padding-top:10px;padding-bottom:3px;">DODATKI</td></tr><tr><td bgcolor="#DFE0E8"><p style="padding:0px;margin:0px;font-size:80%;font-family: verdana;line-height:19px;"><b> <a href="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466&grupa=41">WYPOSAŻENIE DODATKOWE </a></b></p></td><td><table border="0" width="100%" cellpadding="1" cellspacing="0" style="margin:0px;padding:0px;font-size:90%;line-height:17px;"><tbody><tr><td bgcolor="#F1F1E9"> - SCHALLER / <span style="color:#117711;">ZACZEPY</span> / Zaczep Schaller Security Lock BLK (2 szt) </td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1195825&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1195825&id_zamowienia=7466')">Usuń</a></td></tr><tr><td bgcolor="#F1F1E9"><span style="color:red;"> - / <span style="color:red;">CANTO-HYBRID-DD-GUITAR</span> / Mayones Hybrid Guitar Double Deck </span></td><td bgcolor="#e1e1d9" align="center" width="60" style="border-right-color: #FFFFFF; border-right-style: solid; border-right-width: thin">
|
||||
<a href="index.php?id_zestawu=32574&id_kompl=1342403&id_zamowienia=7466&modul=16">Notatka</a></td><td bgcolor="#e1e1d9" align="center" width="60"><a href="javascript:confirmation('Czy na pewno usunąć?','del_unit2.php?id_zestawu=32574&id_kompl=1342403&id_zamowienia=7466')">Usuń</a></td></tr></tbody></table></td></tr></tbody></table><table class="std" style="margin-top:8px;margin-bottom:15px;">
|
||||
<tbody><tr><td align="top" valign="middle" bgcolor="#F2ECE6" width="160"> <a href="javascript:okno('comment_pick3.php?id_zestawu=32574', 'Notatka produkcyjna', 730, 330);sprawdzaj2();">Notatka produkcyjna</a></td>
|
||||
<td colspan="2" valign="top" bgcolor="#ffffff" style="border: 1px solid #000000"><b style="font-family: verdana; font-size: 11.2px;">2x LD113</b></td></tr><tr><td align="left" bgcolor="#F2ECE6" width="80"> Dodatkowe<br> informacje</td><td align="center" bgcolor="#F2ECE6" colspan="2"><textarea name="p_komentarz" cols="90" rows="3" style="color:black;font-weight:bold;"></textarea></td></tr><form method="post" name="koment" action="edit_set.php?id_zestawu=32574&update=true"></form><tr><td bgcolor="#F2ECE6" width="160"> Dodaj element </td><td align="center" bgcolor="#F2ECE6">
|
||||
<form style="margin-bottom:0px;margin-top:0px;" name="addd" method="post" action="index.php?modul=15&id_zestawu=32574&id_zamowienia=7466">
|
||||
<select class="button1" name="grupa" onchange="addd.submit()"><option value="20">AKCESORIA - Kolor</option><option value="48">DREWNO - Główka</option><option value="79">DREWNO - Korpus</option><option value="15">DREWNO - Podstrunnica</option><option value="13">DREWNO - Szyjka</option><option value="78">DREWNO - Top</option><option value="12">DREWNO - Top + Korpus</option><option value="37">ELEKTRONIKA</option><option value="25">Gałki</option><option value="62">KOLOR - Główka</option><option value="60">KOLOR - Korpus</option><option value="61">KOLOR - Szyjka</option><option value="59">KOLOR - Top</option><option value="82">KOLOR - Wykończenie [K/C]</option><option value="81">KOLOR - Wykończenie [S]</option><option value="36">KONFIGURACJA - Potencjometry</option><option value="14">KONFIGURACJA - Przetworniki</option><option value="53">KONFIGURACJA - Puszka na bat.</option><option value="11">Konstrukcja</option><option value="24">LAMÓWKA (binding)</option><option value="27">LAMÓWKA (binding) / Kolor</option><option value="77">LOGO</option><option value="83">MARKERY - BOK</option><option value="84">MARKERY - FRONT</option><option value="17">MARKERY - STARY</option><option value="45">MOSTEK - Bas</option><option value="16">MOSTEK - Gitara</option><option value="43">MOSTEK - Kostki</option><option value="51">NUMERY SERYJNE</option><option value="57">Osłony, Blachy</option><option value="76">PLEK</option><option value="21">PŁYTKI - Kolor</option><option value="73">PROFIL SZYJKI</option><option value="50">PROGI</option><option value="19">PROGI - Ilość</option><option value="26">PRZEŁĄCZNIKI I GNIAZDA</option><option value="34">PRZETWORNIKI - Bas</option><option value="33">PRZETWORNIKI - Gitara</option><option value="55">Radius</option><option value="58">Ramki</option><option value="72">Scalloping</option><option value="42">Siodełko</option><option value="54">Skala</option><option value="67">STROIKI - Bas</option><option value="38">STROIKI - Gitara</option><option value="74">Strój</option><option value="40">Struny</option><option value="47">WERSJA</option><option value="75">WYKOŃCZENIE / LAKIER</option><option value="63">WYMIARY</option><option value="41">WYPOSAŻENIE DODATKOWE</option></select></form></td><td align="center" bgcolor="#F2ECE6" width="150"><input class="button1" type="submit" value="Wybierz"></td></tr></tbody></table>
|
||||
<table class="std" style="margin-top: 0px; padding: 0px; ">
|
||||
<tbody><tr>
|
||||
<td align="left" bgcolor="#DFE0E8" width="120" rowspan="10" valign="middle">
|
||||
Dołącz zdjęcie
|
||||
</td>
|
||||
<form method="post" name="upForm" enctype="multipart/form-data" action="add_foto.php?gotowy=n&set=32574&id_zamowienia=7466&pozycja="></form>
|
||||
<td align="center" bgcolor="#DFE0E8" valign="center">
|
||||
<input type="file" name="imgfile" id="imgfile" onchange="javascript:view_img('img_vv');" size="30" class="button1">
|
||||
</td>
|
||||
<td align="center" bgcolor="#DFE0E8" valign="center" width="150">
|
||||
<input type="Submit" name="upForm" value="Pobierz i zapisz obraz" class="button1">
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
<table class="std" style="margin-top:15px;">
|
||||
<tbody><tr>
|
||||
<td align="center" bgcolor="#f9f9f9">
|
||||
<hr>
|
||||
<input class="button1" type="button" value="Wydruk produkcja" onclick="javascript:okno('view_set_prn2.php?id_zestawu=32574&id_zamowienia=7466&pozycja=', 'Zamówienie', 730, 900)">
|
||||
|
||||
<input class="button1" type="button" value="Wydruk składalnia" onclick="javascript:okno('view_set_prn4.php?id_zestawu=32574&id_zamowienia=7466&pozycja=', 'Zamówienie', 730, 750)">
|
||||
|
||||
<input class="button1" type="button" value="Wydruk pomniejszony" onclick="javascript:okno('accesory_list_prn.php?id_zestawu=32574&id_zamowienia=7466&pozycja=', 'Zamówienie', 730, 750)">
|
||||
|
||||
<input class="button1" type="button" value="Zapisz formularz" onclick="javascript:set_data.submit()">
|
||||
|
||||
<input class="button1" type="button" value=" Powrót " onclick="javascript:document.location.href='index.php?modul=4&id_zamowienia=7466'">
|
||||
<hr>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
<br>
|
||||
<!--
|
||||
<center>
|
||||
<img src='' id='img_vv' name='img_vv' width='0'> <br>
|
||||
<br>
|
||||
</center>
|
||||
-->
|
||||
|
||||
<script type="text/javascript">
|
||||
cites_cb_change();
|
||||
</script>
|
||||
<br><br>
|
||||
</center></div>
|
||||
</td>
|
||||
</tr></tbody></table>
|
||||
</div>
|
||||
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
<br><br><br>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
|
||||
//function login_wp() {
|
||||
|
||||
//alert('login');
|
||||
|
||||
// okno('login_wp.php','edycja', 730, 330);
|
||||
|
||||
//a=window.open("http://serwis.mayones.com")
|
||||
//a.document.write("<div id='mydiv'>test1</div>")
|
||||
// a.document.getElementById("mydiv")
|
||||
|
||||
// o=a.document.getElementById("user_login");
|
||||
// console.log("koniec");
|
||||
// console.log(o);
|
||||
//setTimeout(function(){ a.document.getElementById("user_login").value="dddd"; }, 3000);
|
||||
|
||||
// setTimeout(set_wp_login, <%= BELL_INTERVAL %>)
|
||||
|
||||
// a.document.getElementById("user_login").value="dddd";
|
||||
// }
|
||||
|
||||
|
||||
// cEvents: [
|
||||
// {
|
||||
// title:'Get Groceries',
|
||||
// start:'2009-02-05',
|
||||
// end:'2009-02-06',
|
||||
// location:'Store'
|
||||
// },
|
||||
// {
|
||||
// title:'Party Time',
|
||||
// start:'2009-02-20T23:30:00-06:00',
|
||||
// end:'2009-02-20T24:30:00-06:00',
|
||||
// location:'Da Club'
|
||||
// },
|
||||
// {
|
||||
// title:'Hair Cut',
|
||||
// start:'2009-02-22T13:00:00-06:00',
|
||||
// end:'2009-02-22T13:30:00-06:00',
|
||||
// location:'Cuttin Corral'
|
||||
// }
|
||||
// ]
|
||||
//
|
||||
// c=new Calendar1({calContainer:'calBody'});
|
||||
|
||||
|
||||
// c= new Calendar1({
|
||||
// calContainer:'calBody',
|
||||
// newDate:'8/5/2009',
|
||||
// feedPlugin:'new mecPHPPlugin()'
|
||||
// });
|
||||
|
||||
|
||||
// new Calendar1({
|
||||
// calContainer:'calBody',
|
||||
// newDate:'8/17/2009',
|
||||
// cEvents: [
|
||||
// {
|
||||
// title:'MooTools Events Calendar v0.3.0',
|
||||
// start:'2009-08-05',
|
||||
// end:'2009-08-05',
|
||||
// location:'DansNetwork.com'
|
||||
// },
|
||||
// {
|
||||
// title:'Fly South',
|
||||
// start:'2009-08-01T17:00:00-06:00',
|
||||
// end:'2009-08-01T21:00:00-06:00',
|
||||
// location:'Tampa'
|
||||
// },
|
||||
// {
|
||||
// title:'<a href="http://google.com">Google\'s Cool</a>',
|
||||
// start:'2009-08-09',
|
||||
// end:'2009-08-10',
|
||||
// location:'World Wide'
|
||||
// },
|
||||
// {
|
||||
// title:'Party Time',
|
||||
// start:'2009-08-16T23:30:00-06:00',
|
||||
// end:'2009-08-16T24:30:00-06:00',
|
||||
// location:'Da Club'
|
||||
// },
|
||||
// {
|
||||
// title:'Hair Cut',
|
||||
// start:'2009-08-17T09:00:00-06:00',
|
||||
// end:'2009-08-17T09:30:00-06:00',
|
||||
// location:''
|
||||
// },
|
||||
// {
|
||||
// title:'Oil Change',
|
||||
// start:'2009-08-17T11:00:00-06:00',
|
||||
// end:'2009-08-17T11:30:00-06:00',
|
||||
// location:'Jiffy Lube'
|
||||
// },
|
||||
// {
|
||||
// title:'Gym',
|
||||
// start:'2009-08-17T13:00:00-06:00',
|
||||
// end:'2009-08-17T13:30:00-06:00',
|
||||
// location:''
|
||||
// },
|
||||
// {
|
||||
// title:'Dinner',
|
||||
// start:'2009-08-17T17:00:00-06:00',
|
||||
// end:'2009-08-17T18:30:00-06:00',
|
||||
// location:'Bob Chinns'
|
||||
// },
|
||||
// {
|
||||
// title:'Movie',
|
||||
// start:'2009-08-17T19:00:00-06:00',
|
||||
// end:'2009-08-17T21:30:00-06:00',
|
||||
// location:'Marcus'
|
||||
// },
|
||||
// {
|
||||
// title:'Bedtime',
|
||||
// start:'2009-08-17T23:00:00-05:00',
|
||||
// end:'2009-08-17T23:00:00-05:00',
|
||||
// location:'Home'
|
||||
// }
|
||||
// ]
|
||||
// });
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
old tips
|
||||
|
||||
/* Tips 2 */
|
||||
var Tips2 = new Tips($$('.Tips2'), {
|
||||
initialize:function(){
|
||||
this.fx = new Fx.Style(this.toolTip, 'opacity', {duration: 500, wait: false}).set(0);
|
||||
},
|
||||
onShow: function(toolTip) {
|
||||
this.fx.start(1);
|
||||
},
|
||||
onHide: function(toolTip) {
|
||||
this.fx.start(0);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="windowUnderlay" style="height: 134px; visibility: visible; zoom: 1; opacity: 0.01; display: none;"></div><div id="modalOverlay" style="height: 134px; visibility: hidden; zoom: 1; opacity: 0; position: fixed; display: block;"></div></body>
|
||||
58
logging_config.py
Normal file
58
logging_config.py
Normal file
@@ -0,0 +1,58 @@
|
||||
import logging
|
||||
import sys
|
||||
import os
|
||||
import datetime
|
||||
|
||||
def setup_logging():
|
||||
"""Konfiguruje zaawansowane logowanie z dwoma handlerami i czyszczeniem starych logów."""
|
||||
# 1. Pobierz główny logger, wyczyść istniejące handlery i ustaw najniższy poziom (DEBUG)
|
||||
logger = logging.getLogger()
|
||||
if logger.hasHandlers():
|
||||
logger.handlers.clear()
|
||||
logger.setLevel(logging.DEBUG)
|
||||
|
||||
# 2. Utwórz katalog 'logs', jeśli nie istnieje
|
||||
LOGS_DIR = "logs"
|
||||
if not os.path.exists(LOGS_DIR):
|
||||
os.makedirs(LOGS_DIR)
|
||||
|
||||
# 3. Stwórz i skonfiguruj handler dla konsoli (poziom INFO)
|
||||
console_handler = logging.StreamHandler(sys.stdout)
|
||||
console_handler.setLevel(logging.INFO)
|
||||
console_formatter = logging.Formatter('%(levelname)s - %(message)s')
|
||||
console_handler.setFormatter(console_formatter)
|
||||
logger.addHandler(console_handler)
|
||||
|
||||
# 4. Stwórz i skonfiguruj handler dla pliku (poziom DEBUG)
|
||||
log_filename = datetime.datetime.now().strftime("debug_%Y-%m-%d_%H-%M-%S.log")
|
||||
file_handler = logging.FileHandler(os.path.join(LOGS_DIR, log_filename))
|
||||
file_handler.setLevel(logging.DEBUG)
|
||||
file_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
||||
file_handler.setFormatter(file_formatter)
|
||||
logger.addHandler(file_handler)
|
||||
|
||||
def cleanup_old_logs(log_dir="logs", retention_days=7):
|
||||
"""Usuwa pliki logów starsze niż określona liczba dni."""
|
||||
logging.info(f"Rozpoczynam czyszczenie starych logów (starszych niż {retention_days} dni)...")
|
||||
try:
|
||||
now = datetime.datetime.now()
|
||||
cutoff = now - datetime.timedelta(days=retention_days)
|
||||
files_deleted = 0
|
||||
for filename in os.listdir(log_dir):
|
||||
file_path = os.path.join(log_dir, filename)
|
||||
# Upewnij się, że to plik i nie jest to aktualnie otwarty plik logu
|
||||
if os.path.isfile(file_path) and filename != os.path.basename(file_handler.baseFilename):
|
||||
file_mod_time = datetime.datetime.fromtimestamp(os.path.getmtime(file_path))
|
||||
if file_mod_time < cutoff:
|
||||
os.remove(file_path)
|
||||
files_deleted += 1
|
||||
logging.info(f"Usunięto stary plik logu: {filename}")
|
||||
if files_deleted == 0:
|
||||
logging.info("Nie znaleziono starych logów do usunięcia.")
|
||||
except Exception as e:
|
||||
logging.warning(f"Wystąpił błąd podczas czyszczenia starych logów: {e}")
|
||||
|
||||
# 5. Uruchom funkcję czyszczącą
|
||||
cleanup_old_logs(LOGS_DIR)
|
||||
|
||||
logging.info("Logging został skonfigurowany.")
|
||||
128
main.py
128
main.py
@@ -1,132 +1,28 @@
|
||||
from gsheet_api import GSheetAPI
|
||||
from logging_config import setup_logging
|
||||
from mayo import MayoSession
|
||||
from dotenv import load_dotenv
|
||||
import os
|
||||
import re
|
||||
|
||||
load_dotenv()
|
||||
|
||||
# --- konfiguracja ---
|
||||
DOC_NAME = os.getenv("DOC_NAME")
|
||||
MAYO_URL = os.getenv("MAYO_URL")
|
||||
LOGIN = os.getenv("MAYO_LOGIN")
|
||||
PASSWORD = os.getenv("MAYO_PASSWORD")
|
||||
RESULT_DOC = "gitary 2025"
|
||||
|
||||
def normalize(text):
|
||||
if not text:
|
||||
return ""
|
||||
return re.sub(r"\s+", "", text)
|
||||
|
||||
def get_finish_type(row_data):
|
||||
try:
|
||||
color_top = row_data["color_top"].strip()
|
||||
color_body = row_data["color_body"].strip()
|
||||
|
||||
if not color_top or not color_body:
|
||||
return None
|
||||
|
||||
# pobierz część po ostatnim myślniku
|
||||
top_suffix = color_top.split('-')[-1].upper()
|
||||
body_suffix = color_body.split('-')[-1].upper()
|
||||
|
||||
if (top_suffix == 'G' or top_suffix == None) and body_suffix == 'G':
|
||||
return "GLOSS"
|
||||
elif (top_suffix == 'S' or top_suffix == None) and body_suffix == 'S':
|
||||
return "SATIN"
|
||||
elif top_suffix in ('G', 'S') and body_suffix == 'M':
|
||||
return "MIX"
|
||||
elif top_suffix in ('M', 'R', 'MAT', 'RAW') and body_suffix in ('M', 'R', 'MAT'):
|
||||
return "MAT"
|
||||
elif top_suffix in ('M', 'R', 'MAT', 'RAW') and body_suffix in ('G', 'S'):
|
||||
return "MIX"
|
||||
elif top_suffix is None and body_suffix in ('M', 'R', 'MAT'):
|
||||
return "MAT"
|
||||
|
||||
except (KeyError, AttributeError):
|
||||
return None
|
||||
return None
|
||||
from config import MAYO_URL, LOGIN, PASSWORD
|
||||
from workflow import select_sheet, get_sheet_data, save_results
|
||||
from processing import process_all_rows
|
||||
|
||||
def main():
|
||||
# Inicjalizuj API raz na początku
|
||||
setup_logging()
|
||||
gsheet_api = GSheetAPI()
|
||||
|
||||
print("📄 Pobieram listę arkuszy...")
|
||||
try:
|
||||
sheets = gsheet_api.list_sheets(DOC_NAME)
|
||||
for i, name in enumerate(sheets):
|
||||
print(f"{i+1}. {name}")
|
||||
except Exception as e:
|
||||
print(f"❌ Błąd podczas pobierania listy arkuszy: {e}")
|
||||
sheet_name = select_sheet()
|
||||
if not sheet_name:
|
||||
return
|
||||
|
||||
sheet_name = input("\nWybierz arkusz do przetworzenia: ")
|
||||
|
||||
print(f"📋 Pobieram dane z arkusza: {sheet_name}")
|
||||
try:
|
||||
rows = gsheet_api.get_sheet_data(DOC_NAME, sheet_name)
|
||||
except Exception as e:
|
||||
print(f"❌ Błąd podczas pobierania danych z arkusza: {e}")
|
||||
rows = get_sheet_data(gsheet_api, sheet_name)
|
||||
if rows is None:
|
||||
return
|
||||
|
||||
mayo = MayoSession(MAYO_URL, LOGIN, PASSWORD)
|
||||
mayo.login()
|
||||
|
||||
rows_to_process = []
|
||||
counter = 1
|
||||
# Zakładamy: kolumna B = link, kolumna C = nr zam.
|
||||
for row in rows[1:]:
|
||||
if len(row) < 3:
|
||||
continue # Pomiń wiersze, które nie mają wystarczającej liczby kolumn
|
||||
processed_rows = process_all_rows(rows, mayo)
|
||||
|
||||
link = row[1]
|
||||
nr_zam = row[2]
|
||||
|
||||
if not link:
|
||||
continue
|
||||
|
||||
print(f"\n🔗 Sprawdzam: {link}")
|
||||
try:
|
||||
info = mayo.get_order_info(link)
|
||||
order_number = info["order_number"]
|
||||
model = info["model"]
|
||||
|
||||
print(f"Nr z arkusza: {nr_zam}")
|
||||
print(f"Nr ze strony: {order_number}")
|
||||
print(f"Model: {model}")
|
||||
|
||||
if normalize(order_number) == normalize(nr_zam):
|
||||
print("✅ Numer się zgadza")
|
||||
else:
|
||||
print("⚠️ Numer NIE pasuje!")
|
||||
|
||||
row_data = [
|
||||
counter,
|
||||
link,
|
||||
nr_zam,
|
||||
model,
|
||||
get_finish_type(info),
|
||||
info.get("color_top"),
|
||||
info.get("color_body"),
|
||||
info.get("color_neck"),
|
||||
info.get("color_head"),
|
||||
info.get("finish_kc"),
|
||||
info.get("finish_s"),
|
||||
]
|
||||
print(f"raw_data: {row_data}")
|
||||
rows_to_process.append(row_data)
|
||||
counter += 1
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Błąd podczas przetwarzania linku {link}: {e}")
|
||||
|
||||
# Po zakończeniu pętli, dodaj wszystkie zebrane wiersze za jednym razem
|
||||
if rows_to_process:
|
||||
print(f"\n\n--- Podsumowanie ---")
|
||||
print(f"Zebrano {len(rows_to_process)} wierszy do przetworzenia.")
|
||||
gsheet_api.batch_append_unique_rows(RESULT_DOC, sheet_name, rows_to_process)
|
||||
else:
|
||||
print("\nNie zebrano żadnych danych do przetworzenia.")
|
||||
save_results(gsheet_api, sheet_name, processed_rows)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
main()
|
||||
|
||||
24
mayo.py
24
mayo.py
@@ -1,6 +1,7 @@
|
||||
import requests
|
||||
from bs4 import BeautifulSoup
|
||||
import re
|
||||
import logging
|
||||
|
||||
class MayoSession:
|
||||
def __init__(self, base_url, login, password, db="1"):
|
||||
@@ -23,28 +24,8 @@ class MayoSession:
|
||||
r = self.session.post(self.login_url, data=self.credentials)
|
||||
if "Zaloguj się" in r.text or "login" in r.url:
|
||||
raise Exception("Nie udało się zalogować do Mayo.")
|
||||
print("✅ Zalogowano poprawnie do systemu Mayo.")
|
||||
logging.info("✅ Zalogowano poprawnie do systemu Mayo.")
|
||||
|
||||
# def get_order_info(self, url):
|
||||
# """
|
||||
# Pobiera dane z podanej strony zamówienia:
|
||||
# - numer zamówienia
|
||||
# - model gitary
|
||||
# """
|
||||
# r = self.session.get(url)
|
||||
# r.encoding = "utf-8"
|
||||
# soup = BeautifulSoup(r.text, "html.parser")
|
||||
|
||||
# # nr zamówienia
|
||||
# order_span = soup.find("span", class_="czarnobiale")
|
||||
# order_number = order_span.get_text(strip=True) if order_span else None
|
||||
|
||||
# # model gitary
|
||||
# input_tag = soup.find("input", {"name": "s_nr_kat"})
|
||||
# model = input_tag.get("value").strip() if input_tag else None
|
||||
|
||||
# return {"order_number": order_number, "model": model}
|
||||
|
||||
def get_order_info(self, url):
|
||||
"""
|
||||
Pobiera dane z podanej strony zamówienia:
|
||||
@@ -82,7 +63,6 @@ class MayoSession:
|
||||
value = None
|
||||
# Wartość jest zazwyczaj pomiędzy myślnikiem a ukośnikiem
|
||||
match = re.search(r'-\s*([^/]+)', text)
|
||||
# print(f"label: {label}, match: {match}, text: {text}")
|
||||
if match:
|
||||
value = match.group(1).strip()
|
||||
color_sections[label] = value
|
||||
|
||||
112
processing.py
Normal file
112
processing.py
Normal file
@@ -0,0 +1,112 @@
|
||||
import re
|
||||
import logging
|
||||
|
||||
def normalize(text):
|
||||
if not text:
|
||||
return ""
|
||||
return re.sub(r"\s+", "", text)
|
||||
|
||||
|
||||
def get_finish_suffix(color):
|
||||
"""Extracts the finish suffix (e.g., 'G', 'S', 'M') from a color string."""
|
||||
if not color:
|
||||
return None
|
||||
return color.strip().split('-')[-1].upper()
|
||||
|
||||
def get_finish_type(row_data):
|
||||
"""Determines the finish type (GLOSS, SATIN, MAT, MIX) based on color suffixes."""
|
||||
try:
|
||||
top_suffix = get_finish_suffix(row_data.get("color_top"))
|
||||
body_suffix = get_finish_suffix(row_data.get("color_body"))
|
||||
|
||||
if not top_suffix and not body_suffix:
|
||||
return None
|
||||
|
||||
# If one suffix is missing, assume it's the same as the other.
|
||||
top_suffix = top_suffix or body_suffix
|
||||
body_suffix = body_suffix or top_suffix
|
||||
|
||||
suffix_to_category = {
|
||||
'G': 'gloss',
|
||||
'S': 'satin',
|
||||
'M': 'mat',
|
||||
'R': 'mat',
|
||||
'MAT': 'mat',
|
||||
'RAW': 'mat',
|
||||
}
|
||||
|
||||
top_category = suffix_to_category.get(top_suffix)
|
||||
body_category = suffix_to_category.get(body_suffix)
|
||||
|
||||
if not top_category or not body_category:
|
||||
return None # Suffix not in our map
|
||||
|
||||
if top_category == body_category:
|
||||
return top_category.upper()
|
||||
|
||||
if 'mat' in {top_category, body_category}:
|
||||
return 'MIX'
|
||||
|
||||
except (KeyError, AttributeError):
|
||||
# This will catch if row_data is not a dict or keys are missing
|
||||
return None
|
||||
|
||||
return None
|
||||
|
||||
def process_row(row, mayo, counter):
|
||||
"""Processes a single row from the sheet."""
|
||||
if len(row) < 3:
|
||||
return None # Skip rows with insufficient columns
|
||||
|
||||
link = row[1]
|
||||
nr_zam = row[2]
|
||||
|
||||
if not link:
|
||||
return None
|
||||
|
||||
logging.info(f"\n🔗 Sprawdzam: {link}")
|
||||
try:
|
||||
info = mayo.get_order_info(link)
|
||||
order_number = info["order_number"]
|
||||
model = info["model"]
|
||||
|
||||
logging.info(f"Nr z arkusza: {nr_zam}")
|
||||
logging.info(f"Nr ze strony: {order_number}")
|
||||
logging.info(f"Model: {model}")
|
||||
|
||||
if normalize(order_number) == normalize(nr_zam):
|
||||
logging.info("✅ Numer się zgadza")
|
||||
else:
|
||||
logging.warning("⚠️ Numer NIE pasuje!")
|
||||
|
||||
row_data = [
|
||||
counter,
|
||||
link,
|
||||
nr_zam,
|
||||
model,
|
||||
get_finish_type(info),
|
||||
info.get("color_top"),
|
||||
info.get("color_body"),
|
||||
info.get("color_neck"),
|
||||
info.get("color_head"),
|
||||
info.get("finish_kc"),
|
||||
info.get("finish_s"),
|
||||
]
|
||||
logging.debug(f"raw_data: {row_data}")
|
||||
return row_data
|
||||
|
||||
except Exception as e:
|
||||
logging.error(f"❌ Błąd podczas przetwarzania linku {link}: {e}")
|
||||
return None
|
||||
|
||||
def process_all_rows(rows, mayo):
|
||||
"""Processes all rows from the sheet."""
|
||||
rows_to_process = []
|
||||
counter = 1
|
||||
# Skip header row by starting from index 1
|
||||
for row in rows[1:]:
|
||||
processed_row = process_row(row, mayo, counter)
|
||||
if processed_row:
|
||||
rows_to_process.append(processed_row)
|
||||
counter += 1
|
||||
return rows_to_process
|
||||
28
workflow.py
Normal file
28
workflow.py
Normal file
@@ -0,0 +1,28 @@
|
||||
import datetime
|
||||
import logging
|
||||
from config import DOC_NAME, RESULT_DOC
|
||||
|
||||
def select_sheet():
|
||||
"""Generates the sheet name based on the current month and year (MM.YYYY)."""
|
||||
now = datetime.datetime.now()
|
||||
sheet_name = now.strftime("%m.%Y")
|
||||
logging.info(f"📄 Automatycznie wybrano arkusz: {sheet_name}")
|
||||
return sheet_name
|
||||
|
||||
def get_sheet_data(gsheet_api, sheet_name):
|
||||
"""Fetches all data from a given sheet."""
|
||||
logging.info(f"📋 Pobieram dane z arkusza: {sheet_name}")
|
||||
try:
|
||||
return gsheet_api.get_sheet_data(DOC_NAME, sheet_name)
|
||||
except Exception as e:
|
||||
logging.error(f"❌ Błąd podczas pobierania danych z arkusza: {e}")
|
||||
return None
|
||||
|
||||
def save_results(gsheet_api, sheet_name, processed_rows):
|
||||
"""Saves the processed rows to the spreadsheet."""
|
||||
if processed_rows:
|
||||
logging.info(f"\n\n--- Podsumowanie ---")
|
||||
logging.info(f"Zebrano {len(processed_rows)} wierszy do przetworzenia.")
|
||||
gsheet_api.batch_append_unique_rows(RESULT_DOC, sheet_name, processed_rows)
|
||||
else:
|
||||
logging.info("\nNie zebrano żadnych danych do przetworzenia.")
|
||||
Reference in New Issue
Block a user