MyCompany adalah solusi gratis dan open source untuk bisnis kecil





Sekitar setahun yang lalu, kami merilis open source dan platform gratis untuk mengembangkan aplikasi bisnis lsFusion . Pertama-tama, kami fokus pada pengembang yang dapat dengan cepat dan mudah membuat berbagai sistem informasi di dalamnya. Namun demikian, pengembangan sistem manajemen dari awal, bahkan untuk bisnis kecil, tetap merupakan proses yang melelahkan.



Untuk alasan ini, kami memutuskan untuk membuat solusi dasar yang disebut MyCompany yang mengimplementasikan proses bisnis dasar dari usaha kecil. Ini sepenuhnya gratis, dirilis di bawah lisensi Apache, dan sumbernya ada di Github . Solusinya mudah dipasang dan mendukung undang-undang Rusia.



PostgreSQL digunakan sebagai sistem manajemen database . Di server, solusi diinstal dan diluncurkan sebagai aplikasi Java yang terdiri dari server aplikasi dan aplikasi web yang menjalankan Apache Tomcat . Antarmuka web dan klien desktop yang diluncurkan melalui Java Web Start dapat digunakan sebagai GUI.



Fungsional



Versi demo dengan data yang terisi dapat dilihat di https://demo.lsfusion.org/mycompany-ru . Otorisasi untuk tautan yang ditentukan dinonaktifkan.



gambar



Sebagai dasar, logika diambil, diletakkan di solusi terkenal di dunia - Odoo . Sayangnya, tidak semua pendekatan yang diterapkan di dalamnya cocok untuk digunakan dalam realitas Rusia. Oleh karena itu, beberapa proses harus diubah sesuai dengan pengalaman kami sendiri dan aplikasi populer lainnya. Meskipun demikian, logika "Perusahaan Saya" jauh lebih dekat dengan standar dunia daripada logika 1C. Ini juga memiliki lokalisasi bahasa Inggris (dengan kemampuan untuk menambahkan bahasa lain).



Saat ini, solusinya kurang dalam penerapan pelaporan regulasi (akuntansi) dan penggajian. Di ceruk di wilayah Federasi Rusia ini, posisi solusi pada platform 1C secara historis kuat, dan akuntan adalah pengguna yang sangat konservatif. Untuk alasan ini, pada tahap pertama, seharusnya mengunggah data yang diperlukan ke sistem akuntansi, dan solusinya sendiri digunakan untuk memelihara akuntansi manajemen.



"Perusahaan Saya" memiliki arsitektur modular dan terdiri dari tujuh blok besar:



gambar



Pemrosesan sebagian besar dokumen dalam sistem didasarkan pada prinsip status kelulusan. Setelah mencapai status tertentu, data terkait dalam akuntansi diubah, dan kolom dan tindakan tambahan dapat ditambahkan.



Referensi (Master Data)



Sistem berisi direktori dasar yang diperlukan untuk bekerja dengan pihak rekanan dan nomenklatur barang.



Pihak lawan dibagi menjadi dua jenis: badan hukum dan individu. Siapa pun dapat terikat pada organisasi tempat dia bekerja. Mendukung menjalankan beberapa perusahaan sendiri.



Baik barang dan jasa dapat digunakan sebagai nomenklatur. Mereka dapat diikat ke kategori yang membentuk pohon kedalaman dinamis. Untuk setiap kategori, Anda dapat menentukan atribut mana yang dapat dan harus disetel untuk seluruh item yang termasuk di dalamnya. Anda juga dapat menentukan cara membuat nama umum berdasarkan nilai atribut. Untuk item apa pun, Anda dapat mengatur variasinya.



Dimungkinkan untuk memuat data badan hukum secara otomatis melalui API yang disediakan oleh DaData .



Gudang (Inventaris)



Blok ini mengimplementasikan logika akuntansi gudang dengan penghitungan saldo berdasarkan lokasi penyimpanan. Lokasi penyimpanan dapat bersifat hierarkis. Karyawan perusahaan hanya dapat diberikan akses ke lokasi penyimpanan tertentu.



