چشم پنهان

فاکتور، خرید، فروش و انبارداری

خانه | کل حساب در یک نگاه

آخرین معاملات

نوعتاریخ شمسیطرف حسابمبلغمانده

سود خالص نمایشی = سود ناخالص تخمینی منهای هزینه‌های جانبی ثبت‌شده؛ مالیات و سایر هزینه‌های ثبت‌نشده در آن لحاظ نشده‌اند. بدهکار = مانده دریافتی از مشتری؛ بستانکار = مانده پرداختی به تأمین‌کننده.

🤖 دستیار هوشمند چشم پنهان

دستیار آفلاین و محرمانه: پرسش‌های مالی، بررسی موجودی، شناسایی بدهکاران و راهنمای عملیات. پاسخ‌ها از اطلاعات ثبت‌شده روی همین گوشی محاسبه می‌شوند؛ این نسخه به سرویس هوش مصنوعی اینترنتی متصل نیست.

🧠 هوش مصنوعی مکالمه‌ای (اختیاری)

برای پاسخ تحلیلی با مدل آنلاین، سرور خصوصی را راه‌اندازی کن. داده‌های مالی خلاصه‌شده فقط با اجازه تو ارسال می‌شوند. رمز API را هرگز داخل گوشی وارد نکن.

در حالت بدون سرور، دستیار آفلاین قبلی همچنان فعال است.
میکروفون به مرورگر سازگار و HTTPS نیاز دارد.
سلام! یکی از گزارش‌های بالا را انتخاب کن یا سؤالت را بنویس.

دستیار بدون تأیید تو هیچ اطلاعاتی را تغییر نمی‌دهد. برای تغییر یا حذف رکوردها از بخش مربوطه استفاده کن.

📅 مدیریت چک و پیگیری بدهکاران

تاریخ‌ها را با انتخابگر تاریخ گوشی وارد کن؛ معادل شمسی هنگام نمایش نشان داده می‌شود. یادآوری‌ها هنگام بازکردن برنامه بررسی می‌شوند. ارسال پیام فقط با تأیید خودت انجام می‌شود.

هشدارهای سررسید

فهرست چک‌ها

نوعطرف حسابمبلغسررسید شمسیوضعیت / عملیات

📨 خلاصه فاکتور و پیام بدهکاران

برای هر مشتری بدهکار، خلاصه فاکتورهای پرداخت‌نشده و مانده حساب ساخته می‌شود. دکمه واتساپ فقط پیام را باز می‌کند؛ ارسال نهایی با خودت است. شماره مشتری باید در فاکتور فروش ثبت شده باشد.

برای یادآوری خودکار در زمان بسته‌بودن برنامه و ارسال پیام خودکار، به سرور همیشه‌روشن و سرویس پیام‌رسان دارای مجوز نیاز است؛ این نسخه چنین ارسالی انجام نمی‌دهد.

صدور فاکتور فروش

ورود صوتی فقط در مرورگر پشتیبانی‌شده و محیط امن HTTPS فعال می‌شود. برای ثبت کالا از فهرست هم می‌توانید استفاده کنید.
کالاتعدادقیمت واحد (تومان)جمعحذف

📋 پیش‌فاکتورها

پیش‌فاکتور موجودی انبار و حساب مشتری را تغییر نمی‌دهد. تبدیل به فروش فقط پس از تأیید انجام می‌شود.

شمارهتاریخمشتریمبلغعملیات

سوابق فروش

شمارهتاریخمشتریمبلغعملیات

ثبت خرید کالا

📷 ثبت خرید از عکس فاکتور

فاکتور چاپی یا دست‌نویس را انتخاب کن. متن نامطمئن را اصلاح کن؛ هیچ اطلاعاتی خودکار در انبار ثبت نمی‌شود.

برای دست‌خط ناخوانا، نام و تعداد را از تو می‌پرسیم.

پس از این مرحله، دکمه «ثبت فاکتور خرید» را جداگانه بزن. مبالغ به تومان هستند؛ برای اعداد ریالی ابتدا تبدیل کن.

کالاتعدادقیمت خریدجمعحذف

سوابق خرید

شمارهتاریختأمین‌کنندهمبلغعملیات

دفتر حساب مشتریان و تأمین‌کنندگان

نام طرف حساب را دقیقاً مانند نام ثبت‌شده در فاکتور وارد کنید. پرداخت‌های جدید به حساب شخص ثبت می‌شوند و مانده داشبورد را تغییر می‌دهند.

📇 ثبت و ویرایش مشخصات اشخاص

