Invoice Ninja เวอร์ชัน 5 มาแล้ว! เราได้นำส่วนที่ดีที่สุดของเวอร์ชัน 4 และเพิ่มคุณสมบัติที่ได้รับการร้องขอมากที่สุดเพื่อสร้างแอปพลิเคชันการออกใบแจ้งหนี้ที่ไม่เหมือนใคร ตรวจสอบช่อง YouTube ของ Invoice Ninja เพื่อเร่งความเร็ว หรือลองใช้การสาธิตทันที
เลือกการตั้งค่าของคุณ
คุณสมบัติ Pro และ Enterprise ทั้งหมดจากแอปที่โฮสต์จะรวมอยู่ในโค้ดที่มีอยู่ เราเสนอใบอนุญาต white-label มูลค่า 30 เหรียญต่อปีเพื่อลบแบรนด์ Invoice Ninja ออกจากส่วนที่ติดต่อกับลูกค้าของแอป
หมายเหตุ: ตัวเลือกที่โฮสต์เองรองรับแอปเดสก์ท็อปและมือถือ
นอกจาก Invoice Ninja อย่างเป็นทางการ - คู่มือการติดตั้งที่โฮสต์เองแล้ว เรายังมีคำสั่งบางอย่างสำหรับคุณอีกด้วย
git clone --single-branch --branch v5-stable https://github.com/invoiceninja/invoiceninja.git
cp .env.example .env
composer i -o --no-dev
โปรดทราบ: APP_KEY ของคุณในไฟล์ .env ใช้เพื่อเข้ารหัสข้อมูล หากคุณทำสิ่งนี้หาย คุณจะไม่สามารถเรียกใช้แอปพลิเคชันได้
เรียกใช้หากคุณต้องการโหลดข้อมูลตัวอย่าง อย่าลืมกำหนดค่า .env
php artisan migrate:fresh --seed && php artisan db:seed && php artisan ninja:create-test-data
เพื่อรันเว็บเซิร์ฟเวอร์
php artisan serve
นำทางไปยัง (แทนที่ localhost ด้วยโดเมนที่เหมาะสม)
http://localhost:8000/setup - To setup your configuration if you did not load sample data.
http://localhost:8000/ - For Administrator Logon
user: [email protected]
pass: password
http://localhost:8000/client/login - For Client Portal
user: [email protected]
pass: password
นอกจาก Invoice Ninja - คู่มือนักพัฒนาอย่างเป็นทางการแล้ว เรายังพร้อมให้ข้อมูลข้อมูลเชิงลึกอีกด้วย
API และพอร์ทัลไคลเอนต์ได้รับการพัฒนาโดยใช้ Laravel หากคุณต้องการมีส่วนร่วมในโปรเจ็กต์นี้ ความคุ้นเคยกับ Laravel เป็นสิ่งสำคัญ
เมื่อตรวจสอบฟังก์ชันการทำงานของ API ตำแหน่งที่ดีที่สุดในการเริ่มต้นคือในไฟล์เส้นทาง/api.php ซึ่งอธิบายจุดสิ้นสุด API ที่มีจำหน่ายทั้งหมด วิธีการควบคุมจะอธิบายจุดเริ่มต้นทั้งหมดลงในแต่ละโดเมนของแอปพลิเคชัน เช่น InvoiceController / QuoteController
คำขอ API โดยเฉลี่ยจะเป็นไปตามเส้นทางนี้ในแอปพลิเคชัน
public function store ( StoreInvoiceRequest $ request )
{
$ invoice = $ this -> invoice_repo -> save ( $ request -> all (), InvoiceFactory:: create ( auth ()-> user ()-> company ()-> id , auth ()-> user ()-> id ));
$ invoice = $ invoice -> service ()
-> fillDefaults ()
-> triggeredActions ( $ request )
-> adjustInventory ()
-> save ();
event ( new InvoiceWasCreated ( $ invoice , $ invoice -> company , Ninja:: eventVars ( auth ()-> user () ? auth ()-> user ()-> id : null )));
return $ this -> itemResponse ( $ invoice );
}
ตัวอย่างเช่น เรากำลังจัดเก็บใบแจ้งหนี้ใหม่ เราจะส่งคำขอที่ได้รับการตรวจสอบพร้อมกับโรงงานไปยังที่เก็บใบแจ้งหนี้ซึ่งมีการประมวลผลและบันทึกไว้
จากนั้นใบแจ้งหนี้ที่ส่งคืนจะผ่านระดับบริการ (แอป/บริการ/ใบแจ้งหนี้) ซึ่งมีการดำเนินการต่างๆ
จากนั้นเหตุการณ์จะเริ่มทำงานซึ่งจะแจ้งเตือนผู้ฟังในแอปพลิเคชัน (แอป/ผู้ให้บริการ/EventServiceProvider) ซึ่งทำงานย่อยที่ไม่บล็อก
ในที่สุดใบแจ้งหนี้ก็ถูกแปลง (แอป/Transformers/) และส่งคืนเป็นการตอบกลับผ่าน Fractal
การใช้การตั้งค่าโฮสติ้งด่วนที่อธิบายไว้ข้างต้น ช่วยให้คุณสามารถเริ่มต้นสร้างสภาพแวดล้อมการพัฒนาของคุณได้อย่างรวดเร็ว แทนที่จะใช้
composer i -o --no-dev
ใช้
composer i -o
นี่เป็นเครื่องมือสำหรับนักพัฒนารวมถึง phpunit ซึ่งอนุญาตให้เรียกใช้ชุดทดสอบ
หากคุณกำลังพิจารณาที่จะมีส่วนร่วมกลับไปยังพื้นที่เก็บข้อมูลหลัก โปรดเพิ่มการทดสอบการทำงาน/การแก้ไขใหม่ สิ่งนี้จะช่วยเพิ่มโอกาสที่ PR ของคุณจะได้รับการยอมรับอย่างมาก
นอกจากนี้ หากคุณวางแผนเพิ่มเติมใดๆ สำหรับพื้นที่เก็บข้อมูลหลัก คุณอาจต้องการปรึกษาเรื่องนี้กับเราก่อนบน Slack ซึ่งเราสามารถช่วยเหลือเกี่ยวกับข้อมูลทางเทคนิคและให้คำแนะนำได้
หากคุณพบปัญหาด้านความปลอดภัยกับแอปพลิเคชันนี้ โปรดส่งอีเมลไปที่ [email protected] โปรดปฏิบัติตามขั้นตอนการเปิดเผยข้อมูลที่รับผิดชอบหากคุณตรวจพบปัญหา สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเปิดเผยข้อมูลอย่างรับผิดชอบ โปรดอ่านที่นี่
Invoice Ninja ได้รับการเผยแพร่ภายใต้ Elastic License
ดูใบอนุญาตสำหรับรายละเอียด