Mendukung penghitungan biaya saldo dengan biaya tetap dan rata-rata, serta dengan metode FIFO. Metode penghitungan dapat dipilih secara berbeda tergantung pada kategori barang.



Pengguna utama modul ini adalah pekerja gudang yang beroperasi secara eksklusif dengan karakteristik kuantitatif.



Empat jenis dokumen utama didukung:



  • Penerimaan. Mendaftarkan penerimaan barang di gudang. Mendukung logika kuantitas yang diharapkan dan diterima, serta status proses penerimaan dan penempatan.
  • Pengiriman. Mencerminkan konsumsi dari gudang dan pergerakan antar gudang. Selain itu, ia mencadangkan barang di gudang dengan status tertentu.
  • Penghapusan. Mencerminkan penghapusan barang dari gudang.
  • Inventaris. Mendaftarkan penemuan atau kehilangan barang di gudang. Inventarisasi dapat dilakukan seluruhnya di lokasi penyimpanan, kategori yang dipilih atau barang tertentu.




Menerapkan akuntansi sepotong demi sepotong dan integrasi dengan Honesty Znak dalam hal memperoleh tanda kontrol, mentransfer dan menerima dokumen ke / dari GIS MT.



Perhitungan (Faktur)



Blok ini menerapkan logika untuk mendaftarkan faktur dan pembayaran masuk dan keluar. Logika komunikasi antara dokumen masuk dan keluar didukung untuk menghitung hutang untuk dokumen dan rekanan. Kemungkinan pengeposan biaya layanan ke harga pokok barang dengan berbagai cara telah diterapkan.



Empat jenis dokumen utama didukung:



  • Resi. Mendaftarkan faktur masuk atau tindakan penyelesaian barang atau jasa. Berdasarkan dokumen ini, dokumen putaway dapat dibuat secara otomatis atau manual.
  • Penerapan. Mendaftarkan faktur keluar atau sertifikat penyelesaian untuk barang atau jasa. Berdasarkan dokumen ini, dokumen pengiriman gudang dapat dibuat secara otomatis atau manual.
  • Pembayaran masuk. Mencerminkan penerimaan dana ke kasir atau ke rekening giro.
  • Pembayaran keluar. Mencerminkan pengeluaran dana dari meja kas atau dari rekening giro.




Formulir pencetakan UPD, TORG-12 dan TORG-13 telah dilaksanakan.



Membeli



Blok tersebut menerapkan logika pesanan untuk barang dan jasa dari pemasok. Mendukung kemampuan untuk mendaftarkan daftar harga pemasok dengan penggantian harga otomatis berikutnya dalam pesanan.



Pesanan melewati beberapa status, yang selama itu dapat secara otomatis dikirim ke pemasok melalui email. Pesanan yang telah dikonfirmasi secara otomatis menghasilkan tanda terima barang yang direncanakan, yang kemudian diproses oleh pemilik toko. Setelah barang diterima, akuntan membuat dokumen kuitansi berdasarkan jumlah yang diterima.



Penjualan



Blok ini mengimplementasikan fungsionalitas untuk mendaftarkan pesanan pelanggan dan menghasilkan harga jual.



Kemampuan untuk menetapkan beberapa jenis harga telah diterapkan, yang kemudian dikaitkan dengan pelanggan atau jenis pesanan. Harga untuk setiap jenis ditetapkan menggunakan dokumen daftar harga dengan masa berlaku yang berbeda. Pembentukan formulir daftar harga dan label harga yang dicetak didukung.



Diskon dapat diatur untuk berbagai jenis harga, yang akan dihitung secara otomatis atau manual saat melakukan pemesanan atau dokumen penjualan (termasuk dalam POS).



Pesanan pembeli juga melewati beberapa status dengan kemampuan untuk mengirim konfirmasi pesanan kepada pembeli. Dalam hal ini, dokumen secara otomatis dibuat untuk pengiriman barang, yang selanjutnya dilakukan oleh karyawan gudang. Akuntan kemudian dapat membuat dokumen penjualan berdasarkan kuantitas yang dikirimkan.



Eceran



Blok ini mengimplementasikan fungsionalitas untuk perdagangan eceran barang dan jasa.



