Bỏ qua, tới nội dung chính
Cà Phê & Code Cà Phê & Code
  • Trang chủ
  • Bài viết
    • Chuyên mục
    • Backend
    • Bảo mật
    • Bảo mật ứng dụng web
    • Công cụ
    • Cơ sở dữ liệu
    • DevOps
    • Docker
    • Giải thuật
    • Go
    • Hệ điều hành
    • Hệ thống
    • Java
    • Kiến trúc hệ thống
    • Lập trình
    • Lập trình Go
    • Linux
    • Mang
    • Mạng
    • Message Queue
    • Odoo
    • RabbitMQ
    • Spring
    • Trình biên dịch
    • Vert.x
    • Web

    • Xem tất cả
    • Chuyên mục
    • Sê-ri
    • Thẻ
  • Luyện thi
  • Ghi chú
  • Thiết kế CSDL
  • Thông tin
    • Giới thiệu
    • Liên hệ
Đăng nhập
  1. Trang chủ
  2. Chuyên mục
  3. Odoo

Odoo

Theo dõi riêng chuyên mục này 400 bài viết
Odoo 18/09/2026 4 phút

Một lệnh biến 183 chuỗi trong module thành file .pot để dịch — không sửa một dòng code: cơ chế i18n của Odoo

Odoo tự trích chuỗi từ field, view, nút ra file .pot mẫu; bạn dịch sang .po từng ngôn ngữ. Chuỗi Python thì bọc _(). Xem file .pot thật xuất từ module quản cà phê, với đủ msgid và chú thích vị trí.

#odoo#i18n#lap-trinh#developer#dich-thuat#odoo-19
22
Odoo 18/09/2026 5 phút

Thay vì để Odoo hỏi 'xong chưa?' mỗi 30 giây, hãy để bên kia gõ cửa: viết một webhook nhận sự kiện, ký bằng HMAC

Webhook lật chiều tích hợp: hệ thống khác chủ động POST vào Odoo khi có sự kiện. Controller csrf=False, xác thực bằng chữ ký HMAC-SHA256 thay vì session — với một webhook chạy thật trên module quản cà phê.

#bao-mat#odoo#controller#webhook#lap-trinh#developer#odoo-19
24
Odoo 18/09/2026 3 phút

Bấm một thẻ để chọn nó: bắt sự kiện với t-on trong OWL, và cái bẫy khi lặp danh sách

t-on-click gắn handler cho sự kiện. Gọi thẳng method thì nhận event; muốn truyền tham số (item trong t-foreach) phải dùng arrow function. OWL không có modifier .stop/.prevent như Vue. Đo thật trên Odoo 19.

#odoo#owl#event#lap-trinh#developer#odoo-19
25
Odoo 18/09/2026 4 phút

t-out trong OWL không render HTML như bạn tưởng: chuyện escape, markup và XSS

Trong template OWL, t-esc luôn escape. Nhưng t-out với một chuỗi thường CŨNG escape — khác hẳn report QWeb. Muốn render HTML phải bọc markup(). Dựng demo thật trong dashboard OWL trên Odoo 19.

#qweb#odoo#owl#lap-trinh#developer#odoo-19
23
Odoo 18/09/2026 5 phút

Nhét mã QR quét được vào thẻ PDF của Odoo — và vì sao cách 'đúng sách' lại ra ô trống

Odoo sinh QR, Code128, EAN13... qua ir.actions.report.barcode(). Nhưng nhúng bằng URL /report/barcode trong PDF có thể ra ô rỗng khi workers=0. Cách chắc ăn: sinh ảnh thành Binary rồi image_data_uri. Đo thật trên Odoo 19.

#odoo#lap-trinh#developer#barcode#report#qrcode#odoo-19
23
Odoo 18/09/2026 4 phút

Một mẫu in, ba khuôn mặt: dùng t-if/t-elif/t-else để report tự đổi theo trạng thái bản ghi