شماره موبایل، تلفن ثابت و آدرس را برای هر مشتری یا تأمین‌کننده ذخیره کن. برای ارسال PDF از چاپ / ذخیره PDF گوشی استفاده کن.

نامنوعموبایلآدرسعملیات

گردش حساب شخص

تاریخ شمسیشرحبدهکاربستانکارمانده

خلاصه حساب همه اشخاص

نوعناممجموع فاکتورمجموع تسویهمانده

ورود کالا و انبار

فهرست موجودی انبار

کدنام کالاموجودیخریدفروشعملیات

برای اصلاح موجودی، خرید یا فروش ثبت کنید. حذف کالا فقط وقتی ممکن است که در هیچ فاکتوری استفاده نشده باشد.

📷 عکس کالا و ساخت کاتالوگ

از کنار هر کالا دکمه «عکس» را بزن. عکس‌ها در نسخه پشتیبان ذخیره می‌شوند؛ برای جلوگیری از پرشدن حافظه، تصاویر کوچک و فشرده می‌شوند.

✨ طراحی جلد اول کاتالوگ

متن‌ها، رنگ و تصویر جلد را تغییر بده. تغییرات خودکار ذخیره می‌شوند و در PDF و فایل ارسالی هم دیده می‌شوند.

هزینه‌های جانبی

هزینه‌های عملیاتی مانند اجاره، حمل‌ونقل، دستمزد و اینترنت از سود ناخالص کسر می‌شوند.

سوابق هزینه‌ها

تاریخعنواندستهمبلغعملیات

تنظیمات و طراحی سربرگ

پشتیبان‌گیری و انتقال به کامپیوتر

پشتیبان‌گیری شامل دفتر حساب و پرداخت‌های جدید هم می‌شود. اطلاعات فعلاً فقط در همین مرورگر گوشی ذخیره می‌شود. قبل از پاک‌کردن داده‌های مرورگر، حتماً پشتیبان بگیرید. اتصال به Access 2021 در مرحله بعد انجام می‌شود.

💾 پشتیبان‌گیری و بازیابی

از همه اطلاعات این نسخه فایل JSON بگیر. فایل پشتیبان را در جایی امن نگهداری کن. بازیابی اطلاعات فعلی را جایگزین می‌کند.

برای امنیت، نسخه پشتیبان شامل مشخصات مشتریان و سوابق مالی است. آن را عمومی ارسال نکن.

📣 بازاریابی و ارتباط با مشتریان

پیام تبلیغاتی برای مشتریان ثبت‌شده بساز. ارسال به واتساپ فقط پس از اقدام خودت انجام می‌شود؛ ارسال گروهی خودکار فعال نیست. قبل از پیام تبلیغاتی رضایت مخاطب را بگیر.

کمپین‌های ذخیره‌شده

ارسال شخصی به مخاطبان

📦 انبارگردانی

موجودی واقعی کالا را بشمار و وارد کن. مغایرت با موجودی ثبت‌شده محاسبه می‌شود. تا زمان تأیید نهایی هیچ موجودی تغییر نمی‌کند.

سوابق انبارگردانی

🧮 ماشین حساب مالی

صفحه‌کلید بزرگ مخصوص ثبت مبلغ، با کنترل تومان و ریال

نتیجه: —
معادل ریال: —

واحد نتیجه تومان است. برای مبلغ‌های بزرگ، تعداد صفرها را قبل از استفاده در فاکتور بررسی کن.