Elemen utama dari paket tersebut adalah formulir POS, yang digunakan untuk pengecer dan pengembalian barang. Kemampuan untuk membuka dan menutup shift, menyetor dan menarik uang didukung. Integrasi dengan registrar fiskal ATOL melalui server web telah diterapkan.



Beberapa pembayaran dapat dihubungkan ke sistem, dikonfigurasi untuk satu dan untuk tempat penjualan yang berbeda.



Semua cek diposting sebagai dokumen penjualan, secara otomatis mencerminkan semua perubahan dalam akuntansi. Cek dapat dibuat berdasarkan pesanan penjualan.



Manufaktur



Blok ini menerapkan kemampuan untuk memperhitungkan produksi produk dan penghapusan bahan baku untuk itu dengan perhitungan biaya.



Bahan mentah diproduksi dan dibuang berdasarkan pesanan produksi. Dengan bantuan mereka, dimungkinkan untuk mendaftarkan produksi dan pembongkaran (pembongkaran) produk jadi. Menerapkan perhitungan otomatis jumlah produk, limbah dan bahan baku berdasarkan spesifikasi yang dimasukkan. Pembuatan spesifikasi didukung, dengan mempertimbangkan "bersarang" satu sama lain. Kemampuan untuk membuat pesanan produksi secara otomatis berdasarkan pesanan penjualan telah diterapkan.



Instalasi



Untuk menginstal solusi, Anda memerlukan server yang menjalankan sistem operasi Linux atau Windows dengan koneksi Internet.

Harus memiliki minimal 2 gigabyte RAM, port 8080 untuk klien web dan port 7652 untuk klien desktop harus terbuka.



Linux



Mari kita lihat menginstal MyCompany menggunakan contoh perintah untuk server yang menjalankan CentOS 7, dijalankan dengan hak root superuser.



Instal platform lsFusion:

root@centos7: localectl set-locale LANG=ru_RU.UTF-8
root@centos7: source <(curl -s https://download.lsfusion.org/yum/install-lsfusion4)
      
      





Instal konfigurasi MyCompany:

root@centos7: yum install -y wget
root@centos7: wget http://download.lsfusion.org/solutions/mycompany-1.0.jar -O /var/lib/lsfusion/mycompany.jar
root@centos7: echo "logics.topModule = MyCompanyRu" >> /etc/lsfusion4-server/settings.properties
      
      





Mulai ulang layanan server lsFusion:

root@centos7: systemctl stop lsfusion4-server
root@centos7: systemctl start lsfusion4-server
      
      







Proses startup server aplikasi dapat dipantau di log /var/log/lsfusion4-server/start.log.



Windows



Unduh dan jalankan penginstal server dan klien dari tautan: OS 64-bit , OS 32-bit .

Biarkan semua parameter sebagai default. Jika perlu, atur kata sandi.



Unduh versi terbaru Perusahaan Saya dari tautan dan simpan ke folder lib server. (secara default - C: \ Program Files \ lsFusion 4 \ Server \ lib)

Mulai ulang layanan Server lsFusion.

gambar



Migrasi data



Solusinya memiliki mekanisme sederhana untuk memuat data awal melalui file Excel. Untuk mengimpor direktori dan objek lain, cukup masuk ke Administrasi / Migrasi. Untuk setiap jenis direktori terdapat tombol terpisah yang menghasilkan templat dalam format XLSX, yang kemudian Anda dapat memuat data dari sistem lama.

gambar



Perbaikan



Logika solusi disempurnakan dengan membuat perubahan pada kode sumber dalam bahasa internal platform lsFusion . Pada server produksi, ini dapat dilakukan dengan menambahkan modul baru dengan menyalin file ke folder / var / lib / lsfusion.



Untuk pengembangan yang cepat dan mudah, disarankan untuk menginstal kit distribusi lokal yang berisi IntelliJ IDEA Community Edition bersama dengan plugin yang sudah diinstal sebelumnya, serta aplikasi klien dalam bentuk server web. Selama instalasi, tidak perlu menginstal sisi server, karena perpustakaan yang diperlukan akan dimuat secara otomatis menggunakan Maven. Kemudian di IDEA Anda perlu menjalankan Get from Version Control / Github dan masuk ke github.com/lsfusion-solutions/mycompany.git... Setelah itu, Anda perlu mengkonfigurasi peluncuran server melalui Edit konfigurasi / + / lsFusion Server. Setelah perubahan apa pun yang dilakukan pada kode sumber, Anda perlu memulai ulang server aplikasi.



gambar



Untuk membuat file jar dengan mempertimbangkan perubahan yang dibuat, Anda perlu mengonfigurasi perakitan artefak. Artefak yang dirakit perlu disalin ke folder / var / lib / lsfusion, bukan file jar asli dari solusi MyCompany.



Ada opsi untuk menghubungkan solusi MyCompany dasar melalui Maven. Keuntungan dari pendekatan ini adalah saat Anda meningkatkan dari solusi dasar, Anda tidak perlu menggabungkan perubahan kode sumber yang "tumpang tindih". Kerugiannya adalah ketidakmampuan untuk membuat perubahan pada kode sumber dari solusi dasar.



Untuk menghubungkan solusi MyCompany melalui Maven, Anda perlu mendaftarkan parameter berikut di pom.xml:

<repositories>

    <repository>

        <id>lsfusion</id>

        <name>lsFusion Public Repository</name>

        <url>http://repo.lsfusion.org</url>

    </repository>

</repositories>



<dependencies>

    <dependency>

        <groupId>lsfusion.solutions</groupId>

        <artifactId>mycompany</artifactId>

        <version>1.0.0-SNAPSHOT</version>

    </dependency>

</dependencies>







gambar



Untuk peningkatan transparansi yang lebih baik dan menghilangkan kebutuhan untuk menggabungkan kode, disarankan untuk menambahkan fungsionalitas baru ke modul terpisah.



Contoh:



Misalkan Anda ingin menambahkan kemampuan untuk menetapkan batas kredit untuk pelanggan ke logika aplikasi Anda.



Pertama, kami membuat modul DebtLimit baru:

MODULE DebtLimit;





Lalu kita pergi ke antarmuka pengguna di bawah administrator dan mengarahkan mouse ke judul bidang dengan hutang pembeli:



gambar



Kita melihat bahwa properti yang dihitung yang menghitung hutang dideklarasikan dalam modul DebtPartner dan disebut hutang dengan satu-satunya parameter Mitra . Di modul baru, kami menghubungkan modul ini sehingga Anda dapat mengakses propertinya:

REQUIRE DebtPartner;







Mari buat Batas Kredit properti baru untuk rekanan, di mana pengguna dapat memasukkan nilai dan meletakkannya di formulir edit rekanan mitra di tajuk Penampung kanan:

debtLimit ' ' = DATA NUMERIC[14,2] (Partner);



EXTEND FORM partner

   PROPERTIES(p) debtLimit

;



DESIGN partner {

   headerRight {

       MOVE PROPERTY(debtLimit(p));

   }

}







gambar

Terakhir, kami menambahkan batasan yang akan memeriksa bahwa hutang pada waktu tertentu tidak boleh melebihi batas kredit untuk pembeli ini:

CONSTRAINT debt(Partner p) > debtLimit(p) MESSAGE '    ';







Tetap menghubungkan modul ini ke proyek. Mari buat modul RogaIKopyta baru dan tulis di file settings.properties:

logics.topModule = RogaIKopyta







Saat memulai server aplikasi, hanya modul-modul itu yang akan terhubung di mana modul RogaIKopyta bergantung (termasuk secara rekursif). Karenanya, kami menghubungkannya modul yang kami buat dan MyCompanyRu dari solusi dasar, di mana semua modul utama terhubung, serta pelokalan bahasa Rusia:

MODULE RogaIKopyta;



REQUIRE MyCompanyRu,

       DebtLimit;







Untuk menginstal perubahan ini di server produksi, Anda perlu membangun artefak, seperti dijelaskan di atas, atau cukup menyalin dua file dengan modul RogaIKopyta dan DebtLimit ke folder / var / lib / lsfusion. Juga, ingatlah untuk mengubah logics.topModule di server produksi. Setelah perubahan, Anda perlu memulai ulang layanan Server Aplikasi.



gambar



Dukungan dan pengembangan



Solusi MyCompany sedang dikembangkan oleh perusahaan Belarusia, LuxSoft . Ini telah ada selama lebih dari 20 tahun dan merupakan pemimpin dalam pasar otomasi ritel besar di Belarus. Lima dari delapan rantai ritel terbesar di Belarus menggunakan solusi ERP lsFusion untuk mengotomatiskan bisnis inti mereka.



Berkat penggunaan teknologi Java, Anda dapat dengan mudah menghubungkan berbagai pustaka yang sudah jadi untuk semua jenis integrasi dengan sistem eksternal dan tindakan tingkat rendah lainnya. Kemudahan pengembangan dipastikan dengan menggunakan salah satu IDE terbaik di dunia - IntelliJ IDEA (Community Edition) .



Tujuan utama mengembangkan solusi MyCompany mendukung pergerakan open source dan mempopulerkan platform lsFusion. Solusinya dibiayai melalui penjualan dan dukungan sistem komersial berdasarkan platform di Belarus.



Pada saat penulisan ini, fungsi dasar yang diperlukan menurut kami untuk produk yang layak minimum telah diterapkan. Pengembangan lebih lanjut akan dilakukan berdasarkan kebutuhan pengguna. Saran untuk menyelesaikan solusi dapat dibuat dalam bentuk Masalah di Github. Selain itu, setiap pertanyaan tentang solusi dapat ditanyakan di saluran Slack kami .



Kami siap melaksanakan perbaikan dan memberikan dukungan, termasuk secara komersial. Pada saat yang sama, kami akan dengan segala cara mendukung mereka yang ingin melakukan ini sendiri atau memberikan layanan kepada pihak ketiga. Lisensi solusi Apache dan lisensi platform LGPL bahkan memungkinkan Anda untuk mengembangkan dan menjual solusi berdasarkan nama merek Anda sendiri.



Arsitektur modular memungkinkan pembuatan modul open source dan komersial yang dapat dicolokkan secara terpisah yang akan memperluas fungsionalitas inti dari solusi tersebut. Menggunakan Maven, Anda dapat membuat dan menautkan pustaka terpisah dengan logika tertentu, lalu membuat solusi siap pakai darinya.



Dalam pengalaman kami, pengembangan di lsFusion membutuhkan lebih sedikit upaya dan keterampilan daripada pengembangan pada platform 1C yang sama. Tidak perlu menulis kueri secara manual, mengelola interaksi klien-server, dan banyak aspek teknis lainnya. Setiap programmer 1C akan dapat dengan cepat menguasai pengembangan di platform dan memberikan layanan dukungan untuk solusi MyCompany. Pada saat yang sama, ada banyak orang di perusahaan kami yang tidak memiliki pengalaman pengembangan apa pun, dan belajar memprogram di platform lsFusion tanpa masalah. Sebagian besar pengguna Excel tingkat lanjut yang mampu membuat rumus kompleks di dalamnya, serta pemrogram SQL, akan dapat dengan mudah menguasai mekanisme dasar platform untuk pengembangan sendiri solusi Perusahaan Saya.



Bisnis, pada gilirannya, akan dapat menghemat berbagai lisensi (1C, Windows, Microsoft SQL Server), sambil menerima solusi yang cepat dan modern.



Kesimpulan



Keunggulan utama MyCompany dibandingkan rekan-rekan mereka di pasar Rusia:



  1. Bebas dan terbuka. Tidak ada kondisi lisensi, langganan, batasan pengguna, pembayaran, kunci pengait dan ketidaknyamanan lainnya.
  2. Kecepatan dan kemudahan penggunaan. Tidak seperti solusi berbasis 1C, antarmuka web bekerja sangat cepat sehingga berfungsi dengan baik bahkan di browser seluler. Puluhan ribu catatan dapat ditambahkan ke dokumen, dan ini tidak akan menyebabkan perlambatan yang signifikan selama bekerja. Benar-benar setiap tabel dalam bentuk apa pun memiliki banyak analitik dan kemampuan navigasi bawaan .
  3. . lsFusion, - 1.



All Articles