QWeb chọn nhánh hiển thị bằng t-if, t-elif, t-else — mỗi trạng thái thẻ ra một banner khác. Và t-if đơn giúp bỏ hẳn phần rỗng thay vì in khoảng trắng. Xem ba thẻ thật in ra ba kiểu trên Odoo 19.

#qweb#odoo#lap-trinh#developer#report#dieu-kien#odoo-19
23
  • 1
  • 2
  • 3
  • 4
  • …
  • 67

Trang 2 / 67 — tổng 400 bài viết

Tìm kiếm
Admin

Nhấp một ngụm cà phê, viết thêm một dòng code

Xem thêm
Chuyên mục
  • Odoo 400
  • Lập trình 296
  • Giải thuật 270
  • Cơ sở dữ liệu 237
  • Lập trình Go 133
  • DevOps 114
  • Java 100
  • Hệ điều hành 90
  • Docker 68
  • Spring 60
  • Go 60
  • Bảo mật 57
  • Linux 54
  • Vert.x 50
  • Mạng 45
  • Trình biên dịch 45
  • RabbitMQ 40
  • Backend 40
  • Message Queue 40
  • Công cụ 30
  • Web 18
  • Hệ thống 12
  • Kiến trúc hệ thống 12
  • Bảo mật ứng dụng web 1
Xem nhiều nhất
Bốn mươi dòng kiểm trước khi bấm nút triển khai — mỗi dòng đến từ một lần đã hỏng 10/08/2026 · 189
900 lần chạy test không bắt được lỗi luôn nằm đó — thêm một dòng sleep, nó lộ ra 100% 05/08/2026 · 154
Cùng một jar, ảnh Docker từ 866 MB xuống 126 MB — và cái bẫy làm ảnh nhỏ nhất in tiếng Việt ra dấu hỏi 06/08/2026 · 131
Integer 127 == 127 cho true, nhưng 128 == 128 cho false — vì sao, và bẫy đó ẩn ở đâu 05/05/2026 · 116
Một dòng println nở ra sáu lệnh, dấu cộng nối chuỗi biến thành invokedynamic — mở file .class ra xem 04/05/2026 · 107
Thẻ phổ biến
#zero-to-hero#do-dac#hieu-nang#odoo#odoo-19#golang#go#postgresql#developer#devops#lap-trinh#sql#java#database#huong-dan#he-dieu-hanh#backend#toi-uu#bao-mat#100-ngay-java#docker#trinh-bien-dich#container#linux#redis#dong-thoi#csdl#docker-compose#spring#kafka#kubernetes#web#giai-thuat#message-queue#giam-sat#mang#van-hanh#vertx#performance#cau-truc-du-lieu#co-so-du-lieu#kien-truc-may-tinh#quan-sat#http#orm#rabbitmq#concurrency#kien-truc#view#ke-toan#owl#index#microservice#observability#grpc#testing#reactive#runtime#cong-cu#kho#monitoring#networking#security#bo-nho#qweb#debug#distributed-systems#git#mat-ma#version-control#api#gc#resilience#website#websocket#caching#crm#data-structures#prometheus#protobuf#rest#serialization#collections#compression#nhan-su#regex#search#thiet-ke#tls#tong-ket#ban-hang#cau-hinh#context#controller#do-tin-cay#elasticsearch#gioi-thieu#interface#probabilistic#shell#algorithms#bao-cao#command-line#compiler#he-thong-lon#json#mua-hang#nen-du-lieu#regular-expression#streaming#system-design#unix#cache#ecommerce#jvm#openssl#owasp#realtime#report#spring-boot#stream#vacuum#bloat#distributed#jpa#metrics#replication#san-xuat#action#checklist#gzip#io#logging#network#planner#retry#spring-security#tcp#test#tracing#architecture#benchmark#chan-doan#du-an#explain#http2#oop#phan-quyen#pprof#encoding#event-bus#generics#goroutine#jmh#join#latency#memory#module#mrp#mvcc#scheduler#ton-kho#transaction#wal#amqp#bloom-filter#email#error#exchange#heap#idempotency#kanban#lien-he#luong-ao#opentelemetry#phan-vung#sharding#spring-amqp#statistics#thanh-toan#backpressure#bat-dong-bo#binary#connection-pool#deadlock#debugging#form#functional#go-loi#load-balancing#map#middleware#nginx#pipeline#profiling#quality#rate-limiting#routing#rpc#spring-mvc#sre#wizard#aes#assets#atomic#automation#backtracking#bat-bien#build#bytecode#cardinality#channel#chatter#closure#cong-no#connection-pooling#consumer#cpu#domain#etcd#histogram#hot-update#https#isolation#jwt#list#log#migration#mutex#namespace#percentile#re2#san-pham#scss#slice#sse#syscall#testcontainers#timeout#trien-khai#tu-dong-hoa#unicode#widget#wire-format#zstd#allocation#assembly#authentication#backoff#backup#bash#bom#cas#chat-luong#circuit-breaker#cqrs#csrf#deploy#dich-vu-khach-hang#dlx#dockerfile#do-tre#ecdsa#entropy#erp#error-handling#escape-analysis#event-driven#event-loop#exception#frontend#grep#group-by#hashing#hash-table#helpdesk#hmac#hoa-don#inheritance#integration-test#interceptor#iterator#jackson#jaeger#javascript#jdbc#kieu-du-lieu#lambda#lock#lock-free#lo-trinh#lua#luu-tru#mat-khau#maven#multiplexing#nha-cung-cap#outbox#pagination#partition#pgbouncer#phe-duyet#portal#pubsub#quan-ly-cong-viec#queue#raft#rang-buoc#recovery#reflect#reflection#secrets#server-action#snippet#socket#status-code#string#tim-kiem#toolchain#tuy-bien#varint#vertx-web#work-mem#x509#xac-thuc#xpath#activity#aead#aggregate#alignment#analytics#analyze#async#auth#autovacuum#awk#bao-gia#bao-tri#barcode#batch#bat-dau#bcrypt#bien-the#big-o#brotli#button#byte#certificate#cgroup#chacha20#cham-cong#checkpoint#chi-phi#chuan-hoa#chung-chi#cluster#codegen#collectors#commit#consensus#consistent-hashing#constant-time#constraint#consumer-group#consumer-lag#copy#cors#count-min-sketch#coverage#cron#cross-compile#crud#csp#cte#da-cong-ty#database-sql#ddl#deadline#default#delete#delivery-semantics#delve#dependency-inversion#devirtualization#dich-thuat#dictionary#dinh-gia-ton-kho#distributed-lock#dns#do-ben#dynamic-programming#embed#event-sourcing#fan-out#fanout#field-widget#fillfactor#full-page-writes#full-text-search#future#fuzzing#giao-dich#giao-dien#giao-hang#goroutine-leak#graph#greedy#ha#handshake#hash#health-check#heartbeat#he-thong#hikaricp#hoat-dong#hooks#hop-dong#hyperloglog#i18n#inlining#inverted-index#ir-cron#itab#java-time#jdk#jfr#jit#jsonb#junit#keep-alive#ke-thua#ket-noi#khoa#lead#lru#luong#many2one#memory-leak#menu#merge#metadata#microservices#model#mtls#nap-du-lieu#ngan-hang#nghi-phep#nhap-du-lieu#optimization#optional#ordering#padding#parallel#partitioning#pattern-matching#pbkdf2#pg_dump#phan-tich#phan-trang#plan9#port#prefetch#prepared-statement#proc#property-based-testing#python#quorum-queue#race-detector#rate-limit#rebase#record#recordset#registry#replica#retention#reverse-proxy#rfc6455#rsa#saga#sampling#sap-xep#scalability#scaling#schema#schema-evolution#sealed#sed#seo#service-discovery#session#signal#singleflight#skip-locked#sliding-window#slog#sort#stack#strace#struct#tai-nguyen#theme#thread#throughput#thue#tich-hop#tieng-viet#time#timezone#timing-attack#toast#token#transientmodel#trigram#ttl#tuyen-dung#type-parameter#unsafe#upload#validation#window-function#worker-pool#wraparound#xay-dung-web#xml#x-sync#xz#zigzag#2fa#abstract-model#access-control#ack#active-ids#actuator#addons#aggregation#alerting#alertmanager#allocator#amazon#analytic#analyzer#anchor#an-toan#aof#api-design#api-key#append#approvals#argon2#assert#at-least-once#attachment#attendances#audit#authorization#autoboxing#autocomplete#automated-action#avro#backlog#backreference#bandwidth#bang-dieu-khien#bang-gia#ban-hang-online#bao-cao-tai-chinh#barrier#batch-insert#bce#bearer-token#benchmem#benchstat#bfs#bidirectional#bigdecimal#bigkey#bigtable#binary-search#binding#bind-mount#bisect#blockingqueue#blog#bm25#bool-query#bounds-check#boxing#branch#brin#broadcast#brute-force#bst#bucket#budget#buffer#build-context#build-tags#bulk#bulkhead#bulk-load#but-toan#bzip2#cache-hit-ratio#cache-line#calendar#cam-bay#cancellation#ca-nhan-hoa#canh-bao#capture-group#cassandra#cay-can-bang#cbc#cbor#cgo#cham-gio#character-class#chart-of-accounts#chat#cherry-pick#chmod#chu-ky-so#chunked#ci#c-interop#classloader#classpath#clean-architecture#client-action#clocks#cloudflare#codec#code-generation#collision#command#command-injection#comparator#comparison#compatibility#compile-time#completablefuture#component#compose#composite#computed#concurrenthashmap#conditional-compilation#config#configuration#conflict#cong-doan#cong-tac#consistency#constructor#contract-testing#con-tro#con-tro-ham#cookie#core-dump#coredump#coroutine#cost#cost-model#cot-moc#crdt#criteria#cross-origin#cryptography#csprng#css#cuckoo-filter#curl#cut#dag#da-hinh#da-ngon-ngu#danh-gia#danh-so#dashboard#data-processing#datetime#dce#ddd#dead-code#dead-letter-queue#decoder#deduplication#default-method#deflate#delegation#delta#demo-data#dependencies#dependency-injection#deployment#deque#detached-head#developer-mode#dev-mode#devtools#dfa#dfs#dia-chi#dialog#dieu-chuyen#dieu-khien#dieu-kien#diffie-hellman#dijkstra#dinh-kem#directive#discord#discuss#disk#display-name#distinct#distributed-transaction#dlv#dockerignore#doi-chieu#doi-sales#doi-soat#do-luong#domain-driven-design#don-hang#don-mua#don-vi-tinh#do-phuc-tap#download#dto#dual-write#du-bao#du-lieu#durability#dynamo#ecb#ecdh#editor#effective-cache-size#effective-io-concurrency#elliptic-curve#email-marketing#embed-fs#employees#encapsulation#entity#enum#env#envelope-encryption#ep-kieu#epoll#equals#errgroup#error-boundary#etag#evacuation#event#eviction#exactly-once#executor#exists#exit-code#expvar#fail-fast#failover#failure-detection#fallback#false-sharing#fault-injection#federation#feed#fencing-token#fetch#ffi#field#file-descriptor#filestore#filter#finalizer#find#flaky#flaky-tests#flatbuffers#flatmap#flyway#forkjoin#form-view#for-update#frame#fsck#full-text#functional-core#functional-options#fuzzy#garbage-collector#gcm#gctrace#geohash#geospatial#getter#get-view#gia#giay-bao-co#gin#gist#gitignore#gitops#gob#godebug#gogc#go-generate#golangci-lint#golden-file#gomaxprocs#gomemlimit#gomock#go-modules#google#goos#gop-du-lieu#go-redis#gorilla#gossafunc#gossip#go-vet#govulncheck#go-work#graalvm#graceful-degradation#graceful-shutdown#gradle#group#groups#grpcurl#gtgt#h3#hàm-bậc-cao#handle#hang-doi#happens-before#haproxy#hashcode#hashicorp#hashmap#hazelcast#header#headers#heavy-hitters#helm#help#hexagonal#hibernate#hmap#hoa-don-dien-tu#hoan-tien#hook#hoot#hot-standby#hsts#html#http3#huffman#huge-pages#idempotence#id-generation#idor#iface#image#image-size#indexing#index-only-scan#inherit#inherits#init#inner-class#instagram#internals#invoicing#iot#iptables#ir-attachment#ir-sequence#isolation-level#isr#iter-pull#iter-seq#jaccard#javac#javap#jitter#jlink#jmm#job-queue#journal#jsonrpc#jstack#kek-dek#key-rotation#keyset#khach-hang#khau-hao#khoa-chinh#khoa-cong-khai#khoa-ngoai#khoa-so#khuyen-mai#kiem-ke#kiem-soat#kiem-thu#kien-hang#kiosk#knowledge#ky-dien-tu#ky-nang#ky-online#lag#lap-lich#lateral#layer#lazy#lazy-load#lazy-queue#leader-election#leak#level#like#linear-search#linker#linkname#linter#list-view#livelock#load-average#load-shedding#load-test#locality#lock-date#locking#log-compaction#logical#logical-replication#logs#long-polling#lookahead#lookaround#lookbehind#lo-serial#lost-update#lucene#lz4#lz77#ma-hoa#mail#mail-activity#mail-mail#mail-template#mail-thread#maintenance#maintenance-work-mem#management#many2many#mapping#mapstructure#match#materialize#mau-bao-gia#mau-email#ma-vach#max-connections#media#memcached#memoization#memory-hard#memory-mapped-file#memory-model#merge-join#mergesort#message#messagepack#message-post#messaging#metaprogramming#method#microbenchmark#minhash#mixin#mmap#mock#mockgen#mocking#mockito#moi-truong#monetary#monorepo#mo-rong#mount#multiline#multi-stage#mutation-testing#nagle#name-search#nang-cap#native-image#nen-file#net-http#netpoller#network-partition#nfa#ngan-sach#nguoi-dung#nhan-hang#nhap-kho#nhat-ky#nhieu-buoc#nio#no-co#noinline#non-root#notification#n-plus-1#numeric#oauth2#oca#offset#oidc#onchange#on-conflict#one2many#operations#or#order#overlayfs#p99#pacing#package#packfile#panic#paperformat#partition-management#partition-pruning#partition-wise-join#password#password-hashing#patch#path-traversal#patterns#payment#pdb#pdf#pecs#perf#persistence#pgbadger#pg_basebackup#pgbench#pg-locks#pgo#pg-repack#pg_restore#pg_rewind#pg-stat-statements#pgstattuple#pg-trgm#phan-bo#phan-tan#phoi-hop#phong-ban#phu-thuoc#pid#pipe#pitr#pivot#plan-cache#plugin#poison-message#poly1305#ports-adapters#post-mortem#preemption#preflight#priority-queue#process#producer#production#projection#promise#promql#properties#props#ps#publication#publisher-confirms#push#pylint#qos#qrcode#quan-he#quantifier#quantile#query-dsl#quic#quicksort#quoting#quyen#quy-trinh#race#random#random-page-cost#range-over-func#range-request#rapid#rdb#read-model#read-replica#rebalance#reconnect#recruitment#recursive#red#redelivery#redirect#red-method#redos#ref#reference#reflog#reindex#related#relevance#reliability#remote-debug#replication-slot#repository#requests#res-company#resource#rest-api#restclient#resume#rfq#ripgrep#rle#rootfs#ro-ri-bo-nho#round-robin#route#router#routes-rules#rss#runbook#run-length-encoding#runqueue#safe-eval#sao-ke#sao-luu#sargable#saturation#scaffold#scale#schedtrace#scheduled#scheduled-action#script#scylladb#sdkman#search-after#secure-coding#security-header#select#selection#semaphore#sendfile#separator#serializable#servlet#set#set-e#sha256#shannon#shard#shared-buffers#shellcheck#shortest-path#shovel#side-channel#sign#simd#sitemap#size-class#sketch#sla#slf4j#slice-header#slices#slots#smart-button#snapshot#snapshot-testing#so-cai#sockjs#so-do-to-chuc#solid#sorting#source-code#span#spring-data#sqlc#sql-injection#ssa#ssd#stackoverflow#stack-trace#staging#stampede#starvation#stash#static-analysis#staticcheck#status#statusbar#stenciling#stop-the-world#storage#streams#stringer#stripe#struct-tag#structured-concurrency#studio#stw#submodule#subquery#subscription#substitution#sudo#su-kien#summary#switch#sync#sync-cond#synchronized#synchronous-commit#sync-map#sync-pool#syscall-js#sysmon#systray#table-driven#tagged#tai-dat-hang#tai-khoan#tail-latency#tai-san#tang-truong#tar#t-call#tcp-keepalive#t-digest#template#test-double#testing-quick#text#text-keyword#text-processing#t-field#t-foreach#thao-tac-hang-loat#the-phan-loai#thiet-ke-api#thiet-lap#threadlocal#thread-pool#thuc-hanh#thue-gtgt#thundering-herd#thymeleaf#tien-te#timeline#time-off#time-wait#tinh-phi#tiny-allocator#tls13#toan-tu#token-bucket#tokenizer#to-khai#top#topic#top-k#topology#totp#tour#toxiproxy#transactioncase#transaction-pooling#transactions#transient-model#tra-truoc#tree#treemap#tricolor#tri-thuc#truncate#tuning#tuyen-duong#twitter#ty-gia#type-assertion#typed-nil#type-erasure#type-inference#type-safety#type-set#type-switch#uber#udp#uintptr#ulimit#ung-dung#union#uniq#unit-test#unlink#unlogged#unsafe-pointer#update#upgrade#upsert#use#use-method#useref#useservice#usestate#utf-8#uuid#ux#vacuum-full#value-object#varargs#verticle#veth#vhost#viet-nam#viettel#visibility-map#volatile#volume#vsz#vulnerability#wait-events#wal-compression#wasi#wasm#webassembly#web-client#webclient#webhook#werkzeug#wire#word-boundary#word-splitting#worker#workers#workspace#work-stealing#worktree#write#write-barrier#write-skew#xac-thuc-hai-lop#xargs#xml-id#xmlrpc#xoay-khoa#xss#x-time#xuat-du-lieu#xuat-kho#yield#zero-copy#zero-trust#zlib
Lưu trữ
  • Tháng 9/2026 1745
  • Tháng 8/2026 197
  • Tháng 7/2026 114
  • Tháng 6/2026 64
  • Tháng 5/2026 30
  • Tháng 11/2025 4
  • Tháng 10/2025 27
  • Tháng 9/2025 30
  • Tháng 8/2025 31
  • Tháng 7/2025 30
Theo dõi blog

Nhận email mỗi khi có bài viết mới. Không quảng cáo, huỷ bất cứ lúc nào.

Hoặc dùng RSS
Cà Phê & Code Cà Phê & Code

Cà Phê & Code là blog dành cho những người yêu công nghệ và lập trình. Nơi chia sẻ kiến thức coding, công cụ hữu ích, xu hướng công nghệ, kinh nghiệm phát triển phần mềm và những câu chuyện phía sau màn hình — tất cả được kể theo cách gần gũi, dễ hiểu, như một cuộc trò chuyện bên tách cà phê.

Liên kết
  • Trang chủ
  • Chuyên mục
  • Thẻ
  • Giới thiệu
  • Liên hệ
Chuyên mục nổi bật
Odoo (400)Lập trình (296)Giải thuật (270)Cơ sở dữ liệu (237)Lập trình Go (133)DevOps (114)Java (100)Hệ điều hành (90)Docker (68)Spring (60)Go (60)Bảo mật (57)Linux (54)Vert.x (50)Mạng (45)Trình biên dịch (45)RabbitMQ (40)Backend (40)Message Queue (40)Công cụ (30)Web (18)Hệ thống (12)Kiến trúc hệ thống (12)Bảo mật ứng dụng web (1)

© 2026 Cà Phê & Code. Bảo lưu mọi quyền.