`);w.document.close()} const oldRenderLedger=renderLedger;renderLedger=function(){oldRenderLedger();renderPersons();const sel=document.getElementById('ledgerParty'),kind=document.getElementById('ledgerKind').value,old=sel.value;for(let x of personRecords().filter(x=>x.kind===kind)){if(!Array.from(sel.options).some(o=>o.value===x.name))sel.add(new Option(x.name,x.name))}if(old)sel.value=old;}; renderPersons();renderLedger();

📨 ارسال پیام و PDF

پیامک و واتساپ در برنامه مربوطه باز می‌شوند و ارسال نهایی با تأیید شماست. PDF از بخش چاپ مرورگر ذخیره می‌شود.

');w.document.close();setStatus('صفحه آماده شد؛ گزینه چاپ / ذخیره PDF را بزن و Save as PDF را انتخاب کن.')} window.cpPDFMessage=function(){let t=msg();if(!t)return;printHTML('نامه / پیام', '

'+esc(t)+'

')}; window.cpInvoicePDF=function(kind,id){let inv=(kind==='sale'?data.sales:data.purchases).find(x=>String(x.id)===String(id));if(!inv)return alert('فاکتور پیدا نشد');let lines=(inv.lines||[]).map(l=>''+esc(l.name)+''+esc(l.qty)+''+esc(l.unit||'عدد')+''+money(l.price)+''+money(Number(l.qty)*Number(l.price))+'').join('');let content='

شماره: '+esc(inv.id)+' | تاریخ: '+esc(inv.date)+'
طرف حساب: '+esc(inv.party)+' | تلفن: '+esc(inv.phone||'—')+'

'+lines+'
کالاتعدادواحدقیمت واحد (تومان)جمع (تومان)

جمع: '+money(inv.total)+' تومان

پرداخت: '+money(inv.paid||0)+' تومان
مانده: '+money(Number(inv.total)-Number(inv.paid||0))+' تومان

';printHTML('فاکتور '+(kind==='sale'?'فروش':'خرید'),content)}; window.cpInvoiceMessage=function(kind,id){let inv=(kind==='sale'?data.sales:data.purchases).find(x=>String(x.id)===String(id));if(!inv)return;goPage('shareCenter');byId('sharePhone').value=inv.phone||'';byId('shareText').value='سلام '+inv.party+'\nخلاصه فاکتور شماره '+inv.id+'\nتاریخ: '+inv.date+'\nمبلغ: '+money(inv.total)+' تومان\nپرداخت: '+money(inv.paid||0)+' تومان\nمانده: '+money(Number(inv.total)-Number(inv.paid||0))+' تومان\n'+(data.settings.shopName||'چشم پنهان')}; window.cpPickPerson=function(){let i=byId('sharePerson').value;if(!i)return;let p=(data.contacts||[])[Number(i)-1];if(!p)return;byId('sharePhone').value=p.mobile||p.phone||'';byId('shareText').value='سلام '+p.name+'\n'+(data.settings.shopName||'چشم پنهان')}; window.cpOpenShare=function(){let sel=byId('sharePerson');sel.innerHTML=''+(data.contacts||[]).map((p,i)=>'').join('');goPage('shareCenter')}; let orig=window.renderHistory;if(typeof orig==='function')window.renderHistory=function(){orig();for(let kind of ['sale','purchase']){let rows=byId(kind==='sale'?'salesHistoryRows':'purchasesHistoryRows').querySelectorAll('tr');let invoices=(kind==='sale'?data.sales:data.purchases).slice().reverse();rows.forEach((tr,i)=>{let td=tr.lastElementChild;if(td&&invoices[i]){let id=invoices[i].id;td.insertAdjacentHTML('beforeend',' ')}})}}; if(typeof window.renderHistory==='function')window.renderHistory(); let menu=byId('menuOverlay');if(menu){let grid=menu.querySelector('.menu-grid');if(grid){let b=document.createElement('button');b.textContent='📨 پیامک، واتساپ و PDF';b.onclick=cpOpenShare;grid.appendChild(b)}} let debt=window.renderDebtMessages;if(typeof debt==='function')window.renderDebtMessages=function(){debt();byId('debtMessages').querySelectorAll('.summary').forEach(card=>{let input=card.querySelector('input[id^="ph_"]');if(!input)return;let id=input.id.slice(3);let btn=document.createElement('button');btn.className='btn secondary';btn.textContent='✉️ پیامک / PDF';btn.onclick=function(){let party=window._debtorIds&&window._debtorIds[id];if(!party)return;cpOpenShare();byId('sharePhone').value=input.value;byId('shareText').value=debtorMessage(party).text};card.appendChild(btn)})}; if(typeof window.renderDebtMessages==='function')window.renderDebtMessages(); })();
'} window.cpCatalogDownload=function(){if(!products().length)return alert('ابتدا کالا ثبت کن');let blob=new Blob([documentHTML()],{type:'text/html;charset=utf-8'});let url=URL.createObjectURL(blob),a=document.createElement('a');a.href=url;a.download='catalog-cheshm-penhan.html';document.body.append(a);a.click();a.remove();setTimeout(()=>URL.revokeObjectURL(url),10000)}; window.cpCatalogPrint=function(){if(!products().length)return alert('ابتدا کالا ثبت کن');let frame=document.createElement('iframe');frame.style.cssText='position:fixed;width:1px;height:1px;opacity:0;pointer-events:none';document.body.append(frame);frame.onload=function(){try{frame.contentWindow.focus();frame.contentWindow.print()}catch(e){alert('چاپ باز نشد. از گزینه دریافت فایل کاتالوگ استفاده کن.')}setTimeout(()=>frame.remove(),120000)};frame.srcdoc=documentHTML()}; const oldRenderAll=renderAll;renderAll=function(){oldRenderAll();cpCatalogRender()}; renderProducts();cpCatalogRender(